@taskforcehq/taskforce 0.3.318 → 0.3.320
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/TaskforceCore.js +57 -16
- package/dist/server/routes/admin.js +146 -28
- package/dist/server/routes/auth.js +24 -0
- package/dist/server/routes.js +48 -25
- package/dist/ui/assets/{AgentsModule-DxsN8GQI.js → AgentsModule-BZG0WHDN.js} +1 -1
- package/dist/ui/assets/{AnnotatedAttachmentWorkspace-DUkRcfo7.js → AnnotatedAttachmentWorkspace-EQEzsETm.js} +1 -1
- package/dist/ui/assets/{ContextAttachmentManager-D_uqJ94r.js → ContextAttachmentManager-B3hESx6y.js} +1 -1
- package/dist/ui/assets/{DocumentWorkspace-DAsuvSWR.js → DocumentWorkspace-Z7bykYtA.js} +1 -1
- package/dist/ui/assets/{EntityActivityTimeline-QLUNczJS.js → EntityActivityTimeline-B2aXkxiE.js} +1 -1
- package/dist/ui/assets/{InitiativesModule-D23morXe.js → InitiativesModule-CSzXelzW.js} +1 -1
- package/dist/ui/assets/{PlansPage-X6c0yJ1a.js → PlansPage-2vebpTBs.js} +1 -1
- package/dist/ui/assets/{TaskContextUpload-BERMUT_S.js → TaskContextUpload-Bz06La5A.js} +1 -1
- package/dist/ui/assets/{TaskSettings-DlX_5CSg.js → TaskSettings-4PbrcOqD.js} +1 -1
- package/dist/ui/assets/{WorkflowsModule-CVu4lhC1.js → WorkflowsModule-AyOzrP3y.js} +1 -1
- package/dist/ui/assets/documentReferences-CKk8ylqA.js +1 -0
- package/dist/ui/assets/index-rB9GGUCz.js +5 -0
- package/dist/ui/index.html +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/documentReferences-BCXQQ60P.js +0 -1
- package/dist/ui/assets/index-CdlMnBxP.js +0 -5
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EntityActivityTimeline-B2aXkxiE.js","assets/vendor-react-CKJs5o3c.js","assets/vendor-icons-CLnehDTw.js","assets/vendor-markdown-BUxTU7dS.js","assets/vendor-dnd-DRzYolkg.js","assets/vendor-router-BbWMxlnO.js","assets/EntityActivityTimeline-DyqvvhuF.css","assets/TaskContextUpload-Bz06La5A.js","assets/ContextAttachmentManager-B3hESx6y.js","assets/documentReferences-CKk8ylqA.js","assets/TaskSettings-4PbrcOqD.js","assets/TaskSettings-CnIBL_Eb.css","assets/AnnotatedAttachmentWorkspace-EQEzsETm.js","assets/AnnotatedAttachmentWorkspace-BVKew-mH.css","assets/DocumentWorkspace-Z7bykYtA.js","assets/DocumentWorkspace-D4rJKXzd.css","assets/WorkflowsModule-AyOzrP3y.js","assets/AgentsModule-BZG0WHDN.js","assets/InitiativesModule-CSzXelzW.js","assets/PlansPage-2vebpTBs.js","assets/PlansPage-DeAzWYTb.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r,j as a,R as Oe,a as Yi,b as Tk}from"./vendor-react-CKJs5o3c.js";import{I as bs,C as Ji,a as nl,b as to,c as ef,F as Rk,A as jk,R as gd,T as _m,L as Mp,d as jo,e as Nk,X as nc,f as cg,g as lg,h as mr,B as am,U as oi,i as dg,S as Pk,P as ao,j as Xc,G as Mk,k as Zu,l as nm,m as yd,n as Ek,o as tf,p as Dk,q as Ep,r as ug,s as Lk,t as Bk,M as mg,W as Wk,u as Fk,v as Ok,w as $k,x as No,E as af,y as pg,z as fg,D as Uk,H as zk,J as Hk,K as Kf,N as Zf,O as Gk,Q as Vk,Z as qk,V as Kk,Y as Zk,_ as Yk,$ as hg,a0 as Jk,a1 as Yf,a2 as Qk,a3 as Xk,a4 as ev,a5 as tv}from"./vendor-icons-CLnehDTw.js";import{M as av,r as nv,a as rv}from"./vendor-markdown-BUxTU7dS.js";import{u as gg,a as Dp,b as sv,D as yg,c as ov,S as kg,v as vg,P as Sg,d as wg,C as nf,e as iv,p as cv,f as Jf,s as lv,K as dv,g as rf,h as uv,i as bg,j as mv}from"./vendor-dnd-DRzYolkg.js";import{u as _g,a as Cg,b as pv,M as fv,N as Qf,B as hv}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 Qc="default",Cm="General",Fr="task",gv=2,yv=[{value:Qc,label:Cm,icon:"Inbox"}],Ag=[{value:Fr,label:"Task",icon:"CheckSquare",color:"blue-500"}],kv=[{value:gv,label:"Medium",color:"blue-500",icon:"Minus"}];function vv(){return yv.map(e=>({...e}))}function Sv(){return Ag.map(e=>({...e}))}function wv(e){const t=String(e||"").trim().toLowerCase();return Ag.find(n=>n.value===t)}function xg(){return kv.map(e=>({...e}))}const bv="default",_v=[{value:bv,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 Ig(){return _v.map(e=>({...e}))}const Cv={categories:vv(),types:Sv(),priorities:xg(),approaches:Ig(),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},Av=["light","dawn","dark","midnight"],rm="dark",xv=[{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"}],Iv=new Set(Av),Tv=new Set(xv.filter(e=>e.family==="light").map(e=>e.id));function Rv(e){return typeof e=="string"&&Iv.has(e)}function Kc(e){if(typeof e!="string")return null;const t=e.trim().toLowerCase();return Rv(t)?t:null}function Tg(e){const t=Kc(e);return t!==null&&Tv.has(t)}function Lp(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 el(e,t){const n=Lp(typeof t=="object"&&t!==null?t.referenceNumber:t);return n?`${e}${n}`:""}function sf(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?Lp(l[1]):null}function Am(e,t){return t?typeof t.referenceLabel=="string"&&t.referenceLabel.trim().length>0?t.referenceLabel.trim():el(e,t.referenceNumber):""}const of="T-",Xf="LT-";function jv(e){return el(of,e)}function Rg(e){return typeof e=="number"||e===null||e===void 0?el(Xf,e):el(Xf,{referenceNumber:e.localReferenceNumber??null})}function jg(e){return sf(of,e)}function Xi(e){if(!e)return"";if(typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0)return e.referenceLabel.trim();const t=Am(of,e);return t||Rg(e.localReferenceNumber)}function Nv(e){return!e?.referenceNumber&&!!e?.localReferenceNumber}function Ng(e){return{label:Xi(e),isProvisional:Nv(e)}}xg();const Pv={low:1,medium:2,high:3,critical:4,"on-hold":1},Mv={1:"low",2:"medium",3:"high",4:"critical",5:"critical"};function Ev(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 sm(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)):Pv[String(e||"").trim().toLowerCase()]??2}function Dv(e,t){return Mv[String(e)]||t}function Mo(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?jv(t):Rg(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:sm(e.priority),complexity:typeof e.complexity=="number"?e.complexity:3,status:Ev(e.status)}}function Lv(e,t,n){if(!e||typeof e!="object")return{tasks:t,archivedTasks:n};const s=Mo(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 _=Date.parse(String(h.createdAt||""))-Date.parse(String(S.createdAt||""));return Number.isFinite(_)&&_!==0?_: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 Bv(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 up(e,t){return t.some(n=>String(n)===String(e))}function Wv(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 Fv={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 & Support",settings:"Settings",filtersCaps:"FILTERS:",categoryLabel:"Category",typeLabel:"Type",priorityLabel:"Priority",statusLabel:"Status",assigneeLabel:"Assignee",linksLabel:"Links:",chooseLinksTitle:"Choose which linked tasks are shown",linksAll:"All",linksParents:"Parents",linksLinked:"Linked",linksUnlinked:"Unlinked",includeArchiveTitle:"Include archived tasks",includeArchive:"Archived",clearFilters:"Clear Filters",noTasksMatchFilters:"No tasks match current filters.",showingWithLinksHint:"Showing: {parentFilterLabel}. Switch Links to All or clear filters.",visibleActiveTasksTitle:"Visible active tasks / total active tasks",totalActiveTasksTitle:"Total active tasks"},setup:{headingCheckFailed:"Setup Check Failed",headingGlobalRequired:"Global Setup Required",headingWorkspaceRequired:"Configure your new workspace.",subtitleUnreadable:"Taskforce could not read setup state. Retry to continue.",subtitleGlobalRequired:"Choose your default operating mode to continue.",subtitleWorkspaceRequired:"",runtimeLabel:"Runtime",workspaceTermProject:"Project",workspaceTermMission:"Mission",coreModeOption:"Core Mode: {workspaceLabel} planning defaults",operationsModeOption:"Operations Mode: Mission-first terminology and flows",workspaceNamePlaceholder:"{workspaceLabel} name",workspaceDescriptionPlaceholder:"{workspaceLabel} description (optional)",saving:"Saving...",saveGlobalSetup:"Save Global Setup",saveWorkspaceSetup:"Save {workspaceLabel} Setup",globalSetupSaved:"Global setup saved.",workspaceSetupSaved:"{workspaceLabel} setup saved.",saveFailedWithStatus:"Failed to save setup ({status})",saveFailed:"Failed to save setup.",saveWorkspaceFailed:"Failed to save workspace profile.",retrySetupCheck:"Retry Setup Check",signOut:"Sign Out"}},Ov={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 y soporte",settings:"Configuracion",filtersCaps:"FILTROS:",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridad",statusLabel:"Estado",assigneeLabel:"Asignado a",linksLabel:"Vinculos:",chooseLinksTitle:"Elige que tareas vinculadas se muestran",linksAll:"Todas",linksParents:"Padres",linksLinked:"Vinculadas",linksUnlinked:"Sin vinculo",includeArchiveTitle:"Incluir tareas archivadas",includeArchive:"Incluir archivo",clearFilters:"Limpiar filtros",noTasksMatchFilters:"Ninguna tarea coincide con los filtros actuales.",showingWithLinksHint:"Mostrando: {parentFilterLabel}. Cambia Vinculos a Todas o limpia filtros.",visibleActiveTasksTitle:"Tareas activas visibles / total de tareas activas",totalActiveTasksTitle:"Total de tareas activas"},setup:{headingCheckFailed:"Fallo en verificacion de configuracion",headingGlobalRequired:"Configuracion global requerida",headingWorkspaceRequired:"Configuracion del espacio requerida",subtitleUnreadable:"Taskforce no pudo leer el estado de configuracion. Reintenta para continuar.",subtitleGlobalRequired:"Elige tu modo operativo predeterminado para continuar.",subtitleWorkspaceRequired:"Configura el perfil de tu espacio para continuar.",runtimeLabel:"Entorno",workspaceTermProject:"Proyecto",workspaceTermMission:"Mision",coreModeOption:"Modo Core: valores predeterminados de planificacion para {workspaceLabel}",operationsModeOption:"Modo Operaciones: terminologia y flujos orientados a Mision",workspaceNamePlaceholder:"Nombre de {workspaceLabel}",workspaceDescriptionPlaceholder:"Descripcion de {workspaceLabel} (opcional)",saving:"Guardando...",saveGlobalSetup:"Guardar configuracion global",saveWorkspaceSetup:"Guardar configuracion de {workspaceLabel}",globalSetupSaved:"Configuracion global guardada.",workspaceSetupSaved:"Configuracion de {workspaceLabel} guardada.",saveFailedWithStatus:"Error al guardar la configuracion ({status})",saveFailed:"Error al guardar la configuracion.",saveWorkspaceFailed:"Error al guardar el perfil del espacio.",retrySetupCheck:"Reintentar verificacion",signOut:"Cerrar sesion"}},$v={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 e suporte",settings:"Configuracoes",filtersCaps:"FILTROS:",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridade",statusLabel:"Status",assigneeLabel:"Atribuido para",linksLabel:"Vinculos:",chooseLinksTitle:"Escolha quais tarefas vinculadas sao exibidas",linksAll:"Todas",linksParents:"Pais",linksLinked:"Vinculadas",linksUnlinked:"Sem vinculo",includeArchiveTitle:"Incluir tarefas arquivadas",includeArchive:"Incluir arquivo",clearFilters:"Limpar filtros",noTasksMatchFilters:"Nenhuma tarefa corresponde aos filtros atuais.",showingWithLinksHint:"Mostrando: {parentFilterLabel}. Mude Vinculos para Todas ou limpe os filtros.",visibleActiveTasksTitle:"Tarefas ativas visiveis / total de tarefas ativas",totalActiveTasksTitle:"Total de tarefas ativas"},setup:{headingCheckFailed:"Falha na verificacao da configuracao",headingGlobalRequired:"Configuracao global obrigatoria",headingWorkspaceRequired:"Configuracao do espaco obrigatoria",subtitleUnreadable:"Taskforce nao conseguiu ler o estado da configuracao. Tente novamente para continuar.",subtitleGlobalRequired:"Escolha seu modo operacional padrao para continuar.",subtitleWorkspaceRequired:"Configure o perfil do seu espaco para continuar.",runtimeLabel:"Ambiente",workspaceTermProject:"Projeto",workspaceTermMission:"Missao",coreModeOption:"Modo Core: padroes de planejamento para {workspaceLabel}",operationsModeOption:"Modo Operacoes: terminologia e fluxos orientados por Missao",workspaceNamePlaceholder:"Nome de {workspaceLabel}",workspaceDescriptionPlaceholder:"Descricao de {workspaceLabel} (opcional)",saving:"Salvando...",saveGlobalSetup:"Salvar configuracao global",saveWorkspaceSetup:"Salvar configuracao de {workspaceLabel}",globalSetupSaved:"Configuracao global salva.",workspaceSetupSaved:"Configuracao de {workspaceLabel} salva.",saveFailedWithStatus:"Falha ao salvar configuracao ({status})",saveFailed:"Falha ao salvar configuracao.",saveWorkspaceFailed:"Falha ao salvar perfil do espaco.",retrySetupCheck:"Tentar verificacao novamente",signOut:"Sair"}},Pg=["en-US","es-419","pt-BR"],om="en-US",mp={"en-US":Fv,"es-419":Ov,"pt-BR":$v},Mg={en:"en-US",es:"es-419",pt:"pt-BR"};let Qi=om;function Uv(e){return e.split(".").filter(Boolean)}function pp(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 Eg(e){if(!e)return om;const t=Pg.find(s=>s.toLowerCase()===e.toLowerCase());if(t)return t;const n=e.split("-")[0]?.toLowerCase()||"";return Mg[n]||om}function fp(e,t){return t?e.replace(/\{([^}]+)\}/g,(n,s)=>{const o=t[s];return o==null?"":String(o)}):e}function Dg(){return Qi}function zv(){return[...Pg]}function Lg(e){const t=Eg(e);return Qi=t,t}function Hv(e){const t=typeof navigator<"u"?navigator.language:null;return Qi=Eg(t),Qi}function He(e,t){const n=Uv(e),s=pp(mp[Qi],n);if(s)return fp(s,t);const o=Qi.split("-")[0]?.toLowerCase()||"",l=Mg[o];if(l&&l!==Qi){const d=pp(mp[l],n);if(d)return fp(d,t)}const i=pp(mp[om],n);return i?fp(i,t):e}const Gv="default",ec="bootstrap";function Vv(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 cf(e){const t=String(e||"").trim().toLowerCase();return t?`${(t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||"project").slice(0,56)}-${Vv(t)}`:ec}function Bg(e){const t=String(e||"").trim().toLowerCase();if(!t)return ec;const n=t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"");return n?n.slice(0,96):ec}function Wg(e){const t=String(e||"").trim();return t?cf(t):ec}function qv(e){return(e.runtimeMode==="cloud"?"cloud":"local")==="cloud"?ec:Wg(e.projectRoot)}function Kv(e){if((e.runtimeMode==="cloud"?"cloud":"local")==="cloud"){const n=String(e.workspaceId||"").trim();return n&&!lf(n)?cf(`cloud-workspace:${n}`):ec}return Wg(e.projectRoot)}function lf(e){return String(e||"").trim().toLowerCase()===Gv}const Zv={local:{runtimeMode:"local",authSource:"cloud",workspaceMode:"single-local",workspaceSwitchingEnabled:!1},cloud:{runtimeMode:"cloud",authSource:"cloud",workspaceMode:"multi-cloud",workspaceSwitchingEnabled:!0}};function Yv(e){return String(e||"").trim().toLowerCase()==="cloud"?"cloud":"local"}function Jv(e){return Zv[Yv(e)]}const kd={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 xm(e){const t=String(e||"").trim().toLowerCase();return t==="production"||t==="staging"||t==="performance"?t:null}function Qv(e){return xm(e)||"production"}function eh(e){return kd[Qv(String(e||""))]}function Xv(e){const t=String(e||"").trim().toLowerCase();if(!t)return null;for(const[n,s]of Object.entries(kd))if(new URL(s.appBaseUrl).hostname.toLowerCase()===t||new URL(s.mcpBaseUrl).hostname.toLowerCase()===t)return n;return null}function df(e){const t=String(e||"").trim();if(!t)return null;try{return Xv(new URL(t).hostname)}catch{return null}}function eS(e){const t=df(e);return t?kd[t].mcpBaseUrl:null}function zi(e,t){return String(e[t]||"").trim()}function th(e,t,n){e.push(t),n?.(t)}function tS(e,t){const n=[],s=zi(e,"ENV"),o=xm(s);if(o)return th(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:zi(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL",value:zi(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_MCP_BASE_URL",value:zi(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL")},{key:"VITE_TASKFORCE_API_BASE_URL",value:zi(e,"VITE_TASKFORCE_API_BASE_URL")},{key:"VITE_TASKFORCE_BASE_URL",value:zi(e,"VITE_TASKFORCE_BASE_URL")},{key:"TASKFORCE_BASE_URL",value:zi(e,"TASKFORCE_BASE_URL")}];for(const i of l){if(!i.value)continue;const d=df(i.value);if(d)return th(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 Js(e,t){return String(e[t]||"").trim()}function aS(e){return e.toLowerCase()==="cloud"?"cloud":"local"}function Gc(e){return String(e||"").trim().replace(/\/+$/,"")}function nS(e){return String(e||"").trim().replace(/\/+$/,"")}function To(...e){for(const t of e)if(String(t||"").trim())return String(t||"").trim();return""}function rS(e,t={}){const n=[],s=ve=>{n.push(ve),t.onWarning?.(ve)},o=aS(Js(e,"TASKFORCE_RUNTIME_MODE")),l=xm(Js(e,"TASKFORCE_CLOUD_ENVIRONMENT")),i=l?{cloudEnvironment:l}:tS(e,s),d=l||i.cloudEnvironment,m=Gc(String(t.requestBaseUrl||"")),y=Gc(To(Js(e,"VITE_TASKFORCE_BASE_URL"),Js(e,"TASKFORCE_BASE_URL"))),k=Gc(Js(e,"VITE_TASKFORCE_API_BASE_URL")),S=Gc(Js(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")),h=Gc(To(Js(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL"),Js(e,"TASKFORCE_CLOUD_MCP_BASE_URL"))),g=Gc(Js(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")),v=nS(Js(e,"VITE_TASKFORCE_WS_BASE_URL")),_=d?kd[d].appBaseUrl:"",C=d?kd[d].mcpBaseUrl:"",x=To(g,S,k,y,_),W=To(h,C,x),V=To(m,y,k,S,x),B=To(m,k,y,x),J=To(S,y,k,x),me=o==="local"?To(v,m,k,y,g,S,_,x):To(m,v,B,V,x);return{runtimeMode:o,cloudEnvironment:d,cloudBaseUrl:x,cloudMcpBaseUrl:W,baseUrl:V,apiBaseUrl:B,cloudAuthBaseUrl:J,wsBaseUrl:me,cloudAuthViaLocalProxy:o==="local"||!!g,warnings:n}}function uf(e){return rS({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 ah(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 hp(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 im="unassigned",Fg="agent",sS="user",oS=/^[0-9a-f]{8,}$/i;function Og(e){const t=String(e||"").trim().toLowerCase();return t===Fg||t==="ai"||t.startsWith("ai-profile-")}function $g(e){const t=String(e||"").trim().toLowerCase();return!t||t===im||t==="none"||t==="null"||t===sS}function cm(e){return Og(e)?"agent":$g(e)?"unassigned":"member"}function iS(e){const t=String(e.displayName||"").trim(),n=String(e.email||"").trim().toLowerCase();return t||n||String(e.userId||"").trim()||"Workspace member"}function ci(){return[{value:im,label:"Unassigned",icon:"HelpCircle",color:"var(--text-secondary)",kind:"unassigned"}]}function cS(e){const t=new Map;for(const n of e){const s=String(n.userId||"").trim();s&&t.set(s,{value:s,label:iS(n),icon:"User",color:"#22c55e",kind:"member",avatarUrl:typeof n.avatarUrl=="string"&&n.avatarUrl.trim().length>0?n.avatarUrl.trim():null})}return vd(Array.from(t.values()))}function vd(e){const t=new Map;for(const s of ci())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===im||o===Fg||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=[im];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 lS(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(cm(n)==="agent"){const l=String(n).toLowerCase().startsWith("ai-profile-")&&s.split(" ").every(i=>oS.test(i));return vd([...e,{value:n,label:l?"AI":o||"AI",icon:"Bot",color:"#8b5cf6",kind:"agent"}])}return cm(n)==="member"?vd([...e,{value:n,label:o||n,icon:"User",color:"#22c55e",kind:"member"}]):e}function Ug(e){const t=Array.isArray(e)?e.filter(Boolean):[];return vd(t)}function ud(e,t){const n=String(e||"").trim(),o=Ug(t).find(l=>l.value===n);return o?o.label:Og(n)?"AI":$g(n)?"Unassigned":n||"Unassigned"}const zg="taskforce.workspaceContext.v2",dS="taskforce.uiState.app.v1",uS="taskforce.bootstrapDebug.v1",nh=5e3,Mu=new Map;function mS(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(uS)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function zt(e,t){if(!mS())return;console.info("[Taskforce Bootstrap]",e,t&&typeof t=="object"?t:{})}function pS(e,t){const n=String(e).trim()||"default";return`${String(t).trim()||"default"}::${n}`}async function mf(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=pS(t,n||"default"),i=Date.now(),d=Mu.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 Mu.set(l,{serializedPatch:o,status:"success",retryAfter:0}),{skipped:!1,response:m,payload:y};if(Mu.set(l,{serializedPatch:o,status:"failure",retryAfter:i+(e.failureRetryMs??nh)}),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(Mu.set(l,{serializedPatch:o,status:"failure",retryAfter:i+(e.failureRetryMs??nh)}),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 pf(e){const t=cf(e);return`${zg}.${t}`}function Hg(e){const t=Bg(e);return`${zg}.${t}`}function Bp(e){if(typeof window>"u")return"";try{const t=pf(e),n=String(window.localStorage.getItem(t)||"").trim();if(n&&n.length<=120&&!/\s/.test(n))return n;const s=Hg(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 fS(e,t){if(typeof window>"u")return;const n=String(e||"").trim();try{if(!n||lf(n))return;const s=pf(t),o=String(window.localStorage.getItem(s)||"").trim();if(!n&&o&&o.toLowerCase()!=="default")return;window.localStorage.setItem(s,n)}catch{}}function rh(e){if(!(typeof window>"u"))try{window.localStorage.removeItem(pf(e)),window.localStorage.removeItem(Hg(e))}catch{}}function Gg(e){const t=Bg(e);return`${dS}.${t}`}function sh(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(Gg(e));if(!t)return null;const n=JSON.parse(t);return n&&typeof n=="object"?n:null}catch{return null}}function hS(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(Gg(t),JSON.stringify(e))}catch{}}const Wp="taskforce.localMutationActorUserId.v1";function Vg(e){return typeof e=="string"?e.trim().replace(/\/+$/,""):""}function gS(e){const t=String(e||"").trim().toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function rd(e){if(!(typeof window>"u"))try{const t=String(e||"").trim();if(!t||t==="anonymous"){window.sessionStorage.removeItem(Wp);return}window.sessionStorage.setItem(Wp,t)}catch{}}function ff(){if(typeof window>"u")return"";try{return String(window.sessionStorage.getItem(Wp)||"").trim()}catch{return""}}function yS(e,t){if(typeof window>"u"||!e.startsWith("/api/taskforce/")||!gS(window.location.hostname))return!1;try{return new URL(t,window.location.origin).origin===window.location.origin}catch{return e.startsWith("/")}}function kS(e,t,n){if(!yS(e,t))return n;const s=ff();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 vS(e,t){if(!e.startsWith("/"))return e;const n=Vg(t);return n?`${n}${e}`:e}async function LO(e,t,n){const s=vS(e,n),o=Vg(n).length>0,l=kS(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 SS(e){const t=Number(e?.status);return Number.isFinite(t)&&t>0?Math.floor(t):0}async function rl(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:SS(t),data:{}}}}async function wS(e){return rl(fetch(e("/api/taskforce/sync/user-settings"),{method:"GET",credentials:"include"}))}async function bS(e,t){return rl(fetch(e("/api/taskforce/sync/user-settings"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}))}async function gp(e,t){return rl(fetch(e("/api/taskforce/sync/workspace/handshake"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t})}))}async function oh(e,t){return rl(fetch(e("/api/taskforce/sync/workspace/provision"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}))}async function _S(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 rl(fetch(`${s}${o}${n.toString()}`,{method:"GET",credentials:"include"}))}async function CS(e,t){return rl(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 Fp(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 Op="V1:AESGCM:",hf="AES-GCM",AS=12;async function qg(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:hf},!1,["encrypt","decrypt"])}async function ih(e,t){if(!e)return e;const n=crypto.getRandomValues(new Uint8Array(AS)),s=await qg(t),l=new TextEncoder().encode(e),i=await crypto.subtle.encrypt({name:hf,iv:n},s,l),d=Buffer.from(i).toString("base64"),m=Buffer.from(n).toString("base64");return`${Op}${m}:${d}`}async function ch(e,t){if(!e||!e.startsWith(Op))return e;const n=e.slice(Op.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 qg(t);try{const m=await crypto.subtle.decrypt({name:hf,iv:l},d,i);return new TextDecoder("utf-8").decode(m)}catch(m){throw new Error(`Failed to decrypt document: ${m.message}`)}}var Zc={};function rs(e){return e&&typeof e=="object"?e:{}}function Ws(e){const t=Number(e||0);return t===0||t===429||t>=500}function lh(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 xS(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 IS(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 gp(e.resolveCloudAuthUrl,e.workspaceId);if(t.ok)return{success:!0,provisioned:!1};const n=rs(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(xS(n,t.status)){const s=await oh(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const o=rs(s.data);return{success:!1,statusCode:s.status,transient:Ws(s.status),retryAfterMs:s.retryAfterMs,error:lh(o,s.status)}}if(t=await gp(e.resolveCloudAuthUrl,e.workspaceId),!t.ok){const o=rs(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:Ws(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 oh(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const o=rs(s.data);return{success:!1,statusCode:s.status,error:lh(o,s.status)}}if(t=await gp(e.resolveCloudAuthUrl,e.workspaceId),!t.ok){const o=rs(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:Ws(t.status),error:String(o.error||`Workspace sync handshake failed (${t.status})`)}}return{success:!0,provisioned:!0}}return{success:!1,statusCode:t.status,transient:Ws(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 TS(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 RS(e){const t=e.payload.changes.length,n=e.payload.deleteTaskIds.size,s=await TS(e.workspaceId,e.payload.changes);let o=0,l=e.payload.changes;if(typeof process<"u"&&Zc?.TASKFORCE_SYNC_KEY){const S=Zc.TASKFORCE_SYNC_KEY,h=[];for(const g of l)g.op==="document-upsert"&&typeof g.content=="string"?h.push({...g,content:await ih(g.content,S)}):g.op==="asset-upsert"&&typeof g.contentBase64=="string"&&g.contentBase64.length>0?h.push({...g,contentBase64:await ih(g.contentBase64,S)}):h.push(g);l=h}const i=async()=>{const S=Date.now(),h=await CS(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=rs(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:Ws(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=rs(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 jS(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 _=null;const C=Number.isFinite(Number(e.maxPages))?Math.max(1,Math.floor(Number(e.maxPages))):20;try{for(;n&&s<C;){const x=async()=>{const se=Date.now(),A=await _S(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:t,limit:e.bootstrap?500:200,repairMode:e.repairMode===!0});return l+=Date.now()-se,A};let W=await x();if(!W.ok&&W.status===403&&e.ensureCloudWorkspaceReadyForSync&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(W=await x()),!W.ok){const se=rs(W.data);return{success:!1,kind:"pull_http",status:W.status,errorCode:typeof se.code=="string"?se.code:void 0,error:typeof se.error=="string"?se.error:void 0,retryAfterMs:W.retryAfterMs,transient:Ws(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;_=J;const me=Array.isArray(V?.workspaceMembers),ve=me?V.workspaceMembers:void 0;for(const se of B){if(se.op==="upsert"){se?.archived===!0||se?.task?.isArchived===!0?y=!0:m=!0;continue}if(se.op==="annotated-attachment-session-upsert"){const K=String(se?.session?.id||"").trim();K&&v.add(K);continue}if(se.op==="task-event-upsert"||se.op==="entity-event-upsert"){k=!0;continue}if(se.op==="initiative-upsert"||se.op==="workstream-upsert"){S=!0;continue}if(se.op==="document-upsert"){if(typeof se.content=="string"&&typeof process<"u"&&Zc?.TASKFORCE_SYNC_KEY)try{se.content=await ch(se.content,Zc.TASKFORCE_SYNC_KEY)}catch{const K=String(se.path||"").trim();K&&h.add(K)}continue}if(se.op==="asset-upsert"){if(typeof se.contentBase64=="string"&&typeof process<"u"&&Zc?.TASKFORCE_SYNC_KEY)try{se.contentBase64=await ch(se.contentBase64,Zc.TASKFORCE_SYNC_KEY)}catch{const K=String(se.path||"").trim();K&&h.add(K)}continue}if(se.op!=="delete")continue;const A=String(se.taskId||"").trim();A&&d.add(A)}if(e.onPagePulled&&e.onPagePulled(),B.length>0||me){const se=Date.now(),A=await Fp(e.workspaceId,B,{...me?{workspaceMembers:ve}:{},repairMode:e.repairMode===!0}),K=A.failures;if(!A.ok){i+=Date.now()-se;const pe=rs(A.data);if(K.some(O=>O.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(O=>{if(O.endsWith(":network"))return!0;const de=O.split(":").pop()||"",ge=Number.parseInt(de,10);return Number.isFinite(ge)&&(ge===429||ge>=500)});return{success:!1,kind:"apply_all_candidates",status:A.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:_}}const ue=rs(A.data);if(ue.success===!1)return i+=Date.now()-se,{success:!1,kind:"apply_payload",transient:!1,error:String(ue.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:_};if(i+=Date.now()-se,o+=B.length,Array.isArray(ue.emittedEventIds))for(const pe of ue.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 x=Date.now(),W=await Fp(e.workspaceId,[],{bootstrapSnapshot:{currentAnnotatedAttachmentSessionIds:Array.from(v)}}),V=W.failures;if(!W.ok){i+=Date.now()-x;const B=rs(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:_};const me=V.some(ve=>{if(ve.endsWith(":network"))return!0;const se=ve.split(":").pop()||"",A=Number.parseInt(se,10);return Number.isFinite(A)&&(A===429||A>=500)});return{success:!1,kind:"apply_all_candidates",status:W.status||void 0,transient:me,error:String(B.error||"").trim()||void 0,failures:V,hasTransientApplyFailure:me,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:_}}i+=Date.now()-x}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:_}}catch(x){return{success:!1,kind:"exception",status:0,transient:!0,error:String(x?.message||x||"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 NS(e){const t=await wS(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:Ws(h)}}const n=rs(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 bS(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:Ws(h)}}const k=rs(y.data);return{success:!0,mode:"pushed",updatedAt:typeof k.updatedAt=="string"&&k.updatedAt.trim().length>0?k.updatedAt.trim():m}}function PS(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 MS=["chat_app","ide","cli","coding_tool","agent"],BO=["chat_app","ide","cli","coding_tool","agent","unclassified"],ES={chat_app:"Chat App",ide:"IDE",cli:"CLI",coding_tool:"Coding Tool",agent:"Agent"},DS={chat_app:"Chat Apps",ide:"IDEs",cli:"CLI",coding_tool:"Coding Tools",agent:"Agents",unclassified:"Unclassified"};function LS(e){return typeof e=="string"&&MS.includes(e)}function Kg(e){if(typeof e!="string")return null;const t=e.trim();return t==="other"?"agent":LS(t)?t:null}function WO(e){return ES[e]}function FO(e){return e??"unclassified"}function OO(e){return DS[e]}const BS=["cloud_metered","local_unmetered"],WS={cloud_metered:"Cloud MCP",local_unmetered:"Local MCP"};function FS(e){return typeof e=="string"&&BS.includes(e)}function Zg(e){if(typeof e!="string")return null;const t=e.trim();return FS(t)?t:null}function $O(e){return WS[e]}function ii(e){if(e==null)return;const t=String(e).trim();return t.length>0?t:void 0}function ln(e){if(e==null)return null;const t=String(e).trim();return t.length>0?t:null}function Sd(e){return ii(e)}function lm(e){return ln(e)}function Wr(e){return ln(e)}function tl(e){const t=ln(e);return t&&t.startsWith("/api/taskforce/context/")?t:null}function Eu(e){return ii(e)}function Du(e){if(e!==void 0)return ln(e)}function OS(e){return typeof e=="boolean"?e:void 0}function Lu(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 $S(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 US(e){return Array.isArray(e)?e:void 0}function zS(e){return Array.isArray(e)?e:void 0}function HS(e){return Array.isArray(e)?e:void 0}function Yg(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:Lu(t.priority,{min:1})??void 0,complexity:Lu(t.complexity,{min:1,nullable:!0}),type:String(t.type||"").trim(),category:String(t.category||"").trim(),approach:Eu(t.approach),canceledReason:t.canceledReason===void 0?void 0:t.canceledReason||null,createdAt:String(t.createdAt||"").trim(),updatedAt:Eu(t.updatedAt),completedAt:t.completedAt===void 0?void 0:t.completedAt||null,isArchived:OS(t.isArchived),taxonomies:$S(t.taxonomies),createdBy:Eu(t.createdBy),assignee:Eu(t.assignee),scheduledDate:Du(t.scheduledDate),dueDate:Du(t.dueDate),scheduledWeekKey:Du(t.scheduledWeekKey),orderInDay:Lu(t.orderInDay,{min:0,nullable:!0}),workstreamId:Du(t.workstreamId),referenceNumber:Lu(t.referenceNumber,{min:1,nullable:!0}),comments:US(t.comments),attachments:zS(t.attachments),checklistItems:HS(t.checklistItems)}}function GS(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 VS(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 qS(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:ii(n?.submittedAuthor)||"",text:String(n?.text||""),timestamp:Wr(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 KS(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:ii(n?.fsPath)||"",caption:ii(n?.caption)||"",displayName:ii(n?.displayName)||"",originalFilename:ii(n?.originalFilename)||"",assetId:Sd(n?.assetId)||"",referenceNumber:n?.referenceNumber===void 0||n.referenceNumber===null?"":String(n.referenceNumber),taskId:lm(n?.taskId)||"",timestamp:Wr(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 ZS(e,t){const n=Yg(e);return JSON.stringify({id:n.id,title:n.title,description:ln(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:ii(n.approach)||"",canceledReason:ln(n.canceledReason)||"",createdAt:n.createdAt,completedAt:Wr(n.completedAt)||"",taxonomies:GS(n.taxonomies),createdBy:Sd(n.createdBy)||"",assignee:Sd(n.assignee)||"",scheduledDate:ln(n.scheduledDate)||"",dueDate:ln(n.dueDate)||"",scheduledWeekKey:ln(n.scheduledWeekKey)||"",orderInDay:n.orderInDay===void 0||n.orderInDay===null?"":String(n.orderInDay),workstreamId:lm(n.workstreamId)||"",referenceNumber:n.referenceNumber===void 0||n.referenceNumber===null?"":String(n.referenceNumber),comments:qS(n.comments),attachments:KS(n.attachments),checklistItems:VS(n.checklistItems),isArchived:t?"1":"0"})}function YS(...e){return e.reduce((t,n)=>{const s=Wr(n)||"";return t?s&&s>t?s:t:s},"")}function JS(e){const t=e||{};return YS(t.createdAt,t.updatedAt,t.lastActiveAt,t.archivedAt,t.rosterStateUpdatedAt)}function QS(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:tl(t.avatarUrl)||"",avatarSourceUrl:tl(t.avatarSourceUrl)||"",avatarRevision:Number.isFinite(Number(t.avatarRevision))?Math.max(0,Math.floor(Number(t.avatarRevision))):0,avatarUpdatedAt:Wr(t.avatarUpdatedAt)||"",description:ln(t.description)||"",role:ln(t.role)||"",provider:ln(t.provider)||"",model:ln(t.model)||"",surfaceType:ln(t.surfaceType)||"",seatScope:ln(t.seatScope)||"",providerMetadata:t.providerMetadata&&typeof t.providerMetadata=="object"&&!Array.isArray(t.providerMetadata)?t.providerMetadata:null,archivedAt:Wr(t.archivedAt)||"",archivedBy:Sd(t.archivedBy)||"",archivedReason:ln(t.archivedReason)||"",mergedIntoProfileId:Sd(t.mergedIntoProfileId)||"",rosterStateUpdatedAt:Wr(t.rosterStateUpdatedAt)||"",createdAt:Wr(t.createdAt)||"",updatedAt:Wr(t.updatedAt)||"",lastActiveAt:Wr(t.lastActiveAt)||""})}const ws={kind:"task",getId:e=>String(e?.id||"").trim(),getWatermark:e=>String(e?.updatedAt||e?.createdAt||"").trim(),getChangeKey:e=>ZS(e,!!e?.isArchived)},md={kind:"ai-profile",getId:e=>String(e?.id||"").trim(),getWatermark:e=>JS(e),getChangeKey:e=>QS(e)};function dh(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 uh(e){return Yg(e)}function mh(e,t){const n=e??t;return new Set(Array.from(n).map(s=>String(s||"").trim()).filter(s=>s.length>0))}function XS(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 ph(e){return[...e].sort((t,n)=>{const s=String(t?.id||"").trim(),o=String(n?.id||"").trim();return s.localeCompare(o)})}function dm(e){return Array.isArray(e)?e:void 0}function ew(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:dh(ws,{...c,isArchived:Y},{watermarks:o,changeKeys:l}),d=ph(e.tasks||[]),m=ph(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=ws.getWatermark(c),Ie=ws.getChangeKey({...c,isArchived:!1});return Y&&(S.set(Y,ye),h.set(Y,Ie)),{op:"upsert",archived:!1,task:uh(c)}}),v=m.filter(c=>!n.has(String(c?.id||"").trim())&&i(c,!0)).map(c=>{const Y=String(c?.id||"").trim(),ye=ws.getWatermark(c),Ie=ws.getChangeKey({...c,isArchived:!0});return Y&&(S.set(Y,ye),h.set(Y,Ie)),{op:"upsert",archived:!0,task:uh(c)}}),_=new Set;for(const c of e.tasks||[]){const Y=String(c?.id||"").trim();Y&&(_.add(Y),y.set(Y,ws.getWatermark(c)),k.set(Y,ws.getChangeKey({...c,isArchived:!1})))}for(const c of e.archivedTasks||[]){const Y=String(c?.id||"").trim();Y&&(_.add(Y),y.set(Y,ws.getWatermark(c)),k.set(Y,ws.getChangeKey({...c,isArchived:!0})))}const C=Array.from(e.lastPushedTaskIds).filter(c=>!_.has(c)).map(c=>({op:"delete",taskId:c,deletedAt:s.get(c)||t})),x=Array.from(n).map(c=>({op:"delete",taskId:c,deletedAt:s.get(c)||t})),W=new Set([...C.map(c=>String(c.taskId)),...x.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,me=!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:dm(c?.attachments),isArchived:!!c?.isArchived}})).filter(c=>c.initiative.id.length>0).filter(c=>me?!0:J.get(c.initiative.id)!==c.initiative.updatedAt),se=new Set((Array.isArray(e.workstreams)?e.workstreams:[]).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),A=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,ue=!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:dm(c?.attachments),isArchived:!!c?.isArchived}})).filter(c=>c.workstream.id.length>0).filter(c=>ue?!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(),md.getWatermark(c)]).filter(([c])=>c.length>0)),O=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(c=>[String(c?.id||"").trim(),md.getChangeKey(c)]).filter(([c])=>c.length>0)),de=e.lastPushedAiProfileWatermarks,ge=e.lastPushedAiProfileChangeKeys,$=!de||de.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:tl(c.avatarUrl),avatarSourceUrl:tl(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:Kg(c.surfaceType),seatScope:Zg(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=>$?!0:dh(md,c.profile,{watermarks:de,changeKeys:ge})),je=mh(e.currentDocumentPaths,(Array.isArray(e.documents)?e.documents:[]).map(c=>String(c?.path||"").trim())),oe=new Set(Array.from(e.lastPushedDocumentPaths||new Set).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!je.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,Ce=(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),De=mh(e.currentAssetPaths,(Array.isArray(e.assets)?e.assets:[]).map(c=>String(c?.path||"").trim())),U=new Set(Array.from(e.lastPushedAssetPaths||new Set).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!De.has(c))),I=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,R=!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=>R?!0:b.get(c.path)!==c.updatedAt),te=Array.isArray(e.documentReviewSessions)?e.documentReviewSessions:[],N=new Set(te.map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),G=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,z=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&&!N.has(c)),we=[...Se.map(c=>({sessionId:c,deletedAt:t})),...q],Te=new Set([...Se,...q.map(c=>c.sessionId)]),Ee=Array.isArray(e.documentReviewComments)?e.documentReviewComments:[],nt=new Set(Ee.map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),gt=new Set(Ee.filter(c=>String(c?.deletedAt||"").trim().length===0).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),dt=e.lastPushedDocumentReviewCommentIds||new Set,St=new Map(Ee.map(c=>[String(c?.id||"").trim(),String(c?.deletedAt||c?.updatedAt||c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),Ze=e.lastPushedDocumentReviewCommentWatermarks,Ct=!Ze||Ze.size===0,ut=Ee.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:Ze.get(c.comment.id)!==c.comment.updatedAt),Xe=Ee.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:Ze.get(c.commentId)!==c.deletedAt),lt=Array.from(dt).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!nt.has(c)),re=[...lt.map(c=>({commentId:c,deletedAt:t})),...Xe],it=new Set([...lt,...Xe.map(c=>c.commentId)]),Ye=Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions:[],jt=new Set(Ye.map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),kt=new Set(Ye.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(Ye.map(c=>[String(c?.id||"").trim(),String(c?.deletedAt||c?.updatedAt||c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),Nt=e.lastPushedAnnotatedAttachmentSessionWatermarks,Fe=!Nt||Nt.size===0,et=Ye.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=>Fe?!0:Nt.get(c.session.id)!==c.session.updatedAt),Ge=Ye.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=>Fe?!0:Nt.get(c.sessionId)!==c.deletedAt),Qe=Array.from(It).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!jt.has(c)),yt=[...Qe.map(c=>({sessionId:c,deletedAt:t})),...Ge],ot=new Set([...Qe,...Ge.map(c=>c.sessionId)]),ae=XS(Array.isArray(e.taskEvents)?e.taskEvents:[]),Ve=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,Dt=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),Ue=[...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,...Ce,...Array.from(oe).map(c=>({op:"document-delete",path:c,deletedAt:t})),...D,...Array.from(U).map(c=>({op:"asset-delete",path:c,deletedAt:t})),...Q,...we.map(c=>({op:"document-review-session-delete",sessionId:c.sessionId,deletedAt:c.deletedAt})),...ut,...re.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})),...Dt,...g,...v,...Array.from(W).map(c=>({op:"delete",taskId:c,deletedAt:s.get(c)||t}))],Et=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?Et||"missing-baseline":null,currentCount:c.currentCount,baselineCount:c.baselineCount,changeCount:Y}},E=Ue.reduce((c,Y)=>{const ye=String(Y.op||"").trim();return c[ye]=(c[ye]||0)+1,c},{});return{changes:Ue,currentTaskIds:new Set(Array.from(_).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:se,currentWorkstreamWatermarks:A,currentAiProfileIds:X,currentAiProfileWatermarks:M,currentAiProfileChangeKeys:O,currentDocumentPaths:je,deleteDocumentPaths:oe,currentDocumentWatermarks:ce,currentAssetPaths:De,deleteAssetPaths:U,currentAssetWatermarks:I,currentDocumentReviewSessionIds:G,deleteDocumentReviewSessionIds:Te,currentDocumentReviewSessionWatermarks:z,currentDocumentReviewCommentIds:gt,deleteDocumentReviewCommentIds:it,currentDocumentReviewCommentWatermarks:St,currentAnnotatedAttachmentSessionIds:kt,deleteAnnotatedAttachmentSessionIds:ot,currentAnnotatedAttachmentSessionWatermarks:Ft,currentTaskEventWatermarks:Ve,pushedWatermarks:S,pushedTaskChangeKeys:h,deltaDiagnostics:{totalChanges:Ue.length,byOp:E,baselineResetReason:Et,domains:{tasks:vt({currentCount:_.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:se.size,baselineCount:K?.size||0,upsertCount:pe.length}),aiProfiles:vt({currentCount:X.size,baselineCount:de?.size||0,upsertCount:_e.length}),documents:vt({currentCount:je.size,baselineCount:Re?.size||0,upsertCount:Ce.length,deleteCount:oe.size}),assets:vt({currentCount:De.size,baselineCount:b?.size||0,upsertCount:D.length,deleteCount:U.size}),documentReviewSessions:vt({currentCount:G.size,baselineCount:ie?.size||0,upsertCount:Q.length,deleteCount:Te.size}),documentReviewComments:vt({currentCount:gt.size,baselineCount:Ze?.size||0,upsertCount:ut.length,deleteCount:it.size}),annotatedAttachmentSessions:vt({currentCount:kt.size,baselineCount:Nt?.size||0,upsertCount:et.length,deleteCount:ot.size}),taskEvents:vt({currentCount:Ve.size,baselineCount:bt?.size||0,upsertCount:Dt.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 tw(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:dm(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:dm(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 Yu(){return{version:2,enabled:!1,phase:"idle",setupIntent:null,startupFullReconcileCompletedAt:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null,pushBaseline:null}}function Qs(e){const t=String(e||"").trim();return t.length>0?t:null}function fh(e){return String(e||"").trim().toLowerCase()==="attach-cloud-import"?"attach-cloud-import":null}function aw(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 nw(e){return Array.isArray(e)?e.map(t=>String(t||"").trim()).filter(t=>t.length>0):[]}function hh(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,n=s=>Array.isArray(t[s])?t[s].map(o=>aw(o)).filter(o=>Array.isArray(o)):[];return{taskIds:nw(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 rw(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 sw(e){const t=Yu();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:fh(n.setupIntent),startupFullReconcileCompletedAt:Qs(n.startupFullReconcileCompletedAt),pullCursor:Qs(n.pullCursor),lastPullAt:Qs(n.lastPullAt),lastPushAt:Qs(n.lastPushAt),lastSyncedAt:Qs(n.lastSyncedAt),lastErrorMessage:o,pushBaseline:hh(n.pushBaseline)};l.phase=rw(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||fh(n.setupIntent)!==l.setupIntent||Qs(n.startupFullReconcileCompletedAt)!==l.startupFullReconcileCompletedAt||Qs(n.pullCursor)!==l.pullCursor||Qs(n.lastPullAt)!==l.lastPullAt||Qs(n.lastPushAt)!==l.lastPushAt||Qs(n.lastSyncedAt)!==l.lastSyncedAt||o!==l.lastErrorMessage||JSON.stringify(hh(n.pushBaseline))!==JSON.stringify(l.pushBaseline);return{state:l,changed:d}}const ow="taskforce.sync.lease.v1",iw="taskforce.sync.lease.v1",cw=2500,lw=9e3;function ed(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function td(e){const t=String(e||"").trim();return t.length>0?t:null}function yp(e){return`${ow}.${e}`}function dw(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 uw(e,t,n,s){return{ownerId:e,workspaceId:t,operation:n,heartbeatAt:new Date(s).toISOString(),expiresAt:new Date(s+lw).toISOString()}}function mw(e,t=Date.now()){if(!e)return!0;const n=Date.parse(e.expiresAt);return!Number.isFinite(n)||n<=t}function kp(e,t){const n={...e,...t,version:2,phase:t.phase||e.phase,setupIntent:t.setupIntent===void 0?e.setupIntent??null:t.setupIntent??null,startupFullReconcileCompletedAt:t.startupFullReconcileCompletedAt===void 0?e.startupFullReconcileCompletedAt??null:td(t.startupFullReconcileCompletedAt),pullCursor:t.pullCursor===void 0?e.pullCursor:td(t.pullCursor),lastPullAt:t.lastPullAt===void 0?e.lastPullAt:td(t.lastPullAt),lastPushAt:t.lastPushAt===void 0?e.lastPushAt:td(t.lastPushAt),lastSyncedAt:t.lastSyncedAt===void 0?e.lastSyncedAt:td(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 pw(e){return{...e,pushBaseline:null}}function fw(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),_=r.useRef(""),C=r.useRef(""),x=r.useRef(new Set),W=r.useRef(new Set),V=r.useRef(new Map),B=r.useRef(null),J=r.useRef(Yu()),me=r.useRef(""),ve=r.useRef(null),se=r.useRef(null),A=r.useRef(null),K=r.useRef(null);if(!me.current){const I=Date.now().toString(36),b=Math.random().toString(36).slice(2,10);me.current=`sync-lease-${I}-${b}`}const ue=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((I,b)=>{if(typeof window>"u")return;const R=Math.max(1,h.current+1);h.current=R;const D=PS(R),te=Number(b?.minDelayMs),N=Number.isFinite(te)&&te>0?Math.max(D,Math.floor(te)):D,G=Date.now()+N;S.current=G,y(new Date(G).toISOString()),k.current!==null&&window.clearTimeout(k.current),k.current=window.setTimeout(()=>{k.current=null,S.current=null,y(null),I()},N)},[]),X=r.useCallback(()=>{const I=S.current;return typeof I=="number"&&Number.isFinite(I)&&I>Date.now()},[]),M=r.useCallback(I=>{if(typeof window>"u")return null;const b=String(I||"").trim();return ed(b)?dw(window.localStorage.getItem(yp(b))):null},[]),O=r.useCallback(I=>{const b=String(I||"").trim();if(b)try{K.current?.postMessage({workspaceId:b})}catch{}},[]),de=r.useCallback((I,b)=>{if(typeof window>"u")return null;const R=String(I||"").trim();if(!ed(R))return null;const D=uw(me.current,R,b,Date.now());try{window.localStorage.setItem(yp(R),JSON.stringify(D))}catch{return null}return O(R),D},[O]),ge=r.useCallback(()=>{A.current!==null&&typeof window<"u"&&(window.clearInterval(A.current),A.current=null)},[]),$=r.useCallback((I,b)=>{if(typeof window>"u")return;const R=String(I||ve.current||"").trim();if(!R)return;const D=M(R),te=D?.ownerId===me.current;if(!(!b?.force&&D&&!te)){ge();try{window.localStorage.removeItem(yp(R))}catch{}ve.current=null,se.current=null,O(R)}},[O,M,ge]),_e=r.useCallback((I,b)=>{typeof window>"u"||(ge(),A.current=window.setInterval(()=>{const R=String(ve.current||"").trim(),D=se.current;if(!R||!D){ge();return}if(M(R)?.ownerId!==me.current){ge(),ve.current=null,se.current=null;return}de(R,D)},cw),ve.current=I,se.current=b)},[M,ge,de]),je=r.useCallback(async(I,b)=>{if(typeof window>"u")return!0;const R=String(I||"").trim();if(!ed(R))return!1;const D=M(R);if(D?.ownerId===me.current)return de(R,b)?(_e(R,b),!0):!1;if(D&&!mw(D)||!de(R,b))return!1;const G=M(R);return!G||G.ownerId!==me.current?!1:(_e(R,b),!0)},[M,_e,de]),oe=r.useCallback(I=>{$(I,{force:!0})},[$]),ce=r.useCallback(I=>{const b=J.current,R=kp(b,{enabled:!!I.enabled,phase:I.phase||b.phase,setupIntent:I.setupIntent,pullCursor:I.pullCursor,lastPullAt:I.lastPullAt,lastPushAt:I.lastPushAt,lastSyncedAt:I.lastSyncedAt,lastErrorMessage:I.lastErrorMessage});J.current=R,B.current=R.pullCursor,n(R.enabled),s(R.phase),o(R.setupIntent??null),l(R.lastPullAt),i(R.lastPushAt),d(R.lastErrorMessage??null)},[n,s,o,l,i,d]),Re=r.useCallback(I=>{const b=kp(J.current,I);return ce(b),b},[ce]),Pe=r.useCallback(()=>J.current,[]),Ce=r.useCallback(async I=>{const b=kp(J.current,I);J.current=b,B.current=b.pullCursor;const R=await mf({workspaceId:t,stateKey:"workspace-sync",patch:pw(b),throwOnError:!0,respectFailureCooldown:!1}),D=R.response,te=R.payload;if(R.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]),De=r.useCallback(async()=>{if(!ed(t)){const I=Yu();J.current=I,ce(I);return}try{const I=await fetch(`/api/taskforce/ui-state?key=workspace-sync&workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!I.ok)return;const b=await I.json().catch(()=>({})),R=sw(b?.state&&typeof b.state=="object"?b.state:null);J.current=R.state,ce(R.state),R.changed&&Ce(R.state)}catch{}},[ce,t,Ce]),U=r.useCallback(async(I,b)=>{if(!ed(t))return{success:!1,error:"Workspace setup is required before enabling sync."};try{if(!I.enabled)return await Ce({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 R=await b.ensureCloudWorkspaceReadyForSync();return R.success?(await Ce({enabled:!0,phase:R.provisioned?"provision-local":"attach-cloud",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}),{success:!0}):{success:!1,error:R.error||"Workspace sync handshake failed."}}catch{return{success:!1,error:"Failed to save workspace sync settings."}}},[t,Ce]);return r.useEffect(()=>{_.current="",C.current="",x.current=new Set,W.current=new Set,V.current=new Map,B.current=null,J.current=Yu(),g.current=!1,v.current=!1,$(),ue()},[ue,t,$]),r.useEffect(()=>{if(typeof window>"u"||typeof BroadcastChannel>"u")return;const I=new BroadcastChannel(iw);return K.current=I,()=>{I.close(),K.current===I&&(K.current=null)}},[]),r.useEffect(()=>()=>{k.current!==null&&typeof window<"u"&&(window.clearTimeout(k.current),k.current=null),$()},[$]),{workspaceRetryAt:m,isWorkspaceRetryPending:X,workspacePushInFlightRef:g,workspacePullInFlightRef:v,workspaceLastPushedSignatureRef:_,workspacePendingSignatureRef:C,workspaceLastPushedTaskIdsRef:x,workspaceDeletedTaskIdsRef:W,workspaceDeletedTaskWatermarksRef:V,workspacePullCursorRef:B,clearWorkspaceRetry:ue,scheduleWorkspaceRetry:pe,persistWorkspaceSyncPatch:Ce,applyWorkspaceSyncPatchLocally:Re,readWorkspaceSyncStateSnapshot:Pe,loadWorkspaceSyncState:De,applyWorkspaceSyncStateSnapshot:ce,saveWorkspaceCloudSyncSettings:U,acquireWorkspaceSyncLease:je,releaseWorkspaceSyncLease:$,forceClearWorkspaceSyncLease:oe,readWorkspaceSyncLease:M}}class hw{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 Jg(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),_=r.useRef(0),C=r.useRef(""),x=r.useRef(!1),W=r.useRef(null),V=r.useRef(null),B=r.useRef(new hw),J=r.useRef(m),me=r.useRef(y);r.useEffect(()=>{J.current=m},[m]),r.useEffect(()=>{me.current=y},[y]);const[ve,se]=r.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),A=r.useMemo(()=>String(n||"").trim(),[n]),K=r.useMemo(()=>String(s||"").trim(),[s]);return r.useEffect(()=>{let ue=!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,O=ce=>{const Re=V.current;if(Re){const Pe=M(Re.type),Ce=M(ce.type);if(Ce<Pe||Ce===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 Ce=V.current;V.current=null,Pe(Ce)},80)},de=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||(C.current=`${Re}:${Math.floor(Pe)}`,x.current=!1)},$=()=>{const ce=B.current.getTelemetry();se(ce);const Re=me.current;typeof Re=="function"&&Re(ce)},_e=ce=>{const Re={type:"taskforce:replay",workspaceId:A,limit:d},Pe=C.current;Pe&&(Re.cursor=Pe),ce.send(JSON.stringify(Re))},je=()=>{if(!t||ue)return;pe(),_.current+=1;const ce=_.current,Re=Math.max(50,Math.floor(o)),Pe=Math.max(Re,Math.floor(l)),Ce=Math.min(Pe,Re*Math.pow(2,Math.max(0,ce-1)));h(ce>=i?"degraded-fallback":"reconnecting"),v.current=window.setTimeout(()=>{ue||(v.current=null,oe())},Ce)},oe=()=>{if(!t||ue||!A||!K)return;X();let ce;try{ce=new WebSocket(K)}catch{je();return}g.current=ce,ce.addEventListener("open",()=>{_.current=0,h("connected"),ce.send(JSON.stringify({type:"taskforce:subscribe",workspaceId:A,userId:k||void 0})),_e(ce)}),ce.addEventListener("message",Re=>{const Pe=de(Re);if(!Pe||typeof Pe.type!="string")return;const Ce=typeof Pe.workspaceId=="string"?Pe.workspaceId.trim():A;if(!(!Ce||Ce!==A)){if(Pe.type==="taskforce:update"){O({type:"taskforce:update",workspaceId:A,eventId:typeof Pe.eventId=="string"?Pe.eventId.trim():void 0});return}if(Pe.type==="taskforce:mutation"){const De=B.current.process({eventId:Pe.eventId,serverEpoch:Pe.serverEpoch,seq:Pe.seq});if(!De.accepted){$(),De.shouldRecover&&(C.current="",x.current||(x.current=!0,O({type:"taskforce:replay-gap",workspaceId:A})));return}ge(Pe),$(),O({type:Pe.type,workspaceId:A,eventId:typeof Pe.eventId=="string"?Pe.eventId.trim():void 0});return}if(Pe.type==="taskforce:replay"){const De=Array.isArray(Pe.events)?Pe.events:[];let U=0;for(const I of De)B.current.process({eventId:I.eventId,serverEpoch:I.serverEpoch,seq:I.seq}).accepted&&(U+=1,ge(I));x.current=!1,$(),(U>0||Pe.truncated===!0)&&O({type:"taskforce:replay",workspaceId:A}),Pe.truncated===!0&&_e(ce);return}if(Pe.type==="taskforce:replay-gap"||Pe.type==="taskforce:replay-reset"){if(C.current="",x.current)return;x.current=!0,O({type:Pe.type,workspaceId:A})}}}),ce.addEventListener("close",Re=>{if(g.current===ce&&(g.current=null),!ue&&t){const Pe=Number(Re?.code||0),Ce=String(Re?.reason||"").trim();console.warn(`[Taskforce] Realtime socket closed workspace=${A} user=${String(k||"anonymous").trim()||"anonymous"} code=${Pe}${Ce?` reason=${Ce}`:""}`)}je()}),ce.addEventListener("error",()=>{try{ce.close()}catch{}})};return!t||!A||!K?(h("degraded-fallback"),pe(),X(),()=>{pe(),X()}):(h("reconnecting"),oe(),()=>{ue=!0,pe(),W.current!==null&&(window.clearTimeout(W.current),W.current=null),V.current=null,X()})},[t,A,K,o,l,i,d,k]),{connectionState:S,telemetry:ve}}const $p="taskforce:context-assets-mutated";function UO(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent($p,{detail:e}))}const Up="taskforce:ai-profiles-mutated";function zO(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Up,{detail:e}))}const gw=4,Bu=100;function sd(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>=gw)return"[MaxDepth]";if(typeof e=="function"||typeof e=="symbol"||typeof e>"u")return String(e);if(Array.isArray(e))return e.slice(0,Bu).map(s=>sd(s,t+1,n));if(e instanceof Set)return Array.from(e.values()).slice(0,Bu).map(s=>sd(s,t+1,n));if(e instanceof Map){const s={};for(const[o,l]of Array.from(e.entries()).slice(0,Bu))s[String(o)]=sd(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,Bu))s[o]=sd(l,t+1,n);return n.delete(e),s}return String(e)}function Im(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return sd(e,0,new WeakSet)}function yw(e){const t=Im(e);if(!t)return"null";try{return JSON.stringify(t)}catch{return"[UnserializableSyncEventDetails]"}}const Qg="taskforce.userGlobalSyncMeta.v1",kw="taskforce.syncDebug.v1",vw=12e4,Xg="taskforce.syncWatermarks.v3",Sw=300*1e3,gh="Another local window is already syncing this workspace. Wait a few seconds, or press Repair in that window.";function si(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function ww(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(kw)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function Un(e,t){if(!ww())return;console.info("[Taskforce Sync]",e,t&&typeof t=="object"?t:{})}function bw(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:tl(e?.avatarUrl??e?.avatar_url),avatarSourceUrl:tl(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:Wr(e?.avatarUpdatedAt??e?.avatar_updated_at),description:ln(e?.description),role:ln(e?.role),provider:ln(e?.provider),model:ln(e?.model),surfaceType:Kg(e?.surfaceType??e?.surface_type),seatScope:Zg(e?.seatScope??e?.seat_scope),providerMetadata:t&&typeof t=="object"&&!Array.isArray(t)?t:null,archivedAt:Wr(e?.archivedAt??e?.archived_at),archivedBy:lm(e?.archivedBy??e?.archived_by),archivedReason:ln(e?.archivedReason??e?.archived_reason),mergedIntoProfileId:lm(e?.mergedIntoProfileId??e?.merged_into_profile_id),rosterStateUpdatedAt:Wr(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:Wr(e?.lastActiveAt??e?.last_active_at)}}function yh(){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 _w(e){if(!(typeof window>"u"))try{window.localStorage.setItem(Qg,JSON.stringify(e))}catch{}}function Cw(e){try{return JSON.stringify(e&&typeof e=="object"?e:null)}catch{return"null"}}function Aw(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 Wu(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 ey(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 ty(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 kh(e,t){if(typeof window>"u")return null;try{const n=`${Xg}.${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:ty(o,t)}catch{return null}}function vh(e,t){if(typeof window>"u")return!1;try{const n=`${Xg}.${e}`;return window.localStorage.setItem(n,JSON.stringify({v:11,savedAt:new Date().toISOString(),...ey(t)})),!0}catch{return!1}}function xw({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 _=async(x,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:x==="handshake"?"handshake":x,status:"error",statusCode:W,errorMessage:V}),y(!0),k(!1),await S()};return{handleSyncAuthFailure:_,ensureWorkspaceSyncReady:async()=>{if(!si(e)){const V="Workspace sync blocked: local workspace ID is unresolved.";return i(V),d(new Date().toISOString()),l(V),o("error"),!1}const x=await h();if(x.success)return!0;if(x.statusCode===401)return await _("handshake",401),!1;const W=x.error||"Workspace sync handshake failed.";return i(W),d(new Date().toISOString()),l(W),o("error"),m(e,{eventType:"handshake",status:"error",statusCode:x.statusCode,errorMessage:W}),x.transient||Ws(x.statusCode)?g(x.retryAfterMs):(t==="active"||t==="attach-cloud"||t==="provision-local")&&v({phase:"error",lastErrorMessage:W}),!1}}}function Iw({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 Tw({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<vw)return;const C=`Workspace sync ${n==="attach-cloud"?"initial cloud pull":"initial cloud upload"} stalled. Press Repair to restart sync for this workspace.`;d(C),m(new Date().toISOString()),y("error"),k(C),S(!1),h({phase:"error",lastErrorMessage:C}),Un("workspace_sync_bootstrap_timeout",{workspaceId:e,phase:n})},1e4);return()=>window.clearInterval(g)}function Rw(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 gf={allowed:!0};function Jn(e,t){return{allowed:!1,reason:e,retainPendingSignature:t?.retainPendingSignature===!0}}function yf(e,t){return e.cloudAuthConfigured?e.runtimeMode!=="local"?Jn("runtime-not-local"):e.workspaceCloudSyncEnabled?(t?.requireValidWorkspace??!0)&&!si(e.currentWorkspaceId)?Jn("invalid-workspace"):null:Jn("sync-disabled"):Jn("cloud-auth-unconfigured")}function zp(e){const t=yf(e);return t||(e.repairModeActive&&!e.repairModeBypass?Jn("repair-active",{retainPendingSignature:!0}):e.workspaceSyncPhase==="attach-cloud"?Jn("attach-cloud",{retainPendingSignature:!0}):e.isAuthenticated?e.pushInFlight?Jn("push-in-flight",{retainPendingSignature:!0}):e.pullInFlight?Jn("pull-in-flight",{retainPendingSignature:!0}):gf:Jn("auth-required"))}function Hp(e){const t=yf(e);return t||(e.repairModeActive&&!e.repairModeBypass?Jn("repair-active"):e.workspaceSyncPhase==="provision-local"?Jn("provision-local"):e.retryPending?Jn("retry-pending"):e.isAuthenticated?e.pullInFlight?Jn("pull-in-flight"):e.pushInFlight?Jn("push-in-flight"):gf:Jn("auth-required"))}function Gp(e){const t=yf(e,{requireValidWorkspace:!1});return t||(e.isAuthenticated?gf:Jn("auth-required"))}function jw(e){return Jn("lease-held",{retainPendingSignature:e==="push"})}function _d(e){return e.cloudAuthConfigured&&e.runtimeMode==="local"&&e.workspaceCloudSyncEnabled&&e.authSessionResolved}function Nw({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 Pw(e){return _d(e)&&e.workspaceSyncPhase!=="attach-cloud"&&e.workspaceSyncReferenceSnapshotsReady}function Mw(e){return _d(e)&&e.workspaceSyncPhase==="active"&&e.workspaceSyncReferenceSnapshotsReady}function Ew(e){return _d(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 Dw(e){return _d(e)&&e.isAuthenticated&&e.workspaceSyncPhase==="active"}function Lw(e){return _d(e)&&e.isAuthenticated&&e.workspaceSyncPhase!=="provision-local"&&e.workspaceSyncPhase!=="attach-cloud"&&!e.alreadyRan}function Bw({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 _=v?.queueRef,C=Number.isFinite(v?.maxQueueSize)?Math.max(1,Number(v?.maxQueueSize)):2048,x=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),_&&_.current.push(V),x!==null&&window.setTimeout(()=>{i.current.delete(V)},x))}if(_)for(;_.current.length>C;){const W=_.current.shift();W&&i.current.delete(W)}},clearRealtimePullDebounce:()=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null)}}}function ay(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 Ww(e){ay(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 Fw({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:_,workspaceLastPushedTaskChangeKeysRef:C,workspaceLastPushedInitiativeIdsRef:x,workspaceLastPushedInitiativeWatermarksRef:W,workspaceLastPushedWorkstreamIdsRef:V,workspaceLastPushedWorkstreamWatermarksRef:B,workspaceLastPushedAiProfileIdsRef:J,workspaceLastPushedAiProfileWatermarksRef:me,workspaceLastPushedAiProfileChangeKeysRef:ve,workspaceLastPushedDocumentPathsRef:se,workspaceLastPushedDocumentWatermarksRef:A,workspaceLastPushedAssetPathsRef:K,workspaceLastPushedAssetWatermarksRef:ue,workspaceLastPushedDocumentReviewSessionIdsRef:pe,workspaceLastPushedDocumentReviewSessionWatermarksRef:X,workspaceLastPushedDocumentReviewCommentIdsRef:M,workspaceLastPushedDocumentReviewCommentWatermarksRef:O,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:de,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:ge,workspaceLastPushedTaskEventWatermarksRef:$,workspaceBaselineResetReasonRef:_e,bootstrapPhaseStartedAtRef:je,bootstrapLastProgressAtRef:oe,acquireWorkspaceSyncLease:ce,releaseWorkspaceSyncLease:Re,forceClearWorkspaceSyncLease:Pe,clearWorkspaceRetry:Ce,clearWorkspaceIssue:De,reportWorkspaceWindowContention:U,reportSyncEvent:I,persistWorkspaceSyncPatch:b,persistWorkspaceSyncWatermarksSnapshotBestEffort:R,buildWorkspaceSyncSignature:D,pullWorkspaceChangesFromCloud:te,pushWorkspaceChangesToCloud:N,cloudAuthConfigured:G,runtimeMode:be,isAuthenticated:z,checkAuthSession:ie}){const ee=n==="provision-local"?"push":n==="attach-cloud"?"bootstrap":"pull";return{retryWorkspaceCloudSync:async()=>{Ce();let Se=Gp({cloudAuthConfigured:G,runtimeMode:be,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:z});if(!Se.allowed&&Se.reason==="auth-required"){if(!await ie())return I(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=Gp({cloudAuthConfigured:G,runtimeMode:be,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:!0})}if(!Se.allowed)return I(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 Ee=D();return Ee?N(Ee,{forceAllAiProfiles:!0}):!1}const we=await te();if(n==="attach-cloud")return we;const Te=D();if(Te){g.current=Te;const Ee=await N(Te,{forceAllAiProfiles:i.current===!0});return we||Ee}return we},resetWorkspaceSyncCursorAndPull:async()=>{if(!await ce(e,"repair")&&(Pe(e),!await ce(e,"repair"))){U("repair"),I(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=Rw({workspaceSyncPhase:n,lastBootstrapPhase:o.current,workspaceLastPullAt:s}),Te=we==="provision-local",Ee=we==="active";Ce(),De();try{if(!t){I(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(je.current=null,oe.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?Ww({workspaceLastPushedWatermarksRef:_,workspaceLastPushedTaskChangeKeysRef:C,workspaceLastPushedInitiativeIdsRef:x,workspaceLastPushedInitiativeWatermarksRef:W,workspaceLastPushedWorkstreamIdsRef:V,workspaceLastPushedWorkstreamWatermarksRef:B,workspaceLastPushedAiProfileIdsRef:J,workspaceLastPushedAiProfileWatermarksRef:me,workspaceLastPushedAiProfileChangeKeysRef:ve,workspaceLastPushedDocumentPathsRef:se,workspaceLastPushedDocumentWatermarksRef:A,workspaceLastPushedAssetPathsRef:K,workspaceLastPushedAssetWatermarksRef:ue,workspaceLastPushedDocumentReviewSessionIdsRef:pe,workspaceLastPushedDocumentReviewSessionWatermarksRef:X,workspaceLastPushedDocumentReviewCommentIdsRef:M,workspaceLastPushedDocumentReviewCommentWatermarksRef:O,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:de,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:ge,workspaceLastPushedTaskEventWatermarksRef:$,workspaceBaselineResetReasonRef:_e}):Ee&&ay({workspaceLastPushedWatermarksRef:_,workspaceLastPushedTaskChangeKeysRef:C,workspaceLastPushedInitiativeIdsRef:x,workspaceLastPushedInitiativeWatermarksRef:W,workspaceLastPushedWorkstreamIdsRef:V,workspaceLastPushedWorkstreamWatermarksRef:B,workspaceLastPushedAiProfileIdsRef:J,workspaceLastPushedAiProfileWatermarksRef:me,workspaceLastPushedAiProfileChangeKeysRef:ve,workspaceLastPushedDocumentPathsRef:se,workspaceLastPushedDocumentWatermarksRef:A,workspaceLastPushedAssetPathsRef:K,workspaceLastPushedAssetWatermarksRef:ue,workspaceBaselineResetReasonRef:_e}),R(),l.current=!0,I(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,startupFullReconcileCompletedAt:null,lastErrorMessage:null}),we==="provision-local"){const dt=D();if(!dt)return;await N(dt,{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 N(gt,{forceAllAiProfiles:!0,repairMode:!0})}finally{l.current=!1,Re(e)}}}}function Ow({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 $w({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 Uw({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:_,persistWorkspaceSyncPatchBestEffort:C,persistWorkspaceSyncWatermarksSnapshotBestEffort:x,reportSyncEvent:W,acquireWorkspaceSyncLease:V,releaseWorkspaceSyncLease:B,reportWorkspaceWindowContention:J,refreshWorkspaceSyncMarkdownDocumentsSnapshot:me,refreshWorkspaceSyncAiProfilesSnapshot:ve,refreshWorkspaceSyncAssetsSnapshot:se,refreshWorkspaceSyncPlanningEntitiesSnapshot:A,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:K,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:ue,refreshLocalWorkspaceTaskCollections:pe,buildWorkspaceSyncPayload:X,buildWorkspaceSyncSignature:M,seedWorkspaceSnapshotPushBaseline:O,shouldSuppressAttachBootstrapPush:de,recordSuppressedEventIds:ge,workspaceRepairModeRef:$,workspaceForceFullAiProfilePushRef:_e,workspacePushInFlightRef:je,workspacePullInFlightRef:oe,workspacePendingPushReplayRef:ce,workspaceLastPushedSignatureRef:Re,workspacePendingSignatureRef:Pe,workspaceLastPushedTaskIdsRef:Ce,workspaceDeletedTaskIdsRef:De,workspaceDeletedTaskWatermarksRef:U,workspacePullCursorRef:I,workspaceLastPushedWatermarksRef:b,workspaceLastPushedTaskChangeKeysRef:R,workspaceLastPushedInitiativeIdsRef:D,workspaceLastPushedInitiativeWatermarksRef:te,workspaceLastPushedWorkstreamIdsRef:N,workspaceLastPushedWorkstreamWatermarksRef:G,workspaceLastPushedAiProfileIdsRef:be,workspaceLastPushedAiProfileWatermarksRef:z,workspaceLastPushedAiProfileChangeKeysRef:ie,workspaceLastPushedDocumentPathsRef:ee,workspaceLastPushedDocumentWatermarksRef:Q,workspaceLastPushedAssetPathsRef:q,workspaceLastPushedAssetWatermarksRef:Se,workspaceLastPushedDocumentReviewSessionIdsRef:we,workspaceLastPushedDocumentReviewSessionWatermarksRef:Te,workspaceLastPushedDocumentReviewCommentIdsRef:Ee,workspaceLastPushedDocumentReviewCommentWatermarksRef:nt,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:gt,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:dt,workspaceLastPushedTaskEventWatermarksRef:St,workspaceBaselineResetReasonRef:Ze,workspaceCaptureAttachBootstrapBaselineRef:Ct,workspaceStartupFullReconcileRanRef:ut,workspaceFullReconcileInFlightRef:Xe,bootstrapLastProgressAtRef:lt,realtimeSuppressedEventQueueRef:re,setWorkspaceSyncBusy:it,setUserGlobalSyncStatus:Ye,setUserGlobalSyncError:jt,setWorkspaceLastErrorMessage:kt,setWorkspaceLastErrorAt:It,setWorkspaceLastPullAt:Ft,setWorkspaceLastPushAt:Nt,setWorkspaceSyncPendingChanges:Fe,setTasks:et,setArchivedTasks:Ge}){const Qe=async(ot,ae)=>{let Ve=zp({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:n,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:l,repairModeActive:$.current===!0,repairModeBypass:ae?.repairMode===!0,pushInFlight:je.current,pullInFlight:oe.current});if(!Ve.allowed&&Ve.reason==="auth-required"){if(!await i())return!1;Ve=zp({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:n,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:!0,repairModeActive:$.current===!0,repairModeBypass:ae?.repairMode===!0,pushInFlight:je.current,pullInFlight:oe.current})}if(!Ve.allowed)return Ve.retainPendingSignature&&(Pe.current=ot),!1;if(de(ot))return!1;if(!await V(s,"push")){const c=jw("push");return!c.allowed&&c.retainPendingSignature&&(Pe.current=ot),J("push"),!1}je.current=!0,it(!0),Ye("syncing"),jt(null);const Ot=Date.now(),Dt=ae?.forceAllAiProfiles===!0||_e.current===!0,Ue=ae?.repairMode===!0||$.current===!0;let Et=null,vt=!1,E=ot;try{if(await me(),await ve(),await se(),await A(),await K(),!await y())return!1;const Y=M();if(Y&&(E=Y),de(E))return!1;const ye=ce.current,qe=ye&&ye.signature===E&&(!Dt||ye.forceAllAiProfiles===!0)&&(!Ue||ye.repairMode===!0)?ye:null,Ke=qe?.payload||X({forceAllAiProfiles:Dt});Et=Ke,vt=qe!==null,Fe(Ke.changes.length);const Ne=await RS({resolveCloudAuthUrl:d,workspaceId:s,payload:Ke,ensureCloudWorkspaceReadyForSync:m,repairMode:qe?.repairMode??Ue});if(!Ne.success){if(Ne.status===401)return ce.current=null,await k("push",401),!1;let Pt=Ne.error?`Workspace sync push failed (${Ne.status||0}): ${Ne.error}`:`Workspace sync push failed (${Ne.status||0})`;return Ne.status===413&&(Pt="Workspace sync failed because the payload is too large. This usually happens when one or more attachments exceed the project limit."),Ye("error"),jt(Pt),kt(Pt),It(new Date().toISOString()),W(s,{eventType:"push",status:"error",statusCode:Ne.status,errorMessage:Pt,requestMs:Ne.requestMs,details:{payloadDiagnostics:Ke.deltaDiagnostics||null,replayedPayload:vt}}),Pe.current=E,Ne.transient||Ws(Ne.status)?(ce.current={signature:E,payload:Ke,forceAllAiProfiles:qe?.forceAllAiProfiles??Dt,repairMode:qe?.repairMode??Ue},v(Ne.retryAfterMs)):(ce.current=null,o==="active"&&_({phase:"error",lastErrorMessage:Pt})),!1}ce.current=null,Re.current=E,Ce.current=Ne.currentTaskIds,b.current=Ne.currentTaskWatermarks?new Map(Ne.currentTaskWatermarks):new Map(b.current),R.current=Ne.currentTaskChangeKeys?new Map(Ne.currentTaskChangeKeys):new Map(R.current),D.current=new Set(Ne.currentInitiativeIds),te.current=new Map(Ne.currentInitiativeWatermarks),N.current=new Set(Ne.currentWorkstreamIds),G.current=new Map(Ne.currentWorkstreamWatermarks),be.current=new Set(Ne.currentAiProfileIds),z.current=new Map(Ne.currentAiProfileWatermarks),ie.current=Ne.currentAiProfileChangeKeys?new Map(Ne.currentAiProfileChangeKeys):new Map(ie.current),ee.current=new Set(Ne.currentDocumentPaths),Q.current=new Map(Ne.currentDocumentWatermarks),q.current=new Set(Ne.currentAssetPaths),Se.current=new Map(Ne.currentAssetWatermarks),we.current=new Set(Ne.currentDocumentReviewSessionIds),Te.current=new Map(Ne.currentDocumentReviewSessionWatermarks),Ee.current=new Set(Ne.currentDocumentReviewCommentIds),nt.current=new Map(Ne.currentDocumentReviewCommentWatermarks),gt.current=new Set(Ne.currentAnnotatedAttachmentSessionIds),dt.current=new Map(Ne.currentAnnotatedAttachmentSessionWatermarks),St.current=new Map(Ne.currentTaskEventWatermarks),Dt&&(_e.current=!1);for(const[Pt,Tt]of Ne.pushedWatermarks)b.current.set(Pt,Tt);for(const[Pt,Tt]of Ne.pushedTaskChangeKeys||new Map)R.current.set(Pt,Tt);if(Ne.deleteTaskIds.size>0)for(const Pt of Ne.deleteTaskIds)De.current.delete(Pt),U.current.delete(Pt),b.current.delete(Pt),R.current.delete(Pt);const Vt=await x();if(Ze.current=Vt?null:"storage-write-failed",Array.isArray(Ne.emittedEventIds)&&Ne.emittedEventIds.length>0&&ge(Ne.emittedEventIds,{queueRef:re,maxQueueSize:2048}),Array.isArray(Ne.appliedTaskUpserts)&&Ne.appliedTaskUpserts.length>0){const Pt=await Fp(s,Ne.appliedTaskUpserts.map(Tt=>({op:"upsert",archived:Tt.archived===!0,task:Tt.task})));if(Pt.ok){for(const Tt of Ne.appliedTaskUpserts){const Lt=String(Tt?.task?.id||"").trim(),Ht=String(Tt?.task?.updatedAt||Tt?.task?.createdAt||"").trim();!Lt||!Ht||b.current.set(Lt,Ht)}try{await pe()}catch{Un("push_local_task_refresh_failed",{workspaceId:s,taskCount:Ne.appliedTaskUpserts.length})}}else Un("push_local_task_apply_failed",{workspaceId:s,taskCount:Ne.appliedTaskUpserts.length,status:Pt.status,failures:Pt.failures})}S(),h();const qt=Ne.syncedAt||new Date().toISOString();return Re.current=M(),Nt(qt),Fe(0),Ye("idle"),_({phase:"active",lastPushAt:qt,lastSyncedAt:qt,lastErrorMessage:null}),W(s,{eventType:o==="provision-local"?"bootstrap":"push",status:"success",changeCount:Ne.changeCount,requestMs:Ne.requestMs,details:{payloadDiagnostics:Ke.deltaDiagnostics||null,replayedPayload:vt}}),!0}catch(c){const Y="Workspace sync push failed.";return Ye("error"),jt(Y),kt(Y),It(new Date().toISOString()),Pe.current=E,Et&&(ce.current={signature:E,payload:Et,forceAllAiProfiles:Dt,repairMode:Ue}),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{je.current=!1,it(oe.current),B(s);const c=Pe.current,Y=M();c&&Y&&Y!==Re.current&&!oe.current&&!g()&&(Pe.current="",window.setTimeout(()=>{Qe(Y)},120))}},yt=async ot=>{let ae=Hp({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:n,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:l,repairModeActive:$.current===!0,repairModeBypass:ot?.repairMode===!0,retryPending:g(),pullInFlight:oe.current,pushInFlight:je.current});if(!ae.allowed&&ae.reason==="auth-required"){if(!await i())return!1;ae=Hp({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:n,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:!0,repairModeActive:$.current===!0,repairModeBypass:ot?.repairMode===!0,retryPending:g(),pullInFlight:oe.current,pushInFlight:je.current})}if(!ae.allowed)return!1;if(!await V(s,"pull"))return J("pull"),!1;oe.current=!0,it(!0),Ye("syncing"),jt(null);const bt=Date.now();try{if(!await y())return!1;const Dt=Ow({workspaceSyncPhase:o,forceCursorNull:ot?.forceCursorNull===!0,currentCursor:I.current}),Ue=await jS({resolveCloudAuthUrl:d,workspaceId:s,cursor:Dt.cursor,bootstrap:Dt.bootstrap,ensureCloudWorkspaceReadyForSync:m,maxPages:20,repairMode:ot?.repairMode===!0||$.current===!0,onPagePulled:()=>{lt.current=Date.now()},onChangesApplied:()=>{lt.current=Date.now()}});if(!Ue.success){if(Ue.kind==="pull_http"&&Ue.status===401)return await k("pull",401),!1;if(Ue.kind==="apply_auth")return await k("apply",401),!1;if(Ue.kind==="pull_http"&&Ue.errorCode==="INVALID_SYNC_CURSOR"){const ye="Saved sync cursor was invalid. Clearing it and retrying from the beginning.";return I.current=null,_({pullCursor:null}),Ye("error"),jt(ye),kt(ye),It(new Date().toISOString()),W(s,{eventType:"pull",status:"error",statusCode:Ue.status,errorMessage:ye,requestMs:Ue.pullRequestMs,details:{recovery:"cursor-reset",...Ue.serverDiagnostics?{serverPullDiagnostics:Ue.serverDiagnostics}:{}}}),v(150),!1}let Y=Ue.kind==="apply_payload"||Ue.kind==="apply_all_candidates"||Ue.kind==="exception"?String(Ue.error||"Workspace sync apply failed."):`Workspace sync pull failed (${Ue.status||0})`;return Ue.status===413&&(Y="Local sync failed because the downloaded payload is too large. This usually happens when the workspace contains massive attachments."),Ye("error"),jt(Y),kt(Y),It(new Date().toISOString()),W(s,{eventType:Ue.kind?.startsWith("apply")?"apply":"pull",status:"error",statusCode:Ue.status,errorMessage:Y,requestMs:Ue.pullRequestMs,details:{pages:Ue.pages,applyMs:Ue.applyMs,...Ue.serverDiagnostics?{serverPullDiagnostics:Ue.serverDiagnostics}:{}}}),Ue.transient||Ue.hasTransientApplyFailure||Ws(Ue.status)?v(Ue.retryAfterMs):_({phase:"error",lastErrorMessage:Y}),!1}Array.isArray(Ue.emittedEventIds)&&ge(Ue.emittedEventIds,{ttlMs:6e4}),Ue.pulledDeleteTaskIds.size>0&&(et(Y=>Y.filter(ye=>!Ue.pulledDeleteTaskIds.has(String(ye.id||"")))),Ge(Y=>Y.filter(ye=>!Ue.pulledDeleteTaskIds.has(String(ye.id||"")))));const Et=Array.isArray(Ue.documentDecryptFailures)?Ue.documentDecryptFailures.filter(Y=>String(Y||"").trim().length>0):[];if(Et.length>0&&Un("pull_document_decrypt_failures",{workspaceId:s,failureCount:Et.length}),I.current=Ue.cursor||null,Ue.appliedChanges>0&&(Ue.pulledActiveUpserts||Ue.pulledArchivedUpserts||Ue.pulledTaskEventUpserts||Ue.pulledPlanningUpserts))try{await pe()}catch{Un("pull_local_refresh_failed",{workspaceId:s,appliedChanges:Ue.appliedChanges})}S(),h();const vt=Ue.syncedAt||new Date().toISOString();Ft(vt),Fe(0),Ye("idle");const E=$w({workspaceSyncPhase:o,forceCursorNull:ot?.forceCursorNull===!0,startupFullReconcileRan:ut.current,pendingSignature:Pe.current,fallbackSignature:M(),lastPushedSignature:Re.current});if(E.shouldCaptureAttachBootstrapBaseline&&(Ct.current=!0),E.shouldClearPendingSignature&&(Pe.current="",ce.current=null),await C({phase:"active",pullCursor:I.current,lastPullAt:vt,lastSyncedAt:vt,...ot?.forceCursorNull===!0?{startupFullReconcileCompletedAt:vt}:{},lastErrorMessage:null}),W(s,{eventType:E.successEventType,status:"success",changeCount:Ue.appliedChanges,requestMs:Ue.pullRequestMs,details:{pages:Ue.pages,applyMs:Ue.applyMs,...Ue.serverDiagnostics?{serverPullDiagnostics:Ue.serverDiagnostics}:{}}}),E.shouldRefreshReferenceSnapshots&&(await me(),await se(),await K(),await ue()),E.shouldSeedWorkspaceSnapshotPushBaseline&&O(),E.shouldRefreshReferenceSnapshots||E.shouldSeedWorkspaceSnapshotPushBaseline)return!0;if(E.shouldScheduleStartupFullReconcile&&(ut.current=!0,window.setTimeout(()=>{Xe.current||(Xe.current=!0,yt({forceCursorNull:!0}).finally(()=>{Xe.current=!1}))},250)),ot?.forceCursorNull===!0&&ot?.repairMode!==!0&&o==="active"){const Y=M();Y&&(_e.current=!0,Pe.current=Y,window.setTimeout(()=>{Qe(Y,{forceAllAiProfiles:!0})},120))}else if(E.deferredPushSignature){const Y=E.deferredPushSignature;window.setTimeout(()=>{Qe(Y)},120)}return!0}catch(Ot){const Dt=String(Ot?.message||"").trim(),Ue=Dt?`Workspace sync pull failed. ${Dt}`:"Workspace sync pull failed.";return Ye("error"),jt(Ue),kt(Ue),It(new Date().toISOString()),v(),W(s,{eventType:"pull",status:"error",errorMessage:Ue,requestMs:Date.now()-bt}),Un("pull_failed_exception",{workspaceId:s,elapsedMs:Date.now()-bt,error:Dt||null}),!1}finally{oe.current=!1,it(je.current),B(s)}};return{pushWorkspaceChangesToCloud:Qe,pullWorkspaceChangesFromCloud:yt}}const Sh={documents:!1,aiProfiles:!1,assets:!1,documentReviewSessions:!1,annotatedAttachmentSessions:!1};function zw(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:_,taxonomies:C,taxonomyState:x,setupState:W,globalTheme:V,locale:B,globalWeekStartsOn:J,themeUseGlobalDefault:me,setTasks:ve,setArchivedTasks:se,setAuthBlocked:A,setIsAuthenticated:K,checkAuthSession:ue,setGlobalTheme:pe,setCurrentTheme:X,setSetupState:M,setLocale:O,setGlobalWeekStartsOn:de,fetchPlanningEntities:ge}=e,$=r.useMemo(()=>Cw(x),[x]),[_e,je]=r.useState("disconnected"),[oe,ce]=r.useState(null),[Re,Pe]=r.useState(null),[Ce,De]=r.useState(null),[U,I]=r.useState(null),[b,R]=r.useState(null),[D,te]=r.useState(!1),[N,G]=r.useState("idle"),[be,z]=r.useState(null),[ie,ee]=r.useState(!1),[Q,q]=r.useState(0),[Se,we]=r.useState([]),[Te,Ee]=r.useState(""),nt=r.useRef(S||[]),gt=r.useRef(h||[]),dt=r.useRef(v||[]),St=r.useRef(_||[]),Ze=r.useRef([]),Ct=r.useRef(new Set),[ut,Xe]=r.useState([]),[lt,re]=r.useState(""),[it,Ye]=r.useState(null),[jt,kt]=r.useState(null),[It,Ft]=r.useState(0),[Nt,Fe]=r.useState(null),et=r.useRef([]),[Ge,Qe]=r.useState([]),[yt,ot]=r.useState(""),ae=r.useRef([]),Ve=r.useRef(new Set),[bt,Ot]=r.useState([]),[Dt,Ue]=r.useState(""),Et=r.useRef([]),vt=r.useRef([]),[E,c]=r.useState([]),[Y,ye]=r.useState(""),Ie=r.useRef([]),[qe,Ke]=r.useState(Sh),[Ne,Vt]=r.useState("degraded-fallback"),[qt,Pt]=r.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),Tt=r.useRef(!1),Lt=r.useRef(null),Ht=r.useRef("missing-baseline"),sa=r.useRef(0),Kt=r.useRef(!1),Ka=r.useRef(new Set),Oa=r.useRef(""),en=r.useRef(""),ba=r.useRef(""),he=r.useRef(""),ct=r.useRef(""),xe=r.useRef(""),Rt=r.useRef(!1),tt=r.useRef(null),Gt=r.useRef(new Set),ga=r.useRef([]),Ea=r.useRef(null),ma=r.useRef(()=>Promise.resolve(!1)),ia=r.useRef(async()=>{}),Mt=r.useRef(null),aa=r.useRef(null),Za=r.useRef("idle"),$t=r.useCallback(()=>{Lt.current!==null&&(window.clearTimeout(Lt.current),Lt.current=null)},[]),Qn=r.useCallback(T=>{if(typeof window>"u")return;$t();const j=Math.max(1,Math.floor(sa.current)+1);sa.current=j;const rt=1500*2**Math.max(0,j-1),Me=Number.isFinite(Number(T))?Math.max(0,Math.floor(Number(T))):0,Le=Math.max(Math.min(12e4,rt),Me);Lt.current=window.setTimeout(()=>{Lt.current=null,ia.current({preferCloudOnFirstSync:!1})},Le)},[$t]),_a=r.useCallback(T=>{Ke(j=>j[T]?j:{...j,[T]:!0})},[]),Qt=Object.values(qe).every(Boolean),{workspaceRetryAt:Or,isWorkspaceRetryPending:ja,workspacePushInFlightRef:tn,workspacePullInFlightRef:Aa,workspaceLastPushedSignatureRef:Jt,workspacePendingSignatureRef:Na,workspaceLastPushedTaskIdsRef:ca,workspaceDeletedTaskIdsRef:vn,workspaceDeletedTaskWatermarksRef:dn,workspacePullCursorRef:Xn,clearWorkspaceRetry:pa,scheduleWorkspaceRetry:Cr,persistWorkspaceSyncPatch:$r,applyWorkspaceSyncPatchLocally:Sn,readWorkspaceSyncStateSnapshot:xa,loadWorkspaceSyncState:Ar,applyWorkspaceSyncStateSnapshot:wn,saveWorkspaceCloudSyncSettings:Pn,acquireWorkspaceSyncLease:an,releaseWorkspaceSyncLease:Ia,forceClearWorkspaceSyncLease:Ur}=fw({currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:te,setWorkspaceSyncPhase:G,setWorkspaceSyncSetupIntent:z,setWorkspaceLastPullAt:Pe,setWorkspaceLastPushAt:De,setWorkspaceLastErrorMessage:R}),_t=r.useCallback(T=>{(T.phase==="attach-cloud"||T.phase==="provision-local")&&(Za.current=T.phase,Mt.current===null&&(Mt.current=Date.now()),aa.current=null),wn(T)},[wn]),bn=r.useRef(new Map),un=r.useRef(new Map),_n=r.useRef(new Set),$a=r.useRef(new Map),Mn=r.useRef(new Set),va=r.useRef(new Map),Ua=r.useRef(new Set),Cn=r.useRef(new Map),la=r.useRef(new Map),En=r.useRef(new Set),Xt=r.useRef(new Map),za=r.useRef(new Set),Ca=r.useRef(new Map),er=r.useRef(new Set),tr=r.useRef(new Map),Da=r.useRef(new Set),na=r.useRef(new Map),fa=r.useRef(new Set),mn=r.useRef(new Map),nn=r.useRef(new Map),pr=r.useCallback(T=>T?(ca.current=new Set(T.taskIds),bn.current=T.taskWatermarks,un.current=T.taskChangeKeys||new Map,_n.current=new Set(Array.from(T.initiativeWatermarks.keys())),$a.current=T.initiativeWatermarks,Mn.current=new Set(Array.from(T.workstreamWatermarks.keys())),va.current=T.workstreamWatermarks,Ua.current=new Set(Array.from(T.aiProfileWatermarks.keys())),Cn.current=T.aiProfileWatermarks,la.current=T.aiProfileChangeKeys||new Map,En.current=new Set(Array.from(T.documentWatermarks.keys())),Xt.current=T.documentWatermarks,za.current=new Set(Array.from(T.assetWatermarks.keys())),Ca.current=T.assetWatermarks,er.current=new Set(Array.from(T.documentReviewSessionWatermarks.keys())),tr.current=T.documentReviewSessionWatermarks,Da.current=new Set(Array.from(T.documentReviewCommentWatermarks.keys())),na.current=T.documentReviewCommentWatermarks,fa.current=new Set(Array.from(T.annotatedAttachmentSessionWatermarks.keys())),mn.current=T.annotatedAttachmentSessionWatermarks,nn.current=T.taskEventWatermarks,Ht.current=null,!0):!1,[ca]),fr=r.useCallback(()=>({taskIds:ca.current,taskWatermarks:bn.current,taskChangeKeys:un.current,initiativeWatermarks:$a.current,workstreamWatermarks:va.current,aiProfileWatermarks:Cn.current,aiProfileChangeKeys:la.current,documentWatermarks:Xt.current,assetWatermarks:Ca.current,documentReviewSessionWatermarks:tr.current,documentReviewCommentWatermarks:na.current,annotatedAttachmentSessionWatermarks:mn.current,taskEventWatermarks:nn.current}),[]),ea=r.useRef(!1),ss=r.useRef(!1),Ha=r.useRef(!1),ar=r.useRef(""),os=r.useRef(!1),pn=3e4,zn=k?3e4:15e3,zr=Math.max(3e4,zn),An=r.useMemo(()=>{const T=Re?Date.parse(Re):NaN,j=Ce?Date.parse(Ce):NaN;return Number.isFinite(T)&&Number.isFinite(j)?T>=j?Re:Ce:Number.isFinite(T)?Re:Number.isFinite(j)?Ce:null},[Re,Ce]),Ga=r.useMemo(()=>Nw({enabled:D,phase:N,busy:ie,retryAt:Or,lastErrorMessage:b}),[D,N,ie,Or,b]),xr=Ga.status,Pa=Ga.summary,Cs=Ga.recommendedAction,rn=r.useCallback(T=>{const j=String(T||"").trim();if(!j)return null;const Me=yh()[j]?.updatedAt;return typeof Me=="string"&&Me.trim().length>0?Me.trim():null},[]),Ir=r.useCallback((T,j)=>{const rt=String(T||"").trim(),Me=String(j||"").trim();if(!rt||!Me)return;const Le=yh();Le[rt]={updatedAt:Me},_w(Le)},[]),hr=r.useCallback(()=>{const T=W?.mode==="operations"?"operations":"core";return{theme:V,operatingMode:T,localization:{locale:B,weekStartsOn:J}}},[V,W?.mode,B,J]),Hr=r.useCallback(async T=>{if(!(!T||typeof T!="object")){Kt.current=!0;try{const j={},rt=Kc(T.theme);if(rt&&(pe(rt),me&&X(rt),j.theme=rt),(T.operatingMode==="core"||T.operatingMode==="operations")&&(M(Me=>Me&&{...Me,mode:T.operatingMode}),j.setup={mode:T.operatingMode}),T.localization&&typeof T.localization=="object"){const Me={};if(typeof T.localization.locale=="string"&&T.localization.locale.trim().length>0){const ne=Lg(T.localization.locale.trim());O(ne)}const Le=String(T.localization.weekStartsOn||"").trim().toLowerCase();(Le==="sunday"||Le==="monday")&&(de(Le),Me.weekStartsOn=Le),Object.keys(Me).length>0&&(j.schedulePreferences=Me)}Object.keys(j).length>0&&await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(j)})}finally{Kt.current=!1}}},[me,pe,X,M,O,de]),fn=r.useCallback(async T=>{const j=T?.preferCloudOnFirstSync!==!1;if(!n)return;if(s!=="local"||!l){$t(),sa.current=0,je("disconnected");return}const rt=String(i||"").trim();if(!rt||rt==="anonymous"){$t(),sa.current=0,je("disconnected");return}if(!Tt.current){je("syncing"),ce(null),Tt.current=!0;try{const Me=await NS({resolveCloudAuthUrl:m,userId:rt,preferCloudOnFirstSync:j,getLocalUpdatedAt:rn,buildLocalSettings:hr,applyRemoteSettings:Hr});if(!Me.success){je("error"),Me.transient?(ce(Me.error||"Sync failed temporarily. Retrying automatically."),Qn(Me.retryAfterMs)):($t(),sa.current=0,ce(Me.error||"Sync failed."));return}$t(),sa.current=0;const Le=String(Me.updatedAt||"").trim()||new Date().toISOString();Ir(rt,Le),je("idle"),ce(null),Ka.current.add(rt),Me.mode==="pulled"&&(Oa.current="")}catch{je("error"),ce("Sync failed temporarily. Retrying automatically."),Qn()}finally{Tt.current=!1}}},[n,s,l,i,m,rn,hr,Hr,Ir,$t,Qn]);r.useEffect(()=>{ia.current=fn},[fn]),r.useEffect(()=>()=>{$t()},[$t]);const gr=r.useCallback(()=>{R(null),I(null)},[]),xn=r.useCallback(T=>{R(gh),I(new Date().toISOString()),je("error"),ce(gh),Un("workspace_sync_window_contention",{workspaceId:t,operation:T})},[t]),Dn=r.useCallback(async T=>{try{return await $r(T)}catch{return Sn(T)}},[Sn,$r]),nr=r.useCallback(T=>{Dn(T).catch(()=>{})},[Dn]),is=r.useCallback(()=>{const T={...fr(),taxonomyStateFingerprint:$},j=vh(t,T);return Dn({pushBaseline:ey(T)}).catch(()=>{}),j},[fr,t,Dn,$]);r.useEffect(()=>{en.current="",ba.current="",he.current="",ct.current="",xe.current="",ar.current="",os.current=!1,we([]),Ee(""),et.current=[],Xe([]),re(""),Qe([]),ot(""),Et.current=[],vt.current=[],Ot([]),Ue(""),Ie.current=[],c([]),ye(""),Ke(Sh),R(null),I(null),q(0),Gt.current=new Set,ga.current=[],bn.current=new Map,un.current=new Map,_n.current=new Set,$a.current=new Map,Mn.current=new Set,va.current=new Map,Ua.current=new Set,Cn.current=new Map,la.current=new Map,En.current=new Set,Xt.current=new Map,za.current=new Set,Ca.current=new Map,er.current=new Set,tr.current=new Map,Da.current=new Set,na.current=new Map,fa.current=new Set,mn.current=new Map,nn.current=new Map,ss.current=!!xa().startupFullReconcileCompletedAt,La.current=!1;const T=kh(t,$);pr(T)||(Ht.current="missing-baseline")},[t,pr,$]),r.useEffect(()=>{if(Ht.current!=="missing-baseline")return;const T=kh(t,$);if(pr(T))return;const j=ty(xa().pushBaseline,$);pr(j)&&vh(t,{...fr(),taxonomyStateFingerprint:$})},[fr,t,pr,xa,$,D,N]),r.useEffect(()=>{ss.current=!!xa().startupFullReconcileCompletedAt},[t,xa,Re,N]);const Gr=r.useCallback(T=>{Cr(()=>ma.current(),{minDelayMs:T})},[Cr]);r.useEffect(()=>{Iw({workspaceSyncPhase:N,lastBootstrapPhaseRef:Za,bootstrapPhaseStartedAtRef:Mt,bootstrapLastProgressAtRef:aa})},[N]),r.useEffect(()=>Tw({currentWorkspaceId:t,workspaceCloudSyncEnabled:D,workspaceSyncPhase:N,workspacePullInFlightRef:Aa,workspacePushInFlightRef:tn,bootstrapPhaseStartedAtRef:Mt,bootstrapLastProgressAtRef:aa,setWorkspaceLastErrorMessage:T=>R(T),setWorkspaceLastErrorAt:T=>I(T),setUserGlobalSyncStatus:je,setUserGlobalSyncError:T=>ce(T),setWorkspaceSyncBusy:ee,persistWorkspaceSyncPatchSafely:nr}),[t,D,N,nr,Aa,tn]);const Je=r.useCallback(async()=>IS({cloudAuthConfigured:n,runtimeMode:s,isAuthenticated:l,resolveCloudAuthUrl:m,workspaceId:t,workspaceName:d||t,allowProvisionOnMismatch:N!=="attach-cloud"}),[n,s,l,m,t,d,N]);r.useEffect(()=>{nt.current=S||[]},[S]),r.useEffect(()=>{gt.current=h||[]},[h]),r.useEffect(()=>{vn.current=new Set((g||[]).map(T=>String(T?.taskId||"").trim()).filter(T=>T.length>0)),dn.current=new Map((g||[]).map(T=>[String(T?.taskId||"").trim(),String(T?.deletedAt||"").trim()]).filter(([T,j])=>T.length>0&&Number.isFinite(Date.parse(j))))},[g,vn,dn]),r.useEffect(()=>{dt.current=v||[]},[v]),r.useEffect(()=>{St.current=_||[]},[_]);const Ut=r.useRef(!1),La=r.useRef(!1),da=r.useCallback(T=>{const j=T?.forceAllAiProfiles===!0;return ew({tasks:nt.current,archivedTasks:gt.current,taskEvents:Wu(nt.current,gt.current,dt.current,St.current),lastPushedTaskIds:ca.current,pendingDeletedTaskIds:vn.current,pendingDeletedTaskWatermarks:dn.current,initiatives:dt.current,workstreams:St.current,taxonomies:C||[],taxonomyState:x,lastPushedInitiativeIds:_n.current,lastPushedInitiativeWatermarks:$a.current,lastPushedWorkstreamIds:Mn.current,lastPushedWorkstreamWatermarks:va.current,aiProfiles:et.current,lastPushedAiProfileIds:j?new Set:Ua.current,lastPushedAiProfileWatermarks:j?new Map:Cn.current,lastPushedAiProfileChangeKeys:j?new Map:la.current,documents:Ze.current,assets:ae.current,currentDocumentPaths:Ct.current,currentAssetPaths:Ve.current,documentReviewSessions:Et.current,documentReviewComments:vt.current,annotatedAttachmentSessions:Ie.current,lastPushedDocumentPaths:En.current,lastPushedDocumentWatermarks:Xt.current,lastPushedAssetPaths:za.current,lastPushedAssetWatermarks:Ca.current,lastPushedDocumentReviewSessionIds:er.current,lastPushedDocumentReviewSessionWatermarks:tr.current,lastPushedDocumentReviewCommentIds:Da.current,lastPushedDocumentReviewCommentWatermarks:na.current,lastPushedAnnotatedAttachmentSessionIds:fa.current,lastPushedAnnotatedAttachmentSessionWatermarks:mn.current,lastPushedTaskEventWatermarks:nn.current,baselineResetReason:Ht.current,lastPushedWatermarks:bn.current,lastPushedTaskChangeKeys:un.current})},[C,x]),Va=r.useCallback((T,j)=>{if(s==="local")try{const rt={...j,workspaceId:T,details:Im(j.details)};fetch("/api/taskforce/sync/events",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(rt)}).catch(Me=>{Un("sync_event_post_failed",{workspaceId:T,eventType:j.eventType,status:j.status,error:String(Me?.message||Me||"")})})}catch(rt){Un("sync_event_post_failed",{workspaceId:T,eventType:j.eventType,status:j.status,error:String(rt?.message||rt||"")})}},[s]),Ya=r.useCallback(()=>tw({workspaceId:t,tasks:nt.current,archivedTasks:gt.current,taskEvents:Wu(nt.current,gt.current,dt.current,St.current),pendingDeletedTaskIds:vn.current,initiatives:dt.current,workstreams:St.current,taxonomies:C||[],aiProfiles:et.current,documents:Ze.current,assets:ae.current,documentReviewSessions:Et.current,documentReviewComments:vt.current,annotatedAttachmentSessions:Ie.current}),[t,C,x]),As=r.useMemo(()=>JSON.stringify({tasks:(S||[]).map(T=>({id:String(T.id||"").trim(),updatedAt:String(T.updatedAt||T.createdAt||"").trim(),status:String(T.status||"").trim(),referenceNumber:T.referenceNumber??null,localReferenceNumber:T.localReferenceNumber??null})).sort((T,j)=>T.id.localeCompare(j.id)),archivedTasks:(h||[]).map(T=>({id:String(T.id||"").trim(),updatedAt:String(T.updatedAt||T.createdAt||"").trim(),status:String(T.status||"").trim(),referenceNumber:T.referenceNumber??null,localReferenceNumber:T.localReferenceNumber??null})).sort((T,j)=>T.id.localeCompare(j.id)),initiatives:(v||[]).map(T=>({id:String(T.id||"").trim(),updatedAt:String(T.updatedAt||T.createdAt||"").trim(),isArchived:!!T.isArchived})).sort((T,j)=>T.id.localeCompare(j.id)),workstreams:(_||[]).map(T=>({id:String(T.id||"").trim(),updatedAt:String(T.updatedAt||T.createdAt||"").trim(),initiativeId:typeof T.initiativeId=="string"?T.initiativeId.trim():"",isArchived:!!T.isArchived})).sort((T,j)=>T.id.localeCompare(j.id)),taskEvents:Wu(S||[],h||[],v||[],_||[]).map(T=>({id:String(T.id||"").trim(),entityType:String(T.entityType||"task").trim(),entityId:String(T.entityId||T.taskId||"").trim(),createdAt:String(T.createdAt||"").trim(),action:String(T.action||"").trim()})).sort((T,j)=>T.id.localeCompare(j.id)),deletedTasks:(g||[]).map(T=>({taskId:String(T?.taskId||"").trim(),deletedAt:String(T?.deletedAt||"").trim()})).filter(T=>T.taskId.length>0&&Number.isFinite(Date.parse(T.deletedAt))).sort((T,j)=>T.taskId.localeCompare(j.taskId)),taxonomies:Array.isArray(C)?C:[],taxonomyState:x&&typeof x=="object"?x:null}),[S,h,g,v,_,C,x]),Hn=r.useMemo(()=>{const T=[];for(const j of S||[]){const rt=Array.isArray(j.attachments)?j.attachments.length:0;rt>0&&T.push(`${j.id}:${rt}`)}return T.join("|")},[S]),Vr=r.useCallback(T=>{if(!T)return!1;if(os.current)return os.current=!1,ar.current=T,Jt.current=T,q(0),!0;const j=ar.current;return j?T===j?(Jt.current=T,q(0),!0):(ar.current="",!1):!1},[]),Gn=r.useCallback(async()=>{if(s==="local"&&si(t)&&!(n&&(!o||!l)))try{const T=await fetch(`/api/taskforce/sync/workspace/documents?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!T.ok)return;const j=await T.json().catch(()=>({})),rt=Array.isArray(j?.documents)?j.documents.map(ne=>({path:String(ne?.path||"").trim(),updatedAt:String(ne?.updatedAt||"").trim(),content:typeof ne?.content=="string"?ne.content:"",assetId:typeof ne?.assetId=="string"&&ne.assetId.trim().length>0?ne.assetId.trim():void 0,documentId:typeof ne?.documentId=="string"&&ne.documentId.trim().length>0?ne.documentId.trim():null,referenceNumber:Number.isFinite(Number(ne?.referenceNumber))?Math.max(1,Math.floor(Number(ne.referenceNumber))):null,version:Number.isFinite(Number(ne?.version))?Math.max(1,Math.floor(Number(ne.version))):null,taskId:typeof ne?.taskId=="string"&&ne.taskId.trim().length>0?ne.taskId.trim():null,logicalName:typeof ne?.logicalName=="string"&&ne.logicalName.trim().length>0?ne.logicalName.trim():null,caption:typeof ne?.caption=="string"&&ne.caption.trim().length>0?ne.caption.trim():null,originalFilename:typeof ne?.originalFilename=="string"&&ne.originalFilename.trim().length>0?ne.originalFilename.trim():null,linkRole:ne?.linkRole==="reference"?"reference":"attachment"})).filter(ne=>ne.path.length>0):[],Me=new Set(Array.isArray(j?.knownPaths)?j.knownPaths.map(ne=>String(ne||"").trim()).filter(ne=>ne.length>0):rt.map(ne=>ne.path)),Le=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify(rt.map(ne=>`${ne.path}:${ne.updatedAt}:${ne.content.length}`).sort());if(Le===en.current)return;en.current=Le,Ze.current=rt,Ct.current=Me,we(rt),Ee(Le)}catch(T){Un("documents_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}finally{_a("documents")}},[s,t,n,o,l,_a]),In=r.useCallback(async()=>{if(s!=="local"){Fe("runtime-not-local");return}if(!si(t)){Fe("workspace-id-invalid");return}if(n&&(!o||!l)){Fe(o?"auth-required":"auth-unresolved");return}Fe(null);try{const T=await fetch(`/api/taskforce/sync/workspace/ai-profiles?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!T.ok){kt(`HTTP ${T.status}`),Ye(new Date().toISOString());return}const j=await T.json().catch(()=>({})),rt=Array.isArray(j?.aiProfiles)?j.aiProfiles:[];Ft(rt.length);const Me=Array.isArray(j?.aiProfiles)?j.aiProfiles.map(ne=>bw(ne)).filter(ne=>ne.id.length>0&&ne.workspaceId.length>0):[];kt(null),Ye(new Date().toISOString());const Le=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify(Me.map(ne=>[ne.id,ne.updatedAt,ne.name,ne.username,ne.archivedAt??"",ne.archivedReason??"",ne.mergedIntoProfileId??"",ne.rosterStateUpdatedAt??""].join(":")).sort());if(Le===ba.current)return;ba.current=Le,et.current=Me,Xe(Me),re(Le)}catch(T){kt(String(T?.message||T||"unknown-error")),Ye(new Date().toISOString()),Un("ai_profiles_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}finally{_a("aiProfiles")}},[s,t,n,o,l,_a]),Bt=r.useCallback(async()=>{if(s==="local"&&si(t)&&!(n&&(!o||!l)))try{const T=await fetch(`/api/taskforce/sync/workspace/assets?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!T.ok)return;const j=await T.json().catch(()=>({})),rt=Array.isArray(j?.assets)?j.assets.map(ne=>({path:String(ne?.path||"").trim(),updatedAt:String(ne?.updatedAt||"").trim(),contentBase64:typeof ne?.contentBase64=="string"?ne.contentBase64:"",assetId:typeof ne?.assetId=="string"&&ne.assetId.trim().length>0?ne.assetId.trim():void 0,kind:ne?.kind==="image"?"image":"file",mimeType:typeof ne?.mimeType=="string"&&ne.mimeType.trim().length>0?ne.mimeType.trim():"application/octet-stream",referenceNumber:Number.isFinite(Number(ne?.referenceNumber))?Math.max(1,Math.floor(Number(ne.referenceNumber))):null,taskId:typeof ne?.taskId=="string"&&ne.taskId.trim().length>0?ne.taskId.trim():null,logicalName:typeof ne?.logicalName=="string"&&ne.logicalName.trim().length>0?ne.logicalName.trim():null,caption:typeof ne?.caption=="string"&&ne.caption.trim().length>0?ne.caption.trim():null,originalFilename:typeof ne?.originalFilename=="string"&&ne.originalFilename.trim().length>0?ne.originalFilename.trim():null,linkRole:ne?.linkRole==="reference"?"reference":ne?.linkRole==="image"?"image":"attachment"})).filter(ne=>ne.path.length>0&&ne.contentBase64.length>0):[],Me=new Set(Array.isArray(j?.knownPaths)?j.knownPaths.map(ne=>String(ne||"").trim()).filter(ne=>ne.length>0):rt.map(ne=>ne.path)),Le=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify(rt.map(ne=>`${ne.path}:${ne.updatedAt}:${ne.contentBase64.length}`).sort());if(Le===he.current)return;he.current=Le,ae.current=rt,Ve.current=Me,Qe(rt),ot(Le)}catch(T){Un("assets_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}finally{_a("assets")}},[s,t,n,o,l,_a]),Ln=r.useCallback(async()=>{if(s==="local"&&si(t)&&!(n&&(!o||!l)))try{const T=await fetch(`/api/taskforce/planning/bootstrap?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!T.ok)return;const j=await T.json().catch(()=>({})),rt=Array.isArray(j?.initiatives)?j.initiatives.filter(Le=>!!(Le&&typeof Le=="object"&&typeof Le.id=="string")):[],Me=Array.isArray(j?.workstreams)?j.workstreams.filter(Le=>!!(Le&&typeof Le=="object"&&typeof Le.id=="string")):[];dt.current=rt,St.current=Me}catch(T){Un("planning_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}},[s,t,n,o,l]),Ba=r.useCallback(async()=>{if(s==="local"&&si(t)&&!(n&&(!o||!l)))try{const T=await fetch(`/api/taskforce/sync/workspace/document-reviews?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!T.ok)return;const j=await T.json().catch(()=>({})),rt=Array.isArray(j?.sessions)?j.sessions.map(ne=>({id:String(ne?.id||"").trim(),assetId:String(ne?.assetId||"").trim(),documentId:typeof ne?.documentId=="string"&&ne.documentId.trim().length>0?ne.documentId.trim():null,documentVersion:Number.isFinite(Number(ne?.documentVersion))?Math.max(1,Math.floor(Number(ne.documentVersion))):null,title:typeof ne?.title=="string"&&ne.title.trim().length>0?ne.title.trim():null,status:ne?.status==="resolved"?"resolved":"open",comments:Array.isArray(ne?.comments)?ne.comments:[],createdByActorId:typeof ne?.createdByActorId=="string"&&ne.createdByActorId.trim().length>0?ne.createdByActorId.trim():null,updatedByActorId:typeof ne?.updatedByActorId=="string"&&ne.updatedByActorId.trim().length>0?ne.updatedByActorId.trim():null,createdAt:String(ne?.createdAt||"").trim(),updatedAt:String(ne?.updatedAt||ne?.createdAt||"").trim(),deletedAt:typeof ne?.deletedAt=="string"&&ne.deletedAt.trim().length>0?ne.deletedAt.trim():null})).filter(ne=>ne.id.length>0&&ne.assetId.length>0):[],Me=Array.isArray(j?.comments)?j.comments.map(ne=>({id:String(ne?.id||"").trim(),sessionId:String(ne?.sessionId||"").trim(),body:typeof ne?.body=="string"?ne.body:"",anchor:ne?.anchor??null,order:Number.isFinite(Number(ne?.order))?Math.max(0,Math.floor(Number(ne.order))):0,authorActorId:typeof ne?.authorActorId=="string"&&ne.authorActorId.trim().length>0?ne.authorActorId.trim():null,createdAt:String(ne?.createdAt||"").trim(),updatedAt:String(ne?.updatedAt||ne?.createdAt||"").trim(),deletedAt:typeof ne?.deletedAt=="string"&&ne.deletedAt.trim().length>0?ne.deletedAt.trim():null})).filter(ne=>ne.id.length>0&&ne.sessionId.length>0):Aw(rt),Le=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify([...rt.map(ne=>`${ne.id}:${ne.updatedAt}:${ne.status}:${ne.deletedAt||""}:${ne.comments.length}`).sort(),...Me.map(ne=>`${ne.id}:${ne.sessionId}:${ne.updatedAt}:${ne.deletedAt||""}`).sort()]);if(Le===ct.current)return;ct.current=Le,Et.current=rt,vt.current=Me,Ot(rt),Ue(Le)}catch(T){Un("document_review_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}finally{_a("documentReviewSessions")}},[s,t,n,o,l,_a]),rr=r.useCallback(async()=>{if(s==="local"&&si(t)&&!(n&&(!o||!l)))try{const T=await fetch(`/api/taskforce/sync/workspace/annotated-attachments?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!T.ok)return;const j=await T.json().catch(()=>({})),rt=Array.isArray(j?.sessions)?j.sessions.map(Le=>({id:String(Le?.id||"").trim(),workspaceId:String(Le?.workspaceId||"").trim(),taskId:String(Le?.taskId||"").trim(),baseImageAssetId:String(Le?.baseImageAssetId||"").trim(),title:typeof Le?.title=="string"&&Le.title.trim().length>0?Le.title.trim():null,globalInstruction:typeof Le?.globalInstruction=="string"&&Le.globalInstruction.trim().length>0?Le.globalInstruction.trim():null,annotations:Array.isArray(Le?.annotations)?Le.annotations:[],createdByActorId:typeof Le?.createdByActorId=="string"&&Le.createdByActorId.trim().length>0?Le.createdByActorId.trim():null,updatedByActorId:typeof Le?.updatedByActorId=="string"&&Le.updatedByActorId.trim().length>0?Le.updatedByActorId.trim():null,createdAt:String(Le?.createdAt||"").trim(),updatedAt:String(Le?.updatedAt||Le?.createdAt||"").trim(),deletedAt:typeof Le?.deletedAt=="string"&&Le.deletedAt.trim().length>0?Le.deletedAt.trim():null})).filter(Le=>Le.id.length>0&&Le.workspaceId.length>0&&Le.taskId.length>0&&Le.baseImageAssetId.length>0):[],Me=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify(rt.map(Le=>`${Le.id}:${Le.updatedAt}:${Le.taskId}:${Le.baseImageAssetId}:${Le.annotations.length}:${Le.deletedAt||""}`).sort());if(Me===xe.current)return;xe.current=Me,Ie.current=rt,c(rt),ye(Me)}catch(T){Un("annotated_attachment_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}finally{_a("annotatedAttachmentSessions")}},[s,t,n,o,l,_a]),Tr=r.useCallback(()=>{ca.current=new Set([...nt.current,...gt.current].map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),bn.current=new Map([...nt.current,...gt.current].map(j=>[String(j?.id||"").trim(),ws.getWatermark(j)]).filter(([j])=>j.length>0)),un.current=new Map([...nt.current.map(j=>[String(j?.id||"").trim(),ws.getChangeKey({...j,isArchived:!1})]),...gt.current.map(j=>[String(j?.id||"").trim(),ws.getChangeKey({...j,isArchived:!0})])].filter(([j])=>j.length>0)),_n.current=new Set(dt.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),$a.current=new Map(dt.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),Mn.current=new Set(St.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),va.current=new Map(St.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),Ua.current=new Set(et.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),Cn.current=new Map(et.current.map(j=>[String(j?.id||"").trim(),md.getWatermark(j)]).filter(([j])=>j.length>0)),la.current=new Map(et.current.map(j=>[String(j?.id||"").trim(),md.getChangeKey(j)]).filter(([j])=>j.length>0)),En.current=new Set(Ze.current.map(j=>String(j?.path||"").trim()).filter(j=>j.length>0)),Xt.current=new Map(Ze.current.map(j=>[String(j?.path||"").trim(),String(j?.updatedAt||"").trim()]).filter(([j])=>j.length>0)),za.current=new Set(ae.current.map(j=>String(j?.path||"").trim()).filter(j=>j.length>0)),Ca.current=new Map(ae.current.map(j=>[String(j?.path||"").trim(),String(j?.updatedAt||"").trim()]).filter(([j])=>j.length>0)),er.current=new Set(Et.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),tr.current=new Map(Et.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),Da.current=new Set(vt.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),na.current=new Map(vt.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),fa.current=new Set(Ie.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),mn.current=new Map(Ie.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),nn.current=new Map(Wu(nt.current,gt.current,dt.current,St.current).map(j=>[String(j?.id||"").trim(),String(j?.createdAt||"").trim()]).filter(([j])=>j.length>0));const T=is();Ht.current=T?null:"storage-write-failed"},[is]),sr=r.useCallback(async()=>{const[T,j]=await Promise.all([fetch("/api/taskforce/tasks",{method:"GET",credentials:"include"}),fetch("/api/taskforce/archive",{method:"GET",credentials:"include"})]);if(T.ok){const rt=await T.json().catch(()=>({})),Me=Array.isArray(rt?.tasks)?rt.tasks.map(Le=>Mo(Le)):[];ve(Me)}if(j.ok){const rt=await j.json().catch(()=>({})),Me=Array.isArray(rt?.archived)?rt.archived.map(Le=>({...Mo(Le),isArchived:!0})):[];se(Me)}await ge().catch(()=>{Un("refresh_planning_entities_failed",{workspaceId:t})})},[t,ge,se,ve]),{handleSyncAuthFailure:or,ensureWorkspaceSyncReady:xs}=r.useMemo(()=>xw({currentWorkspaceId:t,workspaceSyncPhase:N,clearWorkspaceRetry:pa,setWorkspaceSyncBusy:ee,setUserGlobalSyncStatus:je,setUserGlobalSyncError:T=>ce(T),setWorkspaceLastErrorMessage:T=>R(T),setWorkspaceLastErrorAt:T=>I(T),reportSyncEvent:Va,setAuthBlocked:A,setIsAuthenticated:K,checkAuthSession:ue,ensureCloudWorkspaceReadyForSync:Je,scheduleWorkspaceSyncRetry:Gr,persistWorkspaceSyncPatchSafely:nr}),[t,N,pa,Va,A,K,ue,Je,Gr,nr]),qr=r.useMemo(()=>Uw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,currentWorkspaceId:t,workspaceSyncPhase:N,isAuthenticated:l,checkAuthSession:ue,resolveCloudAuthUrl:m,ensureCloudWorkspaceReadyForSync:Je,ensureWorkspaceSyncReady:xs,handleSyncAuthFailure:or,clearWorkspaceRetry:pa,clearWorkspaceIssue:gr,isWorkspaceRetryPending:ja,scheduleWorkspaceSyncRetry:Gr,persistWorkspaceSyncPatchSafely:nr,persistWorkspaceSyncPatchBestEffort:Dn,persistWorkspaceSyncWatermarksSnapshotBestEffort:is,reportSyncEvent:Va,acquireWorkspaceSyncLease:an,releaseWorkspaceSyncLease:Ia,reportWorkspaceWindowContention:xn,refreshWorkspaceSyncMarkdownDocumentsSnapshot:Gn,refreshWorkspaceSyncAiProfilesSnapshot:In,refreshWorkspaceSyncAssetsSnapshot:Bt,refreshWorkspaceSyncPlanningEntitiesSnapshot:Ln,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:Ba,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:rr,refreshLocalWorkspaceTaskCollections:sr,buildWorkspaceSyncPayload:da,buildWorkspaceSyncSignature:Ya,seedWorkspaceSnapshotPushBaseline:Tr,shouldSuppressAttachBootstrapPush:Vr,recordSuppressedEventIds:(...T)=>no.current.recordSuppressedEventIds(...T),workspaceRepairModeRef:Ha,workspaceForceFullAiProfilePushRef:Ut,workspacePushInFlightRef:tn,workspacePullInFlightRef:Aa,workspacePendingPushReplayRef:Ea,workspaceLastPushedSignatureRef:Jt,workspacePendingSignatureRef:Na,workspaceLastPushedTaskIdsRef:ca,workspaceDeletedTaskIdsRef:vn,workspaceDeletedTaskWatermarksRef:dn,workspacePullCursorRef:Xn,workspaceLastPushedWatermarksRef:bn,workspaceLastPushedTaskChangeKeysRef:un,workspaceLastPushedInitiativeIdsRef:_n,workspaceLastPushedInitiativeWatermarksRef:$a,workspaceLastPushedWorkstreamIdsRef:Mn,workspaceLastPushedWorkstreamWatermarksRef:va,workspaceLastPushedAiProfileIdsRef:Ua,workspaceLastPushedAiProfileWatermarksRef:Cn,workspaceLastPushedAiProfileChangeKeysRef:la,workspaceLastPushedDocumentPathsRef:En,workspaceLastPushedDocumentWatermarksRef:Xt,workspaceLastPushedAssetPathsRef:za,workspaceLastPushedAssetWatermarksRef:Ca,workspaceLastPushedDocumentReviewSessionIdsRef:er,workspaceLastPushedDocumentReviewSessionWatermarksRef:tr,workspaceLastPushedDocumentReviewCommentIdsRef:Da,workspaceLastPushedDocumentReviewCommentWatermarksRef:na,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:fa,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:mn,workspaceLastPushedTaskEventWatermarksRef:nn,workspaceBaselineResetReasonRef:Ht,workspaceCaptureAttachBootstrapBaselineRef:os,workspaceStartupFullReconcileRanRef:ss,workspaceFullReconcileInFlightRef:La,bootstrapLastProgressAtRef:aa,realtimeSuppressedEventQueueRef:ga,setWorkspaceSyncBusy:ee,setUserGlobalSyncStatus:je,setUserGlobalSyncError:ce,setWorkspaceLastErrorMessage:R,setWorkspaceLastErrorAt:I,setWorkspaceLastPullAt:Pe,setWorkspaceLastPushAt:De,setWorkspaceSyncPendingChanges:q,setTasks:ve,setArchivedTasks:se}),[n,s,D,t,N,$,l,ue,m,Je,xs,or,pa,gr,Gr,nr,Dn,is,Va,an,Ia,xn,Gn,In,Bt,Ln,Ba,rr,sr,da,Ya,Tr,Vr,ve,se]),{pushWorkspaceChangesToCloud:hn,pullWorkspaceChangesFromCloud:Bn}=qr,no=r.useRef({handleRealtimeSignal:()=>{},recordSuppressedEventIds:()=>{},clearRealtimePullDebounce:()=>{}}),Rr=r.useMemo(()=>Bw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,workspaceSyncPhase:N,workspacePullInFlightRef:Aa,realtimePullDebounceRef:tt,realtimeSuppressedEventIdsRef:Gt,clearWorkspaceRetry:pa,isWorkspaceRetryPending:ja,pullWorkspaceChangesFromCloud:Bn}),[n,s,D,N,pa,ja,Bn]);no.current=Rr;const F=y("/taskforce-ws"),Be=String(i||"").trim(),Wt=Jg({enabled:!!(k&&n&&s==="local"&&D&&o&&l&&Be&&Be!=="anonymous"&&F),workspaceId:t,websocketUrl:F,onSignal:Rr.handleRealtimeSignal,onTelemetry:Pt,userId:Be||void 0});r.useEffect(()=>{Vt(Wt.connectionState)},[Wt.connectionState]),r.useEffect(()=>()=>Rr.clearRealtimePullDebounce(),[Rr]);const ua=r.useCallback(async T=>Pn(T,{cloudAuthConfigured:n,isAuthenticated:l,ensureCloudWorkspaceReadyForSync:Je}),[Pn,n,l,Je]),yr=r.useCallback(async()=>{await fn({preferCloudOnFirstSync:!1})},[fn]),cs=r.useMemo(()=>Fw({currentWorkspaceId:t,workspaceCloudSyncEnabled:D,workspaceSyncPhase:N,workspaceLastPullAt:Re,lastBootstrapPhaseRef:Za,workspaceRepairModeRef:Ha,workspaceForceFullAiProfilePushRef:Ut,workspaceStartupRepairRanRef:ea,workspaceStartupFullReconcileRanRef:ss,workspaceFullReconcileInFlightRef:La,workspacePullCursorRef:Xn,workspaceAttachBootstrapBaselineSignatureRef:ar,workspaceCaptureAttachBootstrapBaselineRef:os,workspacePendingSignatureRef:Na,workspaceLastPushedSignatureRef:Jt,workspaceLastPushedWatermarksRef:bn,workspaceLastPushedTaskChangeKeysRef:un,workspaceLastPushedInitiativeIdsRef:_n,workspaceLastPushedInitiativeWatermarksRef:$a,workspaceLastPushedWorkstreamIdsRef:Mn,workspaceLastPushedWorkstreamWatermarksRef:va,workspaceLastPushedAiProfileIdsRef:Ua,workspaceLastPushedAiProfileWatermarksRef:Cn,workspaceLastPushedAiProfileChangeKeysRef:la,workspaceLastPushedDocumentPathsRef:En,workspaceLastPushedDocumentWatermarksRef:Xt,workspaceLastPushedAssetPathsRef:za,workspaceLastPushedAssetWatermarksRef:Ca,workspaceLastPushedDocumentReviewSessionIdsRef:er,workspaceLastPushedDocumentReviewSessionWatermarksRef:tr,workspaceLastPushedDocumentReviewCommentIdsRef:Da,workspaceLastPushedDocumentReviewCommentWatermarksRef:na,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:fa,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:mn,workspaceLastPushedTaskEventWatermarksRef:nn,workspaceBaselineResetReasonRef:Ht,bootstrapPhaseStartedAtRef:Mt,bootstrapLastProgressAtRef:aa,acquireWorkspaceSyncLease:an,releaseWorkspaceSyncLease:Ia,forceClearWorkspaceSyncLease:Ur,clearWorkspaceRetry:pa,clearWorkspaceIssue:gr,reportWorkspaceWindowContention:xn,reportSyncEvent:Va,persistWorkspaceSyncPatch:$r,persistWorkspaceSyncWatermarksSnapshotBestEffort:is,buildWorkspaceSyncSignature:Ya,pullWorkspaceChangesFromCloud:Bn,pushWorkspaceChangesToCloud:hn,cloudAuthConfigured:n,runtimeMode:s,isAuthenticated:l,checkAuthSession:ue}),[t,$,D,N,Re,an,Ia,Ur,pa,gr,xn,Va,$r,is,Ya,Bn,hn,n,s,l,ue]),{retryWorkspaceCloudSync:Is,resetWorkspaceSyncCursorAndPull:Ja}=cs,jr=r.useCallback(()=>{const T=zp({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,currentWorkspaceId:t,workspaceSyncPhase:N,isAuthenticated:l,repairModeActive:Ha.current===!0,repairModeBypass:!1,pushInFlight:tn.current,pullInFlight:Aa.current}),j=ja(),rt=Hp({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,currentWorkspaceId:t,workspaceSyncPhase:N,isAuthenticated:l,repairModeActive:Ha.current===!0,repairModeBypass:!1,retryPending:j,pushInFlight:tn.current,pullInFlight:Aa.current}),Me=Gp({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,currentWorkspaceId:t,isAuthenticated:l});return{workspaceId:t,enabled:D,phase:N,status:xr,summary:Pa,lastSuccessfulSyncAt:An,lastPullAt:Re,lastPushAt:Ce,lastErrorAt:U,pendingChanges:Q,lastErrorMessage:b,recommendedAction:Cs,pushBlockedReason:T.allowed?null:T.reason,pullBlockedReason:rt.allowed?null:rt.reason,retryBlockedReason:Me.allowed?null:Me.reason,repairActive:Ha.current===!0,pushInFlight:tn.current===!0,pullInFlight:Aa.current===!0,retryPending:j,documentSnapshotCount:Se.length,aiProfileSnapshotCount:ut.length,aiProfileSnapshotRawCount:It,aiProfileSnapshotLastFetchAt:it,aiProfileSnapshotLastFetchError:jt,aiProfileSnapshotLastSkipReason:Nt,assetSnapshotCount:Ge.length,documentReviewSessionSnapshotCount:bt.length,documentReviewSessionSnapshotFingerprint:Dt,annotatedAttachmentSessionSnapshotCount:E.length,annotatedAttachmentSessionSnapshotFingerprint:Y,lastPushedAiProfileCount:Ua.current.size,lastPushedAiProfileWatermarkCount:Cn.current.size,forceFullAiProfilePushQueued:Ut.current===!0}},[n,t,s,D,N,l,xr,Pa,An,Re,Ce,U,Q,b,Cs,Se.length,ut.length,It,it,jt,Nt,Ge.length,bt.length,Dt,E.length,Y,ja]);r.useEffect(()=>{ma.current=Is},[Is]);const Wa=r.useCallback(()=>{Gn(),Bt()},[Gn,Bt]);return r.useEffect(()=>{if(!n||s!=="local"||!D||!o||!l)return;Gn(),In(),Bt(),Ba(),rr();const T=Nr=>{const yn=Nr.detail;(String(yn?.workspaceId||"").trim()||"default")===t&&Wa()},j=Nr=>{const yn=Nr.detail;(String(yn?.workspaceId||"").trim()||"default")===t&&(In(),Bt())};window.addEventListener($p,T),window.addEventListener(Up,j);const rt=window.setInterval(()=>{Gn()},pn),Me=window.setInterval(()=>{In()},pn),Le=window.setInterval(()=>{Bt()},pn),ne=window.setInterval(()=>{Ba()},pn),gn=window.setInterval(()=>{rr()},pn);return()=>{window.removeEventListener($p,T),window.removeEventListener(Up,j),window.clearInterval(rt),window.clearInterval(Me),window.clearInterval(Le),window.clearInterval(ne),window.clearInterval(gn)}},[n,s,D,o,l,t,Wa,Gn,In,Bt,Ba,rr,pn]),r.useEffect(()=>{!n||s!=="local"||!D||!o||!l||Hn&&Wa()},[n,s,D,o,l,Hn,Wa]),r.useEffect(()=>{if(!Pw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,authSessionResolved:o,workspaceSyncPhase:N,workspaceSyncReferenceSnapshotsReady:Qt}))return;const T=Ya();if(Vr(T)||!T||T===Jt.current)return;const j=da();if(q(j.changes.length),tn.current||Aa.current){Na.current=T;return}const rt=window.setTimeout(()=>{hn(T)},1500);return()=>window.clearTimeout(rt)},[n,s,D,o,N,Qt,Ya,Vr,da,As,lt,Te,yt,Dt,Y,hn,tn,Aa]),r.useEffect(()=>{if(!Mw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,authSessionResolved:o,workspaceSyncPhase:N,workspaceSyncReferenceSnapshotsReady:Qt}))return;const T=window.setInterval(()=>{if(tn.current||Aa.current||ja())return;const j=Na.current||Ya();if(!j||j===Jt.current)return;const rt=da();q(rt.changes.length),rt.changes.length!==0&&hn(j)},zr);return()=>window.clearInterval(T)},[n,s,D,o,N,Qt,Ya,da,hn,ja,zr]),r.useEffect(()=>{n&&s==="local"&&D||(pa(),ee(!1))},[n,s,D,pa]),r.useEffect(()=>{const T=Ew({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,authSessionResolved:o,workspaceSyncPhase:N,lastPullAt:Re,retryPending:ja()});if(!T.shouldStart)return;T.shouldKickOffImmediately&&Bn();const j=window.setInterval(()=>{Bn()},zn);return()=>{window.clearInterval(j)}},[n,s,D,o,N,Re,ja,Bn,zn]),r.useEffect(()=>{if(!Dw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,authSessionResolved:o,isAuthenticated:l,workspaceSyncPhase:N}))return;const T=window.setInterval(()=>{La.current||(La.current=!0,Bn({forceCursorNull:!0}).finally(()=>{La.current=!1}))},Sw);return()=>window.clearInterval(T)},[n,s,D,o,l,N,Bn]),r.useEffect(()=>{s!=="local"||!l||!i||i==="anonymous"||fn({preferCloudOnFirstSync:!0})},[s,l,i,fn]),r.useEffect(()=>{if(s!=="local"||!l||!i||i==="anonymous"||!Ka.current.has(i)||Kt.current)return;const T=hr(),j=JSON.stringify(T);if(!Oa.current){Oa.current=j;return}if(j===Oa.current)return;Oa.current=j,Ir(i,new Date().toISOString());const rt=window.setTimeout(()=>{fn({preferCloudOnFirstSync:!1})},350);return()=>window.clearTimeout(rt)},[s,l,i,hr,Ir,fn]),r.useEffect(()=>{Lw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,authSessionResolved:o,isAuthenticated:l,workspaceSyncPhase:N,alreadyRan:ea.current})&&(ea.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 T=>{if(!T.ok)return;const j=await T.json().catch(()=>({}));j?.applied>0&&(Un("startup_repair_applied",{workspaceId:t,applied:j.applied,skipped:j.skipped,failed:j.failed}),Gn(),In(),Bt(),Ba())}).catch(()=>{}))},[n,s,D,o,l,N,t,Gn,In,Bt,Ba]),{userGlobalSyncStatus:_e,setUserGlobalSyncStatus:je,userGlobalSyncError:oe,setUserGlobalSyncError:ce,workspaceLastPullAt:Re,workspaceLastPushAt:Ce,workspaceLastErrorAt:U,workspaceLastErrorMessage:b,workspaceLastSuccessfulSyncAt:An,workspaceCloudSyncEnabled:D,workspaceSyncPhase:N,workspaceSyncSetupIntent:be,workspaceSyncStatus:xr,workspaceSyncSummary:Pa,workspaceSyncRecommendedAction:Cs,workspaceSyncBusy:ie,workspaceSyncPendingChanges:Q,syncInFlightRef:Rt,workspaceRetryAt:Or,isWorkspaceRetryPending:ja,workspacePushInFlightRef:tn,workspacePullInFlightRef:Aa,workspaceLastPushedSignatureRef:Jt,workspacePendingSignatureRef:Na,workspaceLastPushedTaskIdsRef:ca,workspaceDeletedTaskIdsRef:vn,workspaceDeletedTaskWatermarksRef:dn,workspacePullCursorRef:Xn,clearWorkspaceRetry:pa,persistWorkspaceSyncPatch:$r,loadWorkspaceSyncState:Ar,applyWorkspaceSyncStateSnapshot:_t,syncUserGlobalSettings:fn,buildWorkspaceSyncSignature:Ya,pushWorkspaceChangesToCloud:hn,pullWorkspaceChangesFromCloud:Bn,saveWorkspaceCloudSyncSettings:ua,retryUserGlobalSettingsSync:yr,retryWorkspaceCloudSync:Is,resetWorkspaceSyncCursorAndPull:Ja,getWorkspaceSyncDiagnostics:jr}}function Hw(e,t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:e==="error"?3600:2600}function Gw(){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=Hw(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 Vw({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 _=r.useCallback(()=>{typeof window>"u"||(g.current!==null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{g.current=null,h(null)},5e3))},[]),C=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]),x=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),_()}},[_,e]);return r.useEffect(()=>()=>{g.current!==null&&typeof window<"u"&&(window.clearTimeout(g.current),g.current=null)},[]),{exportEnvironment:s,setExportEnvironment:o,availableEnvironments:l,loadAvailableEnvironments:C,exportWorkflowsPath:d,setExportWorkflowsPath:m,exportingResource:y,exportResult:S,handleExportWorkflows:x}}function qw(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:_,supportedLocales:C,jsonBackupUseGlobalDefault:x,manualComplexityEnabled:W,checklistDropdownEnabled:V,showTaskCardStatusLabel:B,exportWorkflowsPath:J,exportingResource:me,exportResult:ve,pathSaved:se,settingsSection:A,exportEnvironment:K,setupState:ue,buildInfo:pe,saveSetupMode:X,saveWorkspaceProfile:M,setCurrentTheme:O,handleSaveTheme:de,handleSaveGlobalTheme:ge,setKeyShortcut:$,handleJsonBackupEnabledChange:_e,handleSaveGlobalJsonBackupEnabled:je,handleSaveGlobalWeekStartsOn:oe,handleSaveLocale:ce,handleManualComplexityEnabledChange:Re,handleChecklistDropdownEnabledChange:Pe,handleShowTaskCardStatusLabelChange:Ce,handleResetProjectToGlobal:De,handleSaveSettings:U,setExportWorkflowsPath:I,setExportEnvironment:b,availableWorkflows:R,initiativeTemplates:D,availableEnvironments:te,fetchWorkflows:N,fetchInitiativeTemplates:G,createInitiativeFromTemplate:be,fetchWorkflowTemplate:z,fetchWorkflowOverrideNames:ie,saveWorkflowTemplateDraft:ee,resetWorkflowTemplateDraft:Q,handleExportWorkflows:q,setShowFolderBrowser:Se,setBrowserTarget:we,fetchFolders:Te,activeCategories:Ee,pathValidation:nt,taxonomyDisplayLabels:gt,handleUpdateCategory:dt,handleRemoveCategory:St,handleSaveCategory:Ze,handleAddPath:Ct,handleRemovePath:ut,handleUpdateCategoryIcon:Xe,handleUpdateCategoryColor:lt,activeTypes:re,handleSaveType:it,handleRemoveType:Ye,handleUpdateType:jt,taxonomies:kt,handleUpdateTaxonomies:It,priorities:Ft,handleUpdatePriorities:Nt,analyzeSystemTaxonomyPack:Fe,handleApplySystemTaxonomyPack:et,handleUpdateTaxonomyDisplayLabels:Ge,projectRoot:Qe,projectName:yt,mcpHostRoot:ot,serverHostRoot:ae,mcpScriptPath:Ve,tenantId:bt,runtimeMode:Ot,workspaceSwitchingEnabled:Dt,deleteWorkspace:Ue,setMcpHostRoot:Et,isAuthenticated:vt}=e,E=r.useCallback(async(Y,ye)=>{const Ie=t(Y),qe=new Headers(ye?.headers||void 0);if(Y.startsWith("/api/taskforce/settings/mcp/")){const Ne=String(n||"").trim();Ne&&Ne!=="default"&&!qe.has("x-taskforce-workspace-id")&&qe.set("x-taskforce-workspace-id",Ne)}const Ke={...ye,headers:qe,credentials:ye?.credentials??"include"};if(typeof window<"u"&&/^https?:\/\//i.test(Ie))try{new URL(Ie,window.location.origin).origin!==window.location.origin&&Ke.mode===void 0&&(Ke.mode="cors")}catch{}return fetch(Ie,Ke)},[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:_,supportedLocales:C,jsonBackupUseGlobalDefault:x,manualComplexityEnabled:W,checklistDropdownEnabled:V,showTaskCardStatusLabel:B,exportWorkflowsPath:J,exportingResource:me,exportResult:ve,pathSaved:se,initialSection:A,exportEnvironment:K,setupState:ue,buildInfo:pe,onSaveSetupMode:X,onSaveWorkspaceProfile:M,onThemeChange:O,onSaveTheme:de,onSaveGlobalTheme:ge,onKeyShortcutChange:$,onJsonBackupEnabledChange:_e,onSaveGlobalJsonBackupEnabled:je,onSaveGlobalWeekStartsOn:oe,onSaveLocale:ce,onManualComplexityEnabledChange:Re,onChecklistDropdownEnabledChange:Pe,onShowTaskCardStatusLabelChange:Ce,onResetProjectToGlobal:De,onSaveSettings:U,onExportWorkflowsPathChange:I,onExportEnvironmentChange:b,availableWorkflows:R,initiativeTemplates:D,availableEnvironments:te,onRefreshWorkflows:N,onRefreshInitiativeTemplates:G,onCreateInitiativeFromTemplate:be,onFetchWorkflowTemplate:z,onFetchWorkflowOverrideNames:ie,onSaveWorkflowTemplateDraft:ee,onResetWorkflowTemplateDraft:Q,onExportWorkflows:q,onShowFolderBrowserChange:Se,onBrowserTargetChange:we,onFetchFolders:Te,categories:Ee,pathValidation:nt,taxonomyDisplayLabels:gt,onUpdateCategory:dt,onRemoveCategory:St,onSaveCategory:Ze,onAddPath:Ct,onRemovePath:ut,onUpdateCategoryIcon:Xe,onUpdateCategoryColor:lt,types:re,onSaveType:it,onRemoveType:Ye,onUpdateType:jt,taxonomies:kt,onUpdateTaxonomies:It,priorities:Ft,onUpdatePriorities:Nt,onAnalyzeSystemTaxonomyPack:Fe,onApplySystemTaxonomyPack:et,onUpdateTaxonomyDisplayLabels:Ge,projectRoot:Qe,projectName:yt,mcpHostRoot:ot,serverHostRoot:ae,mcpScriptPath:Ve,tenantId:bt,workspaceId:n,runtimeMode:Ot,cloudAuthBaseUrl:s||l.cloudAuthBaseUrl,cloudMcpBaseUrl:o||void 0,workspaceSwitchingEnabled:Dt,currentWorkspaceRole:c?.role||"member",currentWorkspaceName:String(c?.name||""),onDeleteWorkspace:Ue,onMcpHostRootChange:Et,isAuthenticated:vt}}function Kw(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:_,setChecklistDropdownEnabled:C,setShowTaskCardStatusLabel:x,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 O=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:M})});if(!O.ok)throw new Error(`Failed to save config (${O.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 O=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:M})});if(!O.ok)throw new Error(`Failed to save global settings (${O.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global theme"),!1}},[y,n,d]),me=r.useCallback(async M=>{if(s==="cloud")return k(!1),S(!1),!1;k(M),S(!1);try{const O=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:M})});if(!O.ok)throw new Error(`Failed to save config (${O.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 O=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:M})});if(!O.ok)throw new Error(`Failed to save global settings (${O.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global backup setting"),!1}},[s,h,o,k]),se=r.useCallback(async M=>{g(M);try{const O=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schedulePreferences:{weekStartsOn:M}})});if(!O.ok)throw new Error(`Failed to save global settings (${O.status})`);return!0}catch{return console.error("[Taskforce] Failed to save regional week start setting"),!1}},[g]),A=r.useCallback(async M=>{const O=Lg(M);return v(O),!0},[v]),K=r.useCallback(async M=>{_(M);try{const O=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({manualComplexityEnabled:M})});if(!O.ok)throw new Error(`Failed to save config (${O.status})`);return!0}catch{return console.error("[Taskforce] Failed to save manual complexity setting"),!1}},[_]),ue=r.useCallback(async M=>{C(M),M||W(!1);try{const O=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({checklistDropdownEnabled:M})});if(!O.ok)throw new Error(`Failed to save config (${O.status})`);return!0}catch{return console.error("[Taskforce] Failed to save checklist dropdown setting"),!1}},[C,W]),pe=r.useCallback(async M=>{x(M);try{const O=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({showTaskCardStatusLabel:M})});if(!O.ok)throw new Error(`Failed to save config (${O.status})`);return!0}catch{return console.error("[Taskforce] Failed to save task card status label setting"),!1}},[x]),X=r.useCallback(async()=>{m(!0),S(!0),d(l),k(i),_(!1),C(!0),x(!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,_,C,x,W]);return{handleSaveSettings:V,handleSaveTheme:B,handleSaveGlobalTheme:J,handleJsonBackupEnabledChange:me,handleSaveGlobalJsonBackupEnabled:ve,handleSaveGlobalWeekStartsOn:se,handleSaveLocale:A,handleManualComplexityEnabledChange:K,handleChecklistDropdownEnabledChange:ue,handleShowTaskCardStatusLabelChange:pe,handleResetProjectToGlobal:X}}function Zw(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:_,setCategory:C,setCustomCategories:x,setCustomTypes:W,setFilterCategories:V,setPathValidation:B,setPriorities:J,setShowFolderBrowser:me,setTaxonomies:ve,tasks:se}=e,A=r.useCallback(async(I,b)=>{const R=await I.json().catch(()=>({}));return String(R?.error||b)},[]),K=r.useCallback(()=>[...se,...o],[o,se]),ue=r.useCallback(I=>I.priorities.find(b=>b.value===2)?.value||I.priorities[0]?.value||2,[]),pe=r.useCallback(async I=>{if(I.length!==0)try{const b=await fetch("/api/taskforce/validate-paths",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:I})});if(b.ok){const R=await b.json();B(D=>({...D,...R.results}))}}catch(b){console.error("[Taskforce] Failed to validate paths:",b)}},[B]);r.useEffect(()=>{if(n!=="settings"||!d)return;const I=[];t.forEach(R=>{h(R).forEach(te=>{I.includes(te)||I.push(te)})});const b=I.filter(R=>!v[R]);b.length>0&&pe(b)},[t,n,d,h,v,pe]);const X=r.useCallback(async(I,b)=>{if(d){x(R=>(R.length>0?R:t).map(te=>te.value===I.value?I:te)),b&&b!==I.label&&(i===b&&C(I.label),S.includes(b)&&V(R=>R.map(D=>D===b?I.label:D)));try{const te={categories:(m.length>0?m:t).map(N=>N.value===I.value?I:N)};b&&b!==I.label&&(te.reassignFrom=b,te.reassignTo=I.label),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(te)}),b&&await k()}catch(R){console.error("[Taskforce] Failed to update category",R)}}},[t,i,d,m,k,S,C,x,V]),M=r.useCallback(async I=>{if(!d)return;const b=I.trim().toLowerCase().replace(/\s+/g,"-");if(t.some(D=>D.value===b))return;const R={value:b,label:I.trim(),color:"blue-200",icon:"Folder"};x(D=>[...D.length>0?D:t,R]);try{const te=[...m.length>0?m:t,R];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,x]),O=r.useCallback((I,b)=>{if(!b.trim())return;const R=t.find(G=>G.value===I);if(!R)return;const D=h(R),te=b.trim();if(D.includes(te))return;const N=[...D,te];X({...R,path:void 0,paths:N}),pe(N)},[t,h,X,pe]),de=r.useCallback((I,b)=>{const R=t.find(D=>D.value===I);R&&X({...R,icon:b})},[t,X]),ge=r.useCallback((I,b)=>{const R=t.find(D=>D.value===I);R&&X({...R,color:b})},[t,X]),$=r.useCallback((I,b)=>{const R=t.find(N=>N.value===I);if(!R)return;const te=h(R).filter(N=>N!==b);X({...R,path:void 0,paths:te})},[t,h,X]),_e=r.useCallback(I=>{const b=g(I);if(l&&typeof l=="object"&&l.type==="category"){const R=t.find(D=>D.value===l.value);if(R){const D=h(R);if(!D.includes(b)){const te=[...D,b];X({...R,path:void 0,paths:te})}}}me(!1),_(null)},[t,l,h,X,g,_,me]),je=r.useCallback(async I=>{if(!d)return;const b=Qc,R=t.find(G=>G.value===b),D=R?{...R}:{value:b,label:Cm,icon:"Inbox"},te=D.label,N=t.find(G=>G.value===I);x(G=>{let z=(G.length>0?G:t).filter(ie=>ie.value!==I);return z.some(ie=>ie.value===b)||(z=[D,...z]),z}),N&&((i===N.label||i===N.value)&&C(b),(S.includes(N.label)||S.includes(N.value))&&V(G=>{const be=G.filter(z=>z!==N.label&&z!==N.value);return be.includes(b)?be:[...be,b]}));try{let G=(m.length>0?m:t).filter(be=>be.value!==I);G.some(be=>be.value===b)||(G=[D,...G]),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:G,reassignFrom:N?.label||I,reassignTo:te})}),await k()}catch(G){console.error("[Taskforce] Failed to remove category",G)}},[t,i,d,m,k,S,C,x,V]),oe=r.useCallback(async I=>{if(!I.trim())return;const b=I.trim().toLowerCase().replace(/\s+/g,"-");if(s.some(D=>D.value===b))return;const R=[...s,{value:b,label:I.trim(),status:"active"}];W(R);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:R})})}catch(D){console.error("Failed to save type",D)}},[s,W]),ce=r.useCallback(async I=>{const b=s.map(R=>R.value===I?{...R,status:"retired"}:R);W(b);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:b})}),await k()}catch(R){console.error("Failed to save type",R)}},[s,k,W]),Re=r.useCallback(async(I,b)=>{const R=s.find(G=>G.value===I);if(!R)return;const D=typeof b.label=="string"?b.label.trim():R.label;if(!D)return;const te=s.map(G=>G.value===I?{...G,...b,label:D}:G);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(G){console.error("Failed to update type",G)}}},[s,W]),Pe=r.useCallback(async I=>{if(d){ve(I);try{await fetch("/api/taskforce/taxonomies",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taxonomies:I})})}catch(b){console.error("[Taskforce] Failed to save taxonomies",b)}}},[d,ve]),Ce=r.useCallback(async I=>{if(d){J(I);try{await fetch("/api/taskforce/priorities",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({priorities:I})})}catch(b){console.error("[Taskforce] Failed to save priorities",b)}}},[d,J]),De=r.useCallback(I=>{const b=K(),R=new Set(I.categories.map(z=>z.value)),D=new Set(I.types.map(z=>z.value)),te=new Set(I.priorities.map(z=>Number(z.value))),N=Array.from(new Set(b.map(z=>String(z.category||"").trim()).filter(z=>z.length>0&&!R.has(z)))).sort(),G=Array.from(new Set(b.map(z=>String(z.type||"").trim()).filter(z=>z.length>0&&!D.has(z)))).sort(),be=Array.from(new Set(b.map(z=>Number(z.priority)).filter(z=>Number.isFinite(z)&&z>0&&!te.has(z)))).sort((z,ie)=>z-ie);return{unmatchedCategoryValues:N,unmatchedTypeValues:G,incompatiblePriorityValues:be}},[K]),U=r.useCallback(async I=>{if(!d)return{success:!1,error:"Settings are still loading."};const{pack:b,sections:R,remapExistingValuesToDefault:D,workspaceIdOverride:te}=I,N=String(te||"").trim(),G=N.length>0,be=G?[]:K(),z=ee=>{if(!N)return ee;const Q=ee.includes("?")?"&":"?";return`${ee}${Q}workspaceId=${encodeURIComponent(N)}`},ie=()=>{const ee={"Content-Type":"application/json"};return N&&(ee["x-taskforce-workspace-id"]=N),ee};try{if(R.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}))];G||x(Q);const q=await fetch(z("/api/taskforce/categories"),{method:"POST",headers:ie(),body:JSON.stringify({categories:Q})});if(!q.ok)return{success:!1,error:await A(q,"Failed to apply category library pack.")}}if(R.types){const ee=new Set(b.types.map(we=>we.value)),Q=b.types.find(we=>we.value===Fr)?.value||b.types[0]?.value||Fr;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(z("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ie(),body:JSON.stringify({updates:we})});if(!Te.ok)return{success:!1,error:await A(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"}))];G||W(q);const Se=await fetch(z("/api/taskforce/types"),{method:"POST",headers:ie(),body:JSON.stringify({types:q})});if(!Se.ok)return{success:!1,error:await A(Se,"Failed to apply task type library pack.")}}if(R.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=ue(b),Te=be.filter(Ee=>Q.includes(Number(Ee.priority))).map(Ee=>({id:Ee.id,priority:we}));if(Te.length>0){const Ee=await fetch(z("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ie(),body:JSON.stringify({updates:Te})});if(!Ee.ok)return{success:!1,error:await A(Ee,"Failed to remap task priorities to the pack default.")}}}const q=b.priorities.map(we=>({...we,value:Number(we.value)}));G||J(q);const Se=await fetch(z("/api/taskforce/priorities"),{method:"POST",headers:ie(),body:JSON.stringify({priorities:q})});if(!Se.ok)return{success:!1,error:await A(Se,"Failed to apply priority library pack.")}}return G||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,ue,A,y,x,W,J]);return{getCategoryPaths:h,validatePaths:pe,handleUpdateCategory:X,handleSaveCategory:M,handleAddPath:O,handleUpdateCategoryIcon:de,handleUpdateCategoryColor:ge,handleRemovePath:$,handleSelectPath:_e,handleRemoveCategory:je,handleSaveType:oe,handleRemoveType:ce,handleUpdateType:Re,handleUpdateTaxonomies:Pe,handleUpdatePriorities:Ce,analyzeSystemTaxonomyPack:De,handleApplySystemTaxonomyPack:U}}function Yw({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(),_=Array.isArray(v?.templates)?v.templates:[];return l(_),_}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 _ of v){const C=await fetch(_);if(!C.ok)continue;const x=await C.json();if(x?.template)return x.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 _=await fetch("/api/taskforce/workflow-editor/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g,draft:v})}),C=await _.json().catch(()=>({}));return!_.ok||!C.success?{success:!1,error:C.error||`Save failed (${_.status})`}:(d(),{success:!0})}catch(_){return{success:!1,error:_.message}}},[d]),h=r.useCallback(async g=>{try{const v=await fetch(`/api/taskforce/workflow-editor/reset/${encodeURIComponent(g)}`,{method:"POST"}),_=await v.json().catch(()=>({}));return!v.ok||!_.success?{success:!1,error:_.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 Jw(){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 Qw(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 Xw({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([]),_=r.useRef(!1),C=r.useRef(!1),x=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,O)=>O.aborted?M===O.reason?!0:M instanceof DOMException?M.name==="AbortError":String(M?.name||"").toLowerCase()==="aborterror":!1,[]),[J,me]=r.useState([]),ve=r.useRef(new Map),se=r.useCallback(M=>{!M.length||typeof window>"u"||(me(O=>Array.from(new Set([...O,...M]))),M.forEach(O=>{const de=ve.current.get(O);de&&window.clearTimeout(de);const ge=window.setTimeout(()=>{ve.current.delete(O),me($=>$.filter(_e=>_e!==O))},4e3);ve.current.set(O,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,_.current=!1,C.current=!1,x.current?.abort("workspace-reset"),x.current=null,W.current?.abort("workspace-reset"),W.current=null,typeof window<"u"&&(ve.current.forEach(M=>window.clearTimeout(M)),ve.current.clear()),me([])},[i]);const A=r.useCallback(async(M=!1,O)=>{if(!(O?.ignoreAuthGuard===!0)&&(d||m))return;o(!M);const ge=String(l()||"").trim();x.current?.abort("superseded");const $=new AbortController;x.current=$;try{const _e=await fetch("/api/taskforce/tasks",{signal:$.signal});if(_e.status===401){y(),n([]),M||o(!1);return}if(_e.ok){const oe=((await _e.json()).tasks||[]).map(Ce=>Mo(Ce));if(String(l()||"").trim()!==ge)return;const Re=new Map,Pe=[];for(const Ce of oe){const De=V(Ce);if(Re.set(Ce.id,De),!h.current)continue;const U=S.current.get(Ce.id);(!U||U!==De)&&Pe.push(Ce.id)}S.current=Re,h.current?se(Pe):h.current=!0,n(oe)}}catch(_e){if(B(_e,$.signal))return;console.error("[Taskforce] Failed to fetch tasks:",_e)}finally{x.current===$&&(x.current=null,o(!1))}},[V,l,se,y,n,o,k,d,m]),K=r.useCallback(async(M=!1,O)=>{if(!(O?.ignoreAuthGuard===!0)&&(d||m))return;const ge=String(l()||"").trim();W.current?.abort("superseded");const $=new AbortController;W.current=$;try{const _e=await fetch("/api/taskforce/archive",{signal:$.signal});if(_e.ok){const je=await _e.json();if(String(l()||"").trim()!==ge)return;const ce=(je.archived||[]).map(Re=>({...Mo(Re),isArchived:!0}));s(ce)}}catch(_e){if(B(_e,$.signal))return;console.error("[Taskforce] Failed to fetch archive:",_e)}finally{W.current===$&&(W.current=null)}},[l,B,s,d,m]),ue=r.useCallback(async M=>{const O=M?.isSilent!==!1,de=M?.ignoreAuthGuard===!0;await Promise.all([A(O,{ignoreAuthGuard:de}),K(O,{ignoreAuthGuard:de})])},[K,A]),pe=r.useCallback(async()=>{await Qw(_,C,async()=>{await ue({isSilent:!0})})},[ue]),X=r.useCallback(M=>{const O=Lv(M,g.current,v.current);g.current=O.tasks,v.current=O.archivedTasks,n(O.tasks),s(O.archivedTasks)},[n,s]);return{tasksRef:g,archivedTasksRef:v,recentlyChangedTaskIds:J,markRecentlyChangedTasks:se,fetchTasks:A,fetchArchive:K,refreshTaskCollections:ue,refreshTaskCollectionsFromInvalidation:pe,mergeTaskFromServer:X,getTaskRevisionKey:V}}function eb(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 kf="WS-",vf="IN-";function Po(e){return el(kf,e)}function ny(e){return sf(kf,e)}function um(e){return Am(kf,e)}function ns(e){return el(vf,e)}function tb(e){return sf(vf,e)}function ry(e){return Am(vf,e)}function vp(e,t){const n=String(t||"").trim();if(!n)return null;const s=tb(n);return e.find(o=>o.id===n||ns(o)===n||s!==null&&o.referenceNumber===s)||null}function ab(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 nb(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 rb(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:_,taxonomies:C,setActiveTab:x,setApproach:W,setAssignee:V,setAttachments:B,setAttachmentsDirty:J,setCategory:me,setChecklistItems:ve,setComments:se,setComplexity:A,setDescription:K,setDueDate:ue,setEditingTaskId:pe,setError:X,setFormTaxonomies:M,setIsOpen:O,setNewCommentText:de,setPendingNavigation:ge,setWorkstreamInput:$,setPriority:_e,setScheduledDate:je,setShowArchive:oe,setStatus:ce,setTaskReturnTrail:Re,setTitle:Pe,setType:Ce,setUnsavedModalOpen:De,taskReturnTrail:U,title:I}=e,b=r.useCallback(()=>n.find(Q=>String(Q.value||"").trim().length>0)?.value||Fr,[n]),R=r.useCallback(Q=>{if(m){y(),Q();return}if(!(I.trim()!==""||d.trim()!==""||l.length>0||h.trim()!==""||i.length>0||o.length>0)){Q();return}ge(()=>Q),De(!0)},[o,i.length,d,m,y,l,h,ge,De,I]),D=r.useCallback(()=>{O(!1)},[O]),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);me(Se?.value||Q)}else me(k(t));Ce(b()),_e(2),A(3),ce("task"),W("default"),V("unassigned"),je(""),ue(""),$(""),ve([]),M(ab(C)),se([]),de(""),B([]),J(!1),X("")},[t,k,b,S,W,V,B,J,me,ve,se,A,K,ue,pe,X,M,de,_e,je,ce,Pe,Ce,C]),N=r.useCallback(Q=>{const q=Q.trim();if(!q)return null;const Se=jg(q);if(Se){const Ee=g.find(nt=>nt.referenceNumber===Se);if(Ee)return Ee}const we=g.find(Ee=>Ee.id===q);if(we)return we;const Te=g.find(Ee=>Xi(Ee)===q);return Te||null},[g]),G=r.useCallback(Q=>{const q=Q.trim();if(!q)return null;const Se=q.toLowerCase(),we=ny(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 Ee=v.find(nt=>nt.title.trim().toLowerCase()===Se);return Ee||null},[v]),be=r.useCallback((Q,q)=>{q?.preserveReturnTrail||Re([]),pe(Q.id),Pe(Q.title),K(Q.description||""),me(Q.category||k(t)),Ce(Q.type||b()),_e(typeof Q.priority=="number"?Q.priority:2),A(typeof Q.complexity=="number"?Q.complexity:3),ce(Q.status||"task"),W(Q.approach||"default"),V(Q.assignee||"unassigned"),je(Q.scheduledDate||""),ue(Q.dueDate||"");const Se=Q.workstreamId&&v.find(we=>we.id===Q.workstreamId)||null;$(Se?Po(Se)||Se.id:""),ve(Q.checklistItems||[]),se(Q.comments||[]),M(Q.taxonomies||{}),Q.taxonomies?.approach&&W(Q.taxonomies.approach),B(Q.attachments||[]),J(!1),x("add")},[t,k,b,x,W,V,B,J,me,ve,se,A,K,ue,pe,M,_e,je,ce,Re,Pe,Ce,v]),z=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&&!_&&oe(!0),be(q,{preserveReturnTrail:!0}))},[s,m,be,g,oe,Re,_]),ie=r.useCallback(()=>{if(s!=="add"||!m||U.length===0)return!1;const Q=[...U];for(;Q.length>0;){const q=Q.pop();if(!q)continue;const Se=g.find(we=>we.id===q);if(Se)return Se.isArchived&&!_&&oe(!0),Re(Q),be(Se,{preserveReturnTrail:!0}),!0}return Re([]),!1},[s,m,be,g,oe,Re,_,U]),ee=r.useCallback(()=>{Re([])},[Re]);return{handleNavigation:R,handleClose:D,resetForm:te,resolveTaskIdInput:N,resolveWorkstreamIdInput:G,handleEdit:be,handleOpenTaskById:z,returnToPreviousTask:ie,clearReturnToParentTask:ee}}function sb(e){return e.map(t=>({...t}))}function ob(e){return e.map(t=>({...t}))}function ib(e){return e.map(t=>({...t}))}const cb={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"}]},lb=[{id:"general",label:"General",description:"A neutral starter pack for broad project and AI collaboration workflows.",isDefaultStarter:!0,categories:[{value:Qc,label:Cm,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"}]},cb];function sy(){return lb.map(e=>({...e,categories:sb(e.categories),types:ob(e.types),priorities:ib(e.priorities)}))}const Yc=[{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"}],eo=Yc.map(({value:e,label:t,icon:n,color:s})=>({value:e,label:t,icon:n,color:s}));function pd(e){const t=String(e||"task").trim().toLowerCase();return t==="completed"?Yc.find(n=>n.value==="done")||Yc[0]:Yc.find(n=>n.value===t)||Yc[0]}const oy=["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"],tc=oy.reduce((e,t)=>(e[t]=bs[t]||Ji,e),{}),HO=oy,mm=Object.fromEntries(sy().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),[])),db={PDF:"red-500",DOC:"blue-500",DOCX:"blue-500",CSV:"teal-500",JSON:"amber-500",TXT:"violet-200",MD:"violet-200"},wh={"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"},GO=["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 Nn(e){if(e)return wh[e]?wh[e]:e}function ub(e){const t=String(e||"").trim().toLowerCase();return Nn(mm[t]?.color)||Nn("violet-200")||"#9c7aeb"}function VO(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 mb(e){const t=String(e||"").trim().toUpperCase();return Nn(db[t])||"var(--text-muted)"}const pb=/[\u2010-\u2015\u2212]/g;function Sf(e){return String(e??"").trim().replace(pb,"-").replace(/\s+/g," ").toLowerCase()}function Tm(e){const t=Sf(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 Rm(e){const t=Sf(e);return{raw:t,tokens:t?t.split(" ").filter(Boolean):[],referenceToken:Tm(e)}}function as(e,t){const n=String(t??"").trim();n&&e.push(n)}function Vc(e,t,n){const s=String(n??"").trim();if(!s)return;const o=t?.find(l=>String(l.value)===s);as(e,o?.label)}function fb(e,t={}){const n=[];return as(n,e.title),as(n,e.description),as(n,e.id),as(n,Xi(e)),as(n,e.category),as(n,e.type),as(n,e.priority),as(n,e.status),as(n,e.assignee||"unassigned"),as(n,e.canceledReason),Vc(n,t.categories,e.category),Vc(n,t.types,e.type),Vc(n,t.priorities,e.priority),Vc(n,eo,e.status),Vc(n,t.assigneeOptions,e.assignee||"unassigned"),Object.entries(e.taxonomies||{}).forEach(([s,o])=>{const l=t.taxonomies?.find(d=>d.id===s);as(n,l?.label),(Array.isArray(o)?o:[o]).forEach(d=>{as(n,d),Vc(n,l?.options,d)})}),n}function pm(e,t,n={}){const s=typeof t=="string"?Rm(t):t;if(!s.raw)return!0;const o=fb(e,n),i=o.map(Sf).filter(Boolean).join(" ");return i.includes(s.raw)||s.referenceToken&&o.map(Tm).some(m=>m?.includes(s.referenceToken))?!0:s.tokens.length>0&&s.tokens.every(d=>i.includes(d))}function hb(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 Cd(e,t){const n=e.filter(o=>o.status!=="retired"),s=e.filter(o=>o.status==="retired"&&t.some(l=>hb(l,o.id)));return[...n,...s.filter(o=>!n.some(l=>l.id===o.id))]}function iy(e,t=[]){return Cd(e,t).filter(n=>n.sortEnabled===!0).map(n=>({value:`taxonomy:${n.id}`,label:n.status==="retired"?`${n.label} (Retired)`:n.label}))}function bh(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 Hi(e,t){return new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()}function fm(e,t,n,s,o=[]){let l=0;if(n==="created")return l=Hi(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=sm(e.priority),d=sm(t.priority);return l=i!==d?d-i:Hi(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:Hi(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=Hi(e,t),s==="desc"?l:-l;const m=bh(e,d),y=bh(t,d);return m===null&&y===null?Hi(e,t):m===null?1:y===null?-1:m!==y?s==="desc"?y-m:m-y:Hi(e,t)}return l=Hi(e,t),s==="desc"?l:-l}function gb(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 wf(e,t){const n=e.options.filter(o=>o.status!=="retired"),s=e.options.filter(o=>o.status==="retired"&&t.some(l=>gb(l,e.id,o.value)));return[...n,...s.filter(o=>!n.some(l=>String(l.value)===String(o.value)))]}function yb({tasks:e,archivedTasks:t,activeCategories:n,activeTypes:s,priorities:o,taxonomies:l,configLoaded:i,referenceDataLoaded:d,assigneeOptionsLoaded:m,assigneeOptions:y}){const k=r.useMemo(()=>Ug(y),[y]),S=r.useMemo(()=>Cd(l,[...e,...t]).filter(z=>z.filterEnabled!==!1).map(z=>({...z,options:wf(z,[...e,...t])})),[t,e,l]),h=r.useMemo(()=>k.map(z=>z.value),[k]),[g,v]=r.useState(""),[_,C]=r.useState([]),[x,W]=r.useState([]),[V,B]=r.useState([]),[J,me]=r.useState(!1),[ve,se]=r.useState(eo.map(z=>z.value)),[A,K]=r.useState(h),[ue,pe]=r.useState(!0),[X,M]=r.useState({}),[O,de]=r.useState("created"),[ge,$]=r.useState("desc"),_e=r.useCallback(()=>{$(z=>z==="asc"?"desc":"asc")},[]),[je,oe]=r.useState("status"),[ce,Re]=r.useState("show"),[Pe,Ce]=r.useState({}),De=r.useCallback((z,ie)=>ie.length===0?!0:ie.every(ee=>z.includes(ee)),[]),U=r.useCallback((z,ie)=>z.length===ie.length&&z.every((ee,Q)=>ee===ie[Q]),[]);r.useEffect(()=>{je==="approach"&&oe("status")},[je]),r.useEffect(()=>{if(!(!i||!d)&&m&&!J&&n.length>0&&s.length>0&&o.length>0){C(n.map(ie=>ie.value)),W(o.map(ie=>ie.value)),B(s.map(ie=>ie.value)),K(h),pe(!0);const z={};S.forEach(ie=>{z[ie.id]=ie.options.map(ee=>ee.value)}),M(z),me(!0)}},[i,d,m,n,s,o,S,J,h]),r.useEffect(()=>{if(!J||!m)return;const z=new Set(h),ie=A.filter(q=>z.has(q)),ee=ue?h:ie.length>0||A.length===0?ie:h;(ee.length!==A.length||ee.some((q,Se)=>q!==A[Se]))&&K(ee)},[h,A,ue,J,m]),r.useEffect(()=>{if(!J||!m)return;const z=A.filter(ee=>h.includes(ee)),ie=h.length>0&&h.every(ee=>z.includes(ee));ie!==ue&&pe(ie)},[h,A,ue,J,m]),r.useEffect(()=>{if(!i||!d||!J||n.length===0)return;const z=Wv(_,n);(z.length!==_.length||z.some((ee,Q)=>ee!==_[Q]))&&C(z)},[i,d,n,J,_]),r.useEffect(()=>{if(!i||!d||!J||o.length===0||x.length===0)return;const z=Bv(x,o),ie=Array.from(new Set(x.map(Q=>Number(Q)).filter(Q=>Number.isFinite(Q))));(z.length!==ie.length||z.some((Q,q)=>Q!==ie[q]))&&W(z)},[i,d,J,o,x]),r.useEffect(()=>{if(!i||!d||!J||s.length===0)return;const z=new Set(s.map(Q=>Q.value)),ie=V.filter(Q=>z.has(Q)),ee=ie.length>0||V.length===0?ie:s.map(Q=>Q.value);U(ee,V)||B(ee)},[s,i,V,J,U,d]),r.useEffect(()=>{if(!i||!d||!J)return;const z={};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]:[],Ee=Te.filter(nt=>we.includes(nt));z[Se.id]=Ee.length>0||Te.length===0?Ee:we});const ie=Object.keys(X).sort(),ee=Object.keys(z).sort(),Q=ie.length!==ee.length||ie.some((Se,we)=>Se!==ee[we]),q=ee.some(Se=>!U(X[Se]||[],z[Se]||[]));(Q||q)&&M(z)},[i,X,S,J,U,d]);const I=r.useCallback(()=>{v(""),C(n.map(ie=>ie.value)),W(o.map(ie=>ie.value)),B(s.map(ie=>ie.value)),se(eo.map(ie=>ie.value)),K(h),pe(!0);const z={};S.forEach(ie=>{z[ie.id]=ie.options.map(ee=>ee.value)}),M(z),de("created"),$("desc")},[n,o,s,S,h]),b=r.useCallback(z=>{K(ie=>{const ee=typeof z=="function"?z(ie):z,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]),R=r.useMemo(()=>Rm(g),[g]),D=r.useMemo(()=>({categories:n,types:s,priorities:o,assigneeOptions:k,taxonomies:l}),[n,s,o,k,l]),te=r.useMemo(()=>{const z=De(_,n.map(q=>q.value)),ie=De(V,s.map(q=>q.value)),ee=De(Array.from(new Set(x.map(q=>Number(q)).filter(q=>Number.isFinite(q)))),o.map(q=>Number(q.value)).filter(q=>Number.isFinite(q))),Q=De(ve,eo.map(q=>q.value));return e.filter(q=>{const Se=pm(q,R,D),we=!J||z||_.includes(q.category),Te=!J||ee||up(q.priority,x),Ee=!J||ie||V.includes(q.type||Fr),nt=!J||Q||ve.includes(q.status),gt=!J||ue||A.includes(q.assignee||"unassigned"),dt=Object.entries(X).every(([St,Ze])=>{const Ct=S.find(lt=>lt.id===St);if(!Ct)return!0;const ut=Ct?.options.every(lt=>Ze.includes(lt.value))??!0;if(ut)return!0;const Xe=q.taxonomies?.[St];return Xe?Array.isArray(Xe)?Xe.some(lt=>Ze.includes(lt)):Ze.includes(Xe):ut||Ze.includes("")});return Se&&we&&Te&&Ee&&nt&>&&dt}).sort((q,Se)=>fm(q,Se,O,ge,l))},[e,t,R,D,_,x,V,ve,A,ue,X,O,ge,J,S,n,s,o,De,l]),N=r.useMemo(()=>{const z=De(_,n.map(q=>q.value)),ie=De(V,s.map(q=>q.value)),ee=De(Array.from(new Set(x.map(q=>Number(q)).filter(q=>Number.isFinite(q)))),o.map(q=>Number(q.value)).filter(q=>Number.isFinite(q))),Q=De(ve,eo.map(q=>q.value));return e.filter(q=>{const Se=!J||z||_.includes(q.category),we=!J||ee||up(q.priority,x),Te=!J||ie||V.includes(q.type||Fr),Ee=!J||Q||ve.includes(q.status),nt=!J||ue||A.includes(q.assignee||"unassigned"),gt=Object.entries(X).every(([dt,St])=>{const Ze=S.find(Xe=>Xe.id===dt);if(!Ze)return!0;const Ct=Ze?.options.every(Xe=>St.includes(Xe.value))??!0;if(Ct)return!0;const ut=q.taxonomies?.[dt];return ut?Array.isArray(ut)?ut.some(Xe=>St.includes(Xe)):St.includes(ut):Ct||St.includes("")});return Se&&we&&Te&&Ee&&nt&>})},[e,t,_,x,V,ve,A,ue,X,J,S,n,s,o,De]),G=r.useMemo(()=>{const z=n.every(Q=>_.includes(Q.value)),ie=De(V,s.map(Q=>Q.value)),ee=De(Array.from(new Set(x.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=pm(Q,R,D),Se=!J||z||_.includes(Q.category),we=!J||ee||up(Q.priority,x),Te=!J||ie||V.includes(Q.type||Fr),Ee=!J||ue||A.includes(Q.assignee||"unassigned"),nt=Object.entries(X).every(([gt,dt])=>{const St=S.find(ut=>ut.id===gt);if(!St)return!0;const Ze=St?.options.every(ut=>dt.includes(ut.value))??!0;if(Ze)return!0;const Ct=Q.taxonomies?.[gt];return Ct?Array.isArray(Ct)?Ct.some(ut=>dt.includes(ut)):dt.includes(Ct):Ze||dt.includes("")});return q&&Se&&we&&Te&&Ee&&nt}).sort((Q,q)=>fm(Q,q,O,ge,l))},[t,R,D,_,x,V,A,ue,X,O,ge,J,n,s,o,S,De,l]),be=r.useMemo(()=>{const z={};return te.forEach(ie=>{const ee=n.find(q=>q.value===ie.category),Q=ee?ee.label:ie.category||"General";z[Q]||(z[Q]=[]),z[Q].push(ie)}),z},[te,n]);return{searchQuery:g,setSearchQuery:v,filterCategories:_,setFilterCategories:C,filterPriorities:x,setFilterPriorities:W,filterTypes:V,setFilterTypes:B,filterStatus:ve,setFilterStatus:se,filterAssignees:A,setFilterAssignees:b,filterAssigneesAllSelected:ue,setFilterAssigneesAllSelected:pe,filterTaxonomies:X,setFilterTaxonomies:M,hasInitedFilters:J,setHasInitedFilters:me,sortBy:O,setSortBy:de,sortOrder:ge,setSortOrder:$,toggleSortOrder:_e,groupBy:je,setGroupBy:oe,emptyColumnMode:ce,setEmptyColumnMode:Re,collapsedCategories:Pe,setCollapsedCategories:Ce,clearFilters:I,filteredTasks:te,searchAgnosticTasks:N,filteredArchive:G,groupedTasks:be}}const kb=yb;function vb(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:_,formTaxonomies:C,getPreferredCategoryValue:x,mergeTaskFromServer:W,workstreamInput:V,priority:B,pushNotice:J,queueWorkspaceSyncFromAuthoritativeTaskState:me,relationshipTasks:ve,resetForm:se,resolveWorkstreamIdInput:A,scheduledDate:K,setActiveTab:ue,setAttachmentsDirty:pe,setComments:X,setError:M,setLastUsedCategory:O,setLoading:de,setNewCommentText:ge,status:$,title:_e,taxonomies:je,type:oe}=e,[ce,Re]=r.useState(null),[Pe,Ce]=r.useState("idle"),[De,U]=r.useState(null),I=r.useRef(null),b=r.useCallback(()=>JSON.stringify({title:_e.trim(),description:h||"",category:typeof m=="string"?m:m.label||x(t),type:typeof oe=="string"?oe:oe.label||Fr,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:C,attachments:i}),[t,o,l,i,m,y,k,S,h,g,C,x,B,K,_e,oe,V]),R=r.useCallback(()=>{I.current!==null&&(window.clearTimeout(I.current),I.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&&Ce(q==="autosave"?"error":"idle"),!1;const Se=je.filter(we=>we.isRequired).filter(we=>{const Te=C[we.id];return Array.isArray(Te)?Te.filter(Ee=>String(Ee).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&&Ce(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."),Ce(q==="autosave"?"error":"idle"),!1;de(!0),M(""),v&&Ce("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",Ee=typeof m=="string"?m:m.label||x(t),nt=typeof oe=="string"?oe:oe.label||Fr,gt=V.trim()?A(V):null,dt={title:_e,description:h||null,category:Ee||x(t),type:nt,priority:B,complexity:Number(S)||3,status:v?void 0:$,completedAt:v?void 0:$==="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:C,...v?{}:{createdAt:new Date().toISOString(),createdBy:"user"}};(!v||d)&&(dt.attachments=i),v&&(dt.saveSource=q);const St=await fetch(we,{method:Te,headers:{"Content-Type":"application/json"},body:JSON.stringify(dt)});if(!St.ok){const ut=(await St.json()).message||`Failed to ${v?"update":"save"} task`;return M(ut),Q||J(ut,"error"),de(!1),v&&Ce("error"),!1}const Ze=await St.json().catch(()=>null);return v&&Ze&&typeof Ze=="object"&&(W(Ze),me()),O(Ee),pe(!1),de(!1),v&&Ce("saved"),!0}catch{return M("Failed to connect to server"),Q||J("Failed to connect to server","error"),de(!1),v&&Ce("error"),!1}},[t,s,o,l,i,d,m,y,k,S,h,g,v,C,x,W,V,B,J,me,A,pe,M,O,de,K,$,_e,je,oe]),te=r.useCallback(async()=>{await D({source:"manual"})&&(v||J("Task added successfully","success"),n==="add"&&!v&&(se(),ue("tasks"),await _()))},[n,v,_,J,se,D,ue]);r.useEffect(()=>{if(R(),!v){U(null),Ce("idle");return}U(b()),Ce("idle")},[R,v]);const N=r.useCallback(async()=>{if(R(),!v||De===null)return;const ee=b();if(ee===De||!_e.trim()||g&&K&&g<K)return;await D({quiet:!0,source:"autosave"})&&U(ee)},[b,R,g,v,De,D,K,_e]);r.useEffect(()=>{if(!v||De===null)return;const ee=b();if(ee!==De){if(!_e.trim()){Ce("idle");return}if(g&&K&&g<K){Ce("error");return}return Ce(Q=>Q==="error"?"error":"idle"),R(),I.current=window.setTimeout(async()=>{await D({quiet:!0,source:"autosave"})&&U(ee)},700),()=>{R()}}},[b,R,g,v,De,D,K,_e]);const G=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]),z=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=Mo(Se);X(we.comments||[]),W(Se),U(b()),Ce("saved")}else await _(!0);me()}catch(q){console.error("Failed to add comment",q),M("Failed to add comment."),J("Failed to add comment.","error")}},[v,_,b,W,J,me,X,M,ge]);return{autoSaveState:Pe,flushAutoSave:N,scheduleWarningPrompt:ce,saveTask:D,handleSubmit:G,confirmScheduleWarning:be,cancelScheduleWarning:z,handleAddComment:ie}}function Sb(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(C=>C.id===t);if(!h)return;const g=typeof S=="string"?S.trim():S===null?"":o.trim(),v=g?m(g):null,_=g.length>0?v?.id||g:null;if((h.workstreamId||null)===_){l(_?"Task already belongs to that workstream.":"Task is already standalone.","info");return}try{const C=await fetch(`/api/taskforce/task/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({workstreamId:_})});if(!C.ok){const V=(await C.json().catch(()=>({}))).error||"Failed to set workstream.";y(V),l(V,"error");return}y(""),l(_?"Workstream set":"Workstream removed","info");const x=await C.json().catch(()=>null);x?(s(x),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 wb({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:_,isAuthenticated:C,workspaceCloudSyncEnabled:x,buildWorkspaceSyncSignature:W,pushWorkspaceChangesToCloud:V,workspacePendingSignatureRef:B,workspaceDeletedTaskIdsRef:J,workspaceDeletedTaskWatermarksRef:me}){const[ve,se]=r.useState(null),A=r.useRef(null),K=r.useRef(null),ue=r.useRef(null);r.useEffect(()=>()=>{typeof window>"u"||(K.current!==null&&(window.clearTimeout(K.current),K.current=null),ue.current=null)},[]);const pe=r.useCallback((U=0)=>{if(!(v&&_==="local"&&C&&x)||typeof window>"u")return;const I=Math.max(0,U),b=Date.now()+I,R=ue.current;if(K.current!==null){if(I<=0||R!==null&&R>=b)return;window.clearTimeout(K.current),K.current=null}ue.current=b,K.current=window.setTimeout(()=>{K.current=null,ue.current=null;const D=W();D&&(B.current=D,V(D))},I)},[v,_,C,x,W,B,V]),X=r.useCallback(async(U,I)=>{let b=await fetch(`/api/taskforce/deleted${U}`,I);return b.status===404&&(b=await fetch(`/api/taskforce/trash${U}`,I)),b},[]),M=async(U,I=!1,b={})=>{if(!b.skipConfirm&&!confirm("Move this task to Trash? You can restore it later."))return!1;const R=I||t.some(D=>D.id===U);try{const D=await fetch(`/api/taskforce/task/${U}`,{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(()=>({})),N=te?.deleted&&typeof te.deleted=="object"&&te.deleted.taskSnapshot?{...te.deleted,taskSnapshot:Mo(te.deleted.taskSnapshot)}:null;if(window.location.search.includes(U)){const G=new URL(window.location.href);G.searchParams.delete("task"),window.history.pushState({},"",G.toString())}if(R?o(G=>G.filter(be=>be.id!==U)):s(G=>G.filter(be=>be.id!==U)),N){l(be=>[N,...be.filter(z=>z.taskId!==U)]);const G=String(N.deletedAt||"").trim();Number.isFinite(Date.parse(G))&&me.current.set(U,G)}else await S(!0),me.current.set(U,new Date().toISOString());if(J.current.add(U),v&&_==="local"&&C&&x){const G=W();B.current=G,V(G)}return n===U&&(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}},O=r.useCallback(async U=>{try{const I=await X(`/${U}/restore`,{method:"POST"});if(!I.ok){const te=(await I.json().catch(()=>({}))).error||"Failed to restore deleted task.";return i(te),g(te,"error"),null}const b=await I.json().catch(()=>null);b?h(b):await y(!0),l(D=>D.filter(te=>te.id!==U&&te.taskId!==U));const R=String(b?.id||"").trim();return J.current.delete(U),me.current.delete(U),R&&(J.current.delete(R),me.current.delete(R)),pe(),i(""),g("Task restored from Trash.","info"),b?Mo(b):null}catch(I){return console.error("Failed to restore deleted task:",I),i("Failed to restore deleted task."),g("Failed to restore deleted task.","error"),null}},[y,h,g,pe,X,l,i]),de=r.useCallback(async U=>{try{const I=await X(`/${U}`,{method:"DELETE"});if(!I.ok){const R=(await I.json().catch(()=>({}))).error||"Failed to permanently delete deleted task.";return i(R),g(R,"error"),!1}return l(b=>b.filter(R=>R.id!==U&&R.taskId!==U)),pe(),i(""),g("Deleted task permanently removed.","info"),!0}catch(I){return console.error("Failed to permanently delete deleted task:",I),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 U=await X("/empty",{method:"POST"});if(!U.ok){const D=(await U.json().catch(()=>({}))).error||"Failed to permanently delete deleted tasks.";return i(D),g(D,"error"),null}const I=await U.json().catch(()=>({})),b=Number(I?.deleted||0);return l([]),pe(),i(""),g(b===1?"Deleted task permanently removed.":`${b} deleted tasks permanently removed.`,"info"),b}catch(U){return console.error("Failed to empty deleted tasks:",U),i("Failed to permanently delete deleted tasks."),g("Failed to permanently delete deleted tasks.","error"),null}},[g,pe,X,l,i]),$=r.useCallback(async(U,I)=>{const b=e,R=t;s(D=>D.map(te=>te.id===U?{...te,...I}:te)),o(D=>D.map(te=>te.id===U?{...te,...I}:te));try{const D=await fetch(`/api/taskforce/task/${U}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(I)});if(!D.ok){const G=(await D.json().catch(()=>({}))).error||`Failed to update task ${U}.`;i(G),g(G,"error"),s(b),o(R);return}const te=await D.json().catch(()=>null);h(te),pe(I.attachments!==void 0?150:0),i("")}catch(D){console.error("Failed to update task",D);const te=`Failed to update task ${U}.`;i(te),g(te,"error"),s(b),o(R)}},[e,t,g,h,pe]);return{copiedId:ve,handleDelete:M,handleUpdateTask:$,handleToggleComplete:async U=>{const I=U.status==="done"?"task":"done",b=I==="done"?new Date().toISOString():void 0,R={status:I,completedAt:b,completed:I==="done",inProgress:!1,readyForReview:!1,cancelled:!1},D=e,te=t;s(N=>N.map(G=>G.id===U.id?{...G,...R}:G)),o(N=>N.map(G=>G.id===U.id?{...G,...R}:G));try{const N=await fetch(`/api/taskforce/task/${U.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:I,completedAt:b})});if(!N.ok){const z=(await N.json().catch(()=>({}))).error||"Failed to update task status.";i(z),g(z,"error"),s(D),o(te);return}const G=await N.json().catch(()=>null);G?(h(G),pe()):(await y(!0),pe()),i("")}catch(N){console.error("Failed to toggle complete",N),i("Failed to update task status."),g("Failed to update task status.","error"),s(D),o(te)}},handleToggleCancel:async U=>{const I=U.status==="cancelled"?"task":"cancelled";try{const b=await fetch(`/api/taskforce/task/${U.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:I})});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 R=await b.json().catch(()=>null);R?(h(R),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 U=>{const I=U.status==="in-progress"?"task":"in-progress";s(b=>b.map(R=>R.id===U.id?{...R,status:I}:R));try{const b=await fetch(`/api/taskforce/task/${U.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:I})});if(!b.ok){await y(!0);return}const R=await b.json().catch(()=>null);h(R),pe()}catch{y()}},handleToggleReview:async U=>{const I=U.status==="review"?"task":"review";s(b=>b.map(R=>R.id===U.id?{...R,status:I}:R));try{const b=await fetch(`/api/taskforce/task/${U.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:I})});if(!b.ok){await y(!0);return}const R=await b.json().catch(()=>null);h(R),pe()}catch{y()}},handleArchiveTask:async U=>{try{const b=U.status==="cancelled"?"cancel":"complete",R=await fetch(`/api/taskforce/task/${U.id}/${b}`,{method:"POST"});if(R.ok){const D=await R.json().catch(()=>null),te=[];if(D&&typeof D=="object"&&te.push(D),te.length>0){for(const G of te)h(G);pe()}else k();const N=new Set(te.map(G=>String(G?.id||"").trim()).filter(G=>G.length>0));n&&N.has(n)&&(d(),m("tasks"))}else{const te=(await R.json().catch(()=>({}))).error||"Failed to archive task.";i(te),g(te,"error")}}catch(I){console.error("Failed to archive",I),i("Failed to archive task."),g("Failed to archive task.","error")}},handleBulkArchive:async()=>{const U=e.filter(I=>I.status==="done"||I.status==="cancelled");if(U.length!==0&&confirm(`Archive ${U.length} completed/cancelled tasks?`))try{const I=await fetch("/api/taskforce/bulk-archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:U.map(b=>b.id)})});if(I.ok){const b=await I.json(),R=Array.isArray(b?.results?.archived)?b.results.archived:[];if(R.length>0){for(const D of R)h(D);pe()}else s(D=>D.filter(te=>!["done","cancelled"].includes(te.status))),k();g(`${b.archived||U.length} tasks archived`,"info"),i("")}else{const R=(await I.json().catch(()=>({}))).error||"Failed to bulk archive tasks.";i(R),g(R,"error")}}catch(I){console.error("Failed to bulk archive",I),i("Failed to bulk archive tasks."),g("Failed to bulk archive tasks.","error")}},handleUnarchive:async U=>{try{const I=await fetch(`/api/taskforce/task/${U}/unarchive`,{method:"POST"});if(I.ok){const b=await I.json().catch(()=>null);b?(h(b),pe()):(o(R=>R.filter(D=>D.id!==U)),await y(!0),pe()),i(""),g("Task restored from archive.","info")}}catch(I){console.error("Failed to unarchive",I),i("Failed to unarchive task."),g("Failed to unarchive task.","error")}},handleRestoreDeletedTask:O,handlePermanentlyDeleteDeletedTask:de,handleEmptyDeletedTasks:ge,handleCopyId:(U,I)=>{U.stopPropagation(),navigator.clipboard.writeText(I),se(I),A.current!==null&&window.clearTimeout(A.current),A.current=window.setTimeout(()=>{A.current=null,se(null)},2e3)},queueWorkspaceSyncFromAuthoritativeTaskState:pe}}const bb=wb;function Fu(e){return e==="/api/taskforce/auth/runtime-config"||e==="/api/taskforce/sync/workspace/apply-local"||e==="/api/taskforce/sync/workspace/repair-startup"}function _b(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 Cb({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")&&!Fu(l)?t(l):l;if(l instanceof URL)return n!=="cloud"?l:l.origin===window.location.origin&&l.pathname.startsWith("/api/taskforce")?Fu(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 Fu(i.pathname)?l:t(`${i.pathname}${i.search}${i.hash}`)}return l};return window.fetch=((l,i)=>{const d=o(l),m=_b(d);if(!!!(m&&m.pathname.startsWith("/api/taskforce")&&!Fu(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((_,C)=>h.set(C,_)),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 od=12e3,Ab=3e4,xb=2e4;function Ou(e){return e==="cloud"?Ab:od}function _h(){return typeof performance<"u"?performance.now():Date.now()}function Ib({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:_,setAuthUserDisplayName:C,setAuthUserAvatarUrl:x,setUserGlobalSyncStatus:W,setUserGlobalSyncError:V,setHasBetaAccess:B,setAvailableWorkspaces:J,setHydratedWorkspaceRole:me,setAssigneeOptions:ve,setAuthBlocked:se,setAuthSessionResolved:A,setError:K,applyResolvedWorkspaceId:ue,readPersistedWorkspaceId:pe,authSessionRequestRef:X,authSessionEpochRef:M,authSessionLastCheckedAtRef:O,authSessionLastResultRef:de,isLoopbackHost:ge,setAuthStateReadyRefs:$}){const _e=r.useCallback(async oe=>{const ce=oe?.force===!0;if(m("auth"),!e)return de.current;if(!t)return k("local"),S(!1),h(!1),g("anonymous"),v(""),rd(null),_(""),C(""),x(""),W("disconnected"),V(null),B(!0),J([]),me(null),ve(ci()),se(!1),A(!0),$(!1,!0,!1),de.current=!1,O.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-O.current<1500)return de.current;const Ce=++M.current;let De=null;return De=(async()=>{const U=_h(),I=new AbortController,b=typeof window<"u"?window.setTimeout(()=>I.abort(),xb):null,R=()=>M.current!==Ce,D=(te,N)=>{zt(te,{durationMs:Math.max(0,Math.round(_h()-U)),force:ce,sessionUrl:Re,...N})};try{const te=await fetch(Re,{method:"GET",credentials:"include",mode:"cors",signal:I.signal});if(R())return de.current;if(te.status===429)return A(!0),$(de.current,!0,!1),D("auth_session_rate_limited",{status:te.status}),de.current;if(!te.ok)return R()?de.current:(ge&&rd(null),A(!0),$(!1,!0,!1),de.current=!1,D("auth_session_request_failed",{status:te.status}),!1);const N=await te.json();if(R())return de.current;const G=!!N.authRequiredForApi,be=!!N.authenticated,z=be?N.betaAccess!==!1:!0,ie=typeof N.workspaceId=="string"&&N.workspaceId.trim().length>0?N.workspaceId.trim():"",ee=typeof N.userId=="string"&&N.userId.trim().length>0?N.userId.trim():"anonymous",Q=typeof N.email=="string"&&N.email.trim().length>0?N.email.trim().toLowerCase():"",q=typeof N.displayName=="string"?N.displayName.trim():"",Se=typeof N.avatarUrl=="string"?N.avatarUrl.trim():"",we=i==="local",Te=i==="local"||o,Ee=o||we?!1:G;return S(Ee),h(be),g(be?ee:"anonymous"),v(be?ie:""),ge&&rd(be?ee:null),_(be?Q:""),C(be?q:""),x(be?Se:""),be&&K(nt=>nt===l?"":nt),W(be?"idle":"disconnected"),V(null),B(z),Te||ue(ie||pe(d)||"default",{preserveNonDefaultDefault:!0}),se(o||we?!1:G&&!be),A(!0),$(be,!0,Ee),de.current=be,be&&m("ready"),D("auth_session_resolved",{status:te.status,authenticated:be,workspaceId:be?ie:"",userId:be?ee:"anonymous",authRequiredForApi:Ee}),be}catch(te){return R()||(ge&&rd(null),A(!0),$(!1,!0,!1),de.current=!1,y("Unable to verify your session."),D("auth_session_exception",{error:te instanceof Error?te.message:String(te)})),de.current}finally{b!==null&&typeof window<"u"&&window.clearTimeout(b),R()||(O.current=Date.now()),De&&X.current===De&&(X.current=null)}})(),X.current=De,De},[e,t,n,s,o,l,i,d,m,y,k,S,h,g,v,_,C,x,W,V,B,J,me,ve,se,A,K,ue,pe,X,M,O,de,ge,$]),je=i==="local"&&ge&&t?ff():"";return r.useEffect(()=>{je&&(h(!0),A(!0),g(je),$(!0,!0,!1),de.current=!0)},[je,A,$,g,h,de]),r.useEffect(()=>{if(i!=="local"||!t||typeof window>"u")return;const oe=()=>{_e()},ce=()=>{document.visibilityState==="visible"&&oe()};window.addEventListener("focus",oe),window.addEventListener("online",oe),document.addEventListener("visibilitychange",ce);const Re=window.setInterval(oe,3e4);return()=>{window.removeEventListener("focus",oe),window.removeEventListener("online",oe),document.removeEventListener("visibilitychange",ce),window.clearInterval(Re)}},[i,t,_e]),{checkAuthSession:_e}}function Tb(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 Rb(e){return!!(!e.isOpen||!e.canCallProtectedApi||e.authBlocked||e.authRequiredForApi&&!e.isAuthenticated)}function jb(e){return!!(e.shouldGateProtectedApiCalls&&!e.authSessionResolved||e.authRequiredForApi&&!e.isAuthenticated)}function Ch(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 Nb(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 Pb(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=>({...wv(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:Ch(s.aliases),options:Array.isArray(s.options)?s.options.map(o=>({...o,aliases:Ch(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 Mb(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:_,fetchInitiativeTemplates:C,loadAvailableEnvironments:x,setReferenceDataLoaded:W,setCustomCategories:V,setCustomTypes:B,setPriorities:J,setTaxonomies:me,setTaxonomyDisplayLabels:ve,setConfigLoaded:se,hasLoadedUiStateRef:A,currentWorkspaceIdRef:K,referenceDataRequestRef:ue,referenceDataAbortRef:pe,bootstrapConfigAbortRef:X,workspaceListAbortRef:M,assigneeOptionsAbortRef:O,workspaceListHydratedRef:de,setAvailableWorkspaces:ge,runtimeMode:$,applyResolvedWorkspaceId:_e,workspaceSwitchingEnabled:je,authSessionResolved:oe,isAuthenticated:ce,authUserId:Re,authUserAvatarUrl:Pe,setHydratedWorkspaceRole:Ce,setAssigneeOptions:De,setAssigneeOptionsLoaded:U,commitCurrentWorkspaceId:I,currentWorkspaceId:b,workspaceSelectionScope:R,abortWorkspaceScopedRequests:D,setWorkspaceBootstrapPending:te,checkAuthSession:N,lastConfigRefreshKeyRef:G,lastAssigneeOptionsLoadKeyRef:be,lastWorkspaceSyncStateLoadKeyRef:z,lastTaskSurfaceLoadKeyRef:ie,lastSettingsSurfaceLoadKeyRef:ee,isOpen:Q,activeTab:q,showArchive:Se,taskScope:we,settingsSection:Te,workspaceBootstrapPending:Ee,fetchTasks:nt,fetchArchive:gt,fetchPlanningEntities:dt,refreshTaskCollections:St,loadWorkspaceSyncState:Ze,archiveBootstrapTimerRef:Ct,hasBootstrappedDataRef:ut}=e,Xe=r.useCallback(async Fe=>{const et=Fe?.ignoreAuthGuard===!0,Ge=Fe?.force===!0;if(!et&&(t||n)){zt("bootstrap_reference_data_skipped",{reason:n?"auth_blocked":"auth_deferred",runtimeMode:$,workspaceId:String(s().workspaceId||"").trim()||"default",force:Ge});return}const Qe=s(),yt=String(Qe.workspaceId||"").trim()||"default";if(!($!=="cloud"||!oe||!ce||yt!==""&&yt!=="default")){zt("bootstrap_reference_data_skipped",{reason:"workspace_unresolved",runtimeMode:$,workspaceId:yt,force:Ge});return}if(!Ge&&ue.current?.workspaceId===Qe.workspaceId){zt("bootstrap_reference_data_reused",{workspaceId:yt,force:Ge}),await ue.current.promise;return}W(!1);const ae=qa(),Ve=new AbortController;pe.current=Ve;const bt=(async()=>{await Promise.allSettled([(async()=>{let Ot="empty-taxonomy-state";const Dt=await fetch("/api/taskforce/taxonomy-state",{signal:Ve.signal});if(!Dt.ok)return;const Ue=await Dt.json().catch(()=>({}));if(Nb(Ue))Ot="taxonomy-state";else{Ot="fallback-endpoints";const[vt,E,c,Y]=await Promise.all([fetch("/api/taskforce/categories",{signal:Ve.signal}),fetch("/api/taskforce/types",{signal:Ve.signal}),fetch("/api/taskforce/priorities",{signal:Ve.signal}),fetch("/api/taskforce/taxonomies",{signal:Ve.signal})]),[ye,Ie,qe,Ke]=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({})]);Ue.categories=ye.categories,Ue.types=Ie.types,Ue.priorities=qe.priorities,Ue.taxonomies=Ke.taxonomies}const Et=Pb(Ue);if(o(Qe)){zt("bootstrap_reference_data_stale_drop",{workspaceId:yt,source:Ot});return}Et.categories.length>0&&V(Et.categories),Et.types.length>0&&B(Et.types),Et.priorities.length>0&&J(Et.priorities),me(Et.taxonomies),ve(Et.displayLabels||{}),zt("bootstrap_reference_data_source",{workspaceId:yt,source:Ot,categories:Et.categories.length,types:Et.types.length,priorities:Et.priorities.length,taxonomies:Et.taxonomies.length})})(),_(),C(),x()]),!o(Qe)&&(W(!0),zt("bootstrap_reference_data_loaded",{durationMs:Math.max(0,Math.round(qa()-ae)),workspaceId:yt,force:Ge}))})();ue.current={workspaceId:Qe.workspaceId,promise:bt};try{await bt}finally{ue.current?.promise===bt&&(ue.current=null),pe.current===Ve&&(pe.current=null)}},[oe,C,_,s,ce,o,x,pe,ue,$,V,B,J,W,me,ve,n,t]),lt=r.useCallback(async Fe=>{if(!(Fe?.ignoreAuthGuard===!0)&&(t||n))return;g("config");const Ge=s(),Qe=qa(),yt=new AbortController;X.current=yt;try{const ot=await m("/api/taskforce/config",void 0,Ou($),{signal:yt.signal});if(l(Ge))return;if(ot.status===401){y(),se(!0);return}let ae="";if(ot.ok){const Ve=await ot.json();if(l(Ge))return;ae=typeof Ve?.workspaceId=="string"&&Ve.workspaceId.trim().length>0?Ve.workspaceId.trim():"",k(Ve)}if(l(Ge)){const Ve=String(K.current||"default").trim()||"default";if(!ae||Ve!==ae)return}if(A.current||(A.current=!0,await S(ae||Ge.workspaceId)),l(Ge)){const Ve=String(K.current||"default").trim()||"default";if(!ae||Ve!==ae)return}se(!0),g("ready"),zt("bootstrap_config_loaded",{durationMs:Math.max(0,Math.round(qa()-Qe)),status:ot.status,workspaceId:ae||Ge.workspaceId}),h()}catch(ot){if(i(ot)||l(Ge))return;A.current||(A.current=!0,await S(Ge.workspaceId)),v(d(ot)?"Startup checks timed out.":"Unable to finish startup checks."),se(!0),zt("bootstrap_config_failed",{durationMs:Math.max(0,Math.round(qa()-Qe)),workspaceId:Ge.workspaceId,error:ot instanceof Error?ot.message:String(ot)})}finally{X.current===yt&&(X.current=null)}},[k,X,K,h,m,s,y,A,i,d,l,S,g,v,$,se,n,t]),re=r.useCallback(async Fe=>{await lt(Fe),await Xe(Fe)},[lt,Xe]),it=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]),Ye=r.useCallback(async()=>{if(!je)return ge([]),de.current=!1,{success:!0,workspaces:[]};const Fe=s(),et=qa(),Ge=new AbortController;M.current=Ge;try{const Qe=await m("/api/taskforce/workspaces",{method:"GET",credentials:"include"},Ou($),{signal:Ge.signal});if(l(Fe))return{success:!1,error:"Workspace changed while loading workspaces."};if(Qe.status===401)return ge([]),de.current=!1,{success:!1,error:"Authentication required."};const yt=await Qe.json().catch(()=>({}));if(l(Fe))return{success:!1,error:"Workspace changed while loading workspaces."};if(!Qe.ok||yt?.success===!1)return ge([]),de.current=!1,{success:!1,error:yt?.error||`Failed to load workspaces (${Qe.status})`};const ot=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(ot),de.current=!0,$!=="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:Fe.workspaceId,count:ot.length,status:Qe.status}),{success:!0,workspaces:ot}}catch(Qe){return d(Qe)&&v("Startup checks timed out."),ge([]),de.current=!1,zt("bootstrap_workspaces_failed",{durationMs:Math.max(0,Math.round(qa()-et)),workspaceId:Fe.workspaceId,error:Qe instanceof Error?Qe.message:String(Qe)}),{success:!1,error:i(Qe)?"Workspace list request aborted.":"Failed to load workspaces."}}finally{M.current===Ge&&(M.current=null)}},[_e,m,s,i,d,l,v,$,ge,M,de,je]),jt=r.useCallback(async()=>{const Fe=s(),et=qa(),Ge=new AbortController;O.current=Ge,U(!1);try{const[Qe,yt]=await Promise.all([m("/api/taskforce/workspace/assignee-options",{method:"GET",credentials:"include"},Ou($),{signal:Ge.signal}),oe&&ce?m("/api/taskforce/auth/workspace-members",{method:"GET",credentials:"include"},Ou($),{signal:Ge.signal}).catch(()=>null):Promise.resolve(null)]);if(o(Fe))return{success:!1,error:"Workspace changed while loading assignee options."};if(Qe.status===401)return De(ci()),U(!0),{success:!1,error:"Authentication required."};const ot=await Qe.json().catch(()=>({}));if(o(Fe))return{success:!1,error:"Workspace changed while loading assignee options."};if(!Qe.ok)return De(ci()),U(!0),{success:!1,error:ot?.error||`Failed to load assignee options (${Qe.status})`};const ae=String(Re||"").trim(),Ve=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&&Ve?Ve:null},Ot=Array.isArray(ot?.assignees)?ot.assignees:[],Dt=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),Ue=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 Et=Ue;if(yt?.ok){const E=await yt.json().catch(()=>({})),c=Array.isArray(E?.users)?E.users:[],Y=c.find(qe=>String(qe?.userId||"").trim()===ae),ye=String(Y?.role||"").trim().toLowerCase();ye==="owner"||ye==="admin"||ye==="member"||ye==="read-only"?Ce(ye):!je&&c.length===0&&Ce(null);const Ie=c.map(qe=>({userId:String(qe?.userId||"").trim(),email:String(qe?.email||"").trim().toLowerCase(),displayName:typeof qe?.displayName=="string"?qe.displayName:null,avatarUrl:bt(qe)})).filter(qe=>qe.userId);Et=Array.from(new Map([...Ue,...Ie].map(qe=>[qe.userId,qe])).values())}else!je&&!Ue.length&&Ce(null);const vt=vd([...Dt,...cS(Et).filter(E=>E.kind==="member")]);return o(Fe)?{success:!1,error:"Workspace changed while loading assignee options."}:(De(vt),U(!0),zt("bootstrap_assignee_options_loaded",{durationMs:Math.max(0,Math.round(qa()-et)),workspaceId:Fe.workspaceId,count:vt.length}),{success:!0})}catch(Qe){return o(Fe)||(De(ci()),U(!0)),zt("bootstrap_assignee_options_failed",{durationMs:Math.max(0,Math.round(qa()-et)),workspaceId:Fe.workspaceId,error:Qe instanceof Error?Qe.message:String(Qe)}),{success:!1,error:i(Qe)?"Assignee options request aborted.":"Failed to load assignee options."}}finally{O.current===Ge&&(O.current=null)}},[O,oe,Pe,Re,m,s,i,ce,o,$,De,U,Ce,je]),kt=r.useCallback(async(Fe,et)=>{if(!je)return{success:!1,error:"Workspace switching is unavailable in local mode.",code:"WORKSPACE_SWITCHING_DISABLED"};const Ge=String(Fe||"").trim();if(!Ge)return{success:!1,error:"workspaceId is required."};const Qe=String(K.current||"").trim()||"default",yt=qa();try{zt("bootstrap_workspace_switch_started",{fromWorkspaceId:Qe,toWorkspaceId:Ge,hydrate:et?.hydrate!==!1});const ot=await fetch("/api/taskforce/session/workspace",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:Ge})}),ae=await ot.json().catch(()=>({}));if(!ot.ok||ae?.success===!1)return{success:!1,error:ae?.error||`Failed to switch workspace (${ot.status})`,code:ae?.code};I(Ge,{clearExplicitSelection:!1}),D(),te(!0),g("workspace");const Ve=await N({force:!0});return et?.hydrate===!1?await Ye():(G.current=`${$}:${Ge}:${R}`,be.current=`${$}:${Ve?"auth":"guest"}:${Ge}`,z.current=Ge,Q&&q==="tasks"&&(ie.current=`${Ge}:${q}:${Se?"archive":"active"}:${we}`),Q&&q==="settings"&&(ee.current=`${Ge}:${q}:${Te}`),await Promise.all([re(),Ye(),St({isSilent:!1}),Ze()]),dt({ignoreAuthGuard:!0})),zt("bootstrap_workspace_switch_completed",{fromWorkspaceId:Qe,toWorkspaceId:Ge,hydrate:et?.hydrate!==!1,durationMs:Math.max(0,Math.round(qa()-yt))}),{success:!0}}catch(ot){return zt("bootstrap_workspace_switch_failed",{fromWorkspaceId:Qe,toWorkspaceId:Ge,hydrate:et?.hydrate!==!1,durationMs:Math.max(0,Math.round(qa()-yt)),error:ot instanceof Error?ot.message:String(ot)}),{success:!1,error:"Failed to switch workspace."}}finally{te(!1)}},[D,q,N,I,K,re,dt,Ye,Q,be,G,ee,ie,z,Ze,g,St,$,Te,te,Se,we,R,je]),It=r.useCallback(async Fe=>{g("workspace"),te(!0);try{if(!je){const bt=String(b||"").trim()||"default";return I(bt),{success:!0,workspaceSetupRequired:!1,workspaceId:bt}}const et=String(Fe?.preferredWorkspaceId||"").trim(),Ge=Bp(R),Qe=await Ye();if(!Qe.success)return{success:!1,workspaceSetupRequired:!1,error:Qe.error||"Failed to load workspaces after authentication."};const yt=Array.isArray(Qe.workspaces)?Qe.workspaces:[];if(yt.length===0)return I("default"),{success:!0,workspaceSetupRequired:!0};const ot=new Set(yt.map(bt=>String(bt.id||"").trim()).filter(Boolean)),ae=String(K.current||"").trim(),Ve=(et&&ot.has(et)?et:"")||(ae&&ot.has(ae)?ae:"")||(Ge&&ot.has(Ge)?Ge:"")||String(yt[0]?.id||"").trim();if(!Ve)return I("default"),{success:!0,workspaceSetupRequired:!0};if(ae!==Ve){const bt=await kt(Ve,{hydrate:!1});if(!bt.success)return{success:!1,workspaceSetupRequired:!1,error:bt.error||"Failed to set workspace after authentication.",code:bt.code}}else I(Ve);return{success:!0,workspaceSetupRequired:!1,workspaceId:Ve}}catch{return v("Unable to resolve workspace access."),{success:!1,workspaceSetupRequired:!1,error:"Failed to resolve workspace access."}}finally{te(!1)}},[I,b,K,Ye,g,v,te,kt,R,je]),Ft=r.useCallback(async()=>{g("auth");const Fe=qa();zt("bootstrap_retry_started",{workspaceId:String(K.current||"default").trim()||"default"});const et=await N({force:!0});let Ge=!1;if(je&&et){const Qe=await It();if(!Qe.success||Qe.workspaceSetupRequired){await re({ignoreAuthGuard:!0}),zt("bootstrap_retry_completed",{workspaceId:String(K.current||"default").trim()||"default",authenticated:et,workspaceSetupRequired:Qe.workspaceSetupRequired===!0,success:Qe.success,durationMs:Math.max(0,Math.round(qa()-Fe))});return}}te(!0);try{await re({ignoreAuthGuard:!0}),et&&!Ge&&(await Promise.all([nt(!0,{ignoreAuthGuard:!0}),Xe({ignoreAuthGuard:!0,force:!0})]),dt({ignoreAuthGuard:!0})),zt("bootstrap_retry_completed",{workspaceId:String(K.current||"default").trim()||"default",authenticated:et,workspaceSetupRequired:Ge,success:!0,durationMs:Math.max(0,Math.round(qa()-Fe))})}finally{te(!1)}},[N,K,re,dt,Xe,nt,g,It,te,je]),Nt=r.useCallback(async Fe=>{const et=Fe?.reason||"initial-load",Ge=Fe?.ignoreAuthGuard===!0,Qe=Fe?.tasksSilent!==!1,yt=Fe?.includeDeferredArchive!==!1,ot=qa();if(g("auth"),!await N({force:!0}))return await re({ignoreAuthGuard:!0}),zt("cloud_bootstrap_completed",{reason:et,durationMs:Math.max(0,Math.round(qa()-ot)),authenticated:!1,workspaceSetupRequired:!1,success:!1}),{success:!1,authenticated:!1,workspaceSetupRequired:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};if(je){const Ve=await It();if(!Ve.success)return await re({ignoreAuthGuard:!0}),zt("cloud_bootstrap_completed",{reason:et,durationMs:Math.max(0,Math.round(qa()-ot)),authenticated:!0,workspaceSetupRequired:!1,success:!1,error:Ve.error||"Workspace resolution failed."}),{success:!1,authenticated:!0,workspaceSetupRequired:!1,error:Ve.error||"Unable to resolve workspace access.",code:Ve.code};if(Ve.workspaceSetupRequired)return await re({ignoreAuthGuard:!0}),zt("cloud_bootstrap_completed",{reason:et,durationMs:Math.max(0,Math.round(qa()-ot)),authenticated:!0,workspaceSetupRequired:!0,success:!0}),{success:!0,authenticated:!0,workspaceSetupRequired:!0}}te(!0);try{return await lt({ignoreAuthGuard:Ge}),await Promise.all([nt(Qe,{ignoreAuthGuard:Ge}),Xe({ignoreAuthGuard:Ge})]),dt({ignoreAuthGuard:Ge}),yt&&it(),zt("cloud_bootstrap_completed",{reason:et,durationMs:Math.max(0,Math.round(qa()-ot)),authenticated:!0,workspaceSetupRequired:!1,success:!0,workspaceId:String(K.current||"default").trim()||"default"}),{success:!0,authenticated:!0,workspaceSetupRequired:!1}}finally{te(!1)}},[N,K,lt,dt,Xe,nt,g,It,it,te,je]);return r.useEffect(()=>{!t&&!n&&!ut.current&&(ut.current=!0,(async()=>{const Fe=qa();if($==="cloud"&&oe&&ce){const et=await Nt({reason:"initial-load",tasksSilent:!1,includeDeferredArchive:!0});if(!et.success||et.workspaceSetupRequired)return}else await Promise.all([lt(),nt(!1),Xe()]),dt();$!=="cloud"&&it(),zt("bootstrap_initial_load_completed",{durationMs:Math.max(0,Math.round(qa()-Fe)),runtimeMode:$,workspaceId:String(K.current||"default").trim()||"default"})})())},[oe,K,lt,dt,Xe,nt,ut,ce,Nt,$,it,n,t]),r.useEffect(()=>{if(t||n||Ee||R==="bootstrap"||!ut.current)return;const Fe=`${$}:${b}:${R}`;G.current!==Fe&&(G.current=Fe,re())},[b,re,ut,G,$,n,t,Ee,R]),r.useEffect(()=>{if(t||n||Ee)return;const Fe=b;z.current!==Fe&&(z.current=Fe,Ze())},[b,z,Ze,n,t,Ee]),r.useEffect(()=>{if($!=="cloud"||!oe||!ce){$!=="cloud"&&ge([]),de.current=!1;return}Ee||!ut.current||de.current||Ye()},[oe,Ye,ut,ce,$,ge,Ee,de]),{fetchReferenceData:Xe,fetchBootstrapConfig:lt,fetchConfig:re,fetchWorkspaces:Ye,fetchAssigneeOptions:jt,switchWorkspace:kt,resolveWorkspaceAfterAuth:It,retryBootstrapChecks:Ft,runCloudBootstrap:Nt}}function Eb({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"||Rb({isOpen:e,authBlocked:t,authRequiredForApi:n,isAuthenticated:s,canCallProtectedApi:o}))return;let S=!1;const h=async()=>{if(!(S||document.visibilityState!=="visible")&&!jb({shouldGateProtectedApiCalls:l,authSessionResolved:i.current,authRequiredForApi:d.current,isAuthenticated:m.current}))try{const _=await fetch("/api/taskforce/data-version");if(!_.ok)return;const C=await _.json(),x=Number(C?.dataVersion);if(!Number.isFinite(x))return;if(y.current===null){y.current=x;return}x!==y.current&&(y.current=x,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 Db={};function ri(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 Ro=uf(Db),Sp=(()=>{const e=Ro.baseUrl,t=Ro.cloudAuthBaseUrl;if(t)return t;const n=Ro.apiBaseUrl;return n||e||"https://app.taskforcehq.ai"})(),$u=2e4,Lb=new Set(["external-abort","superseded","workspace-reset","workspace-transition"]);function Ju(e){return typeof DOMException<"u"&&e instanceof DOMException?e.name==="AbortError":String(e?.name||"").toLowerCase()==="aborterror"}function Vp(e){return typeof e=="string"&&Lb.has(e)}function wp(e,t){return t.aborted?e===t.reason||Vp(e)||Vp(t.reason)?!0:Ju(e):!1}function Ah(e){const t=new Error(`Startup checks timed out after ${e}ms.`);return t.name="BootstrapTimeoutError",t}function xh(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 Bb({config:e={},initialTaskId:t,onTaskCountChange:n,onClose:s}){const o={...Cv,...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",_=typeof window<"u"&&!v,[C,x]=r.useState({cloudEnvironment:"",cloudBaseUrl:"",cloudMcpBaseUrl:"",baseUrl:"",apiBaseUrl:"",cloudAuthBaseUrl:"",wsBaseUrl:"",cloudAuthViaLocalProxy:!1,authSource:"",workspaceMode:"",workspaceSwitchingEnabled:null}),[W,V]=r.useState(!1),B=r.useCallback(f=>typeof f=="string"?f.trim().replace(/\/+$/,""):"",[]);r.useEffect(()=>{if(typeof window>"u"){V(!0);return}let f=!1;return(async()=>{try{const L=await fetch("/api/taskforce/auth/runtime-config",{method:"GET",credentials:"include"});if(!L.ok)return;const H=await L.json().catch(()=>({})),Z=H?.config&&typeof H.config=="object"?H.config:{};if(f)return;const We=String(Z.runtimeMode||"").trim().toLowerCase()==="cloud"?"cloud":"local",ze=String(Z.workspaceMode||"").trim(),ya=ze==="single-local"||ze==="multi-cloud"?ze:We==="cloud"?"multi-cloud":"single-local";R(We),x({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:ya,workspaceSwitchingEnabled:typeof Z.workspaceSwitchingEnabled=="boolean"?!!Z.workspaceSwitchingEnabled:ya==="multi-cloud"})}catch{}finally{f||V(!0)}})(),()=>{f=!0}},[B]);const J=typeof window>"u"?"":v?Sp:"",me=B(Ro.baseUrl),ve=B(Ro.apiBaseUrl),se=B(Ro.cloudBaseUrl),A=B(Ro.cloudMcpBaseUrl),K=B(Ro.cloudAuthBaseUrl),ue=B(Ro.wsBaseUrl),pe=B(m),X=B(y),M=B(k),O=C.apiBaseUrl||C.baseUrl,ge=pe||O||(v?"":ve||me)||"",$=X||K||me,_e=C.cloudAuthBaseUrl||C.baseUrl,oe=((v?_e||$:$||_e)||ge||J).trim().replace(/\/+$/,""),ce=B(eS(C.cloudMcpBaseUrl||C.cloudAuthBaseUrl||C.cloudBaseUrl||M||X||A||K||se||oe)),Re=(C.cloudMcpBaseUrl||M||ce||C.cloudBaseUrl||A||se||oe||J).trim().replace(/\/+$/,""),Pe=!_&&!!oe&&!ge,Ce=_||W&&!!(oe||ge),De=Ce&&!Pe,U=!!(oe||ge||_),I=_?"cloud":"local",[b,R]=r.useState(()=>I),D=I==="local"&&v&&U?ff():"",te=D.length>0,N=r.useCallback(f=>!f||/^https?:\/\//i.test(f)||!ge||!f.startsWith("/")?f:`${ge}${f}`,[ge]),G=r.useCallback(f=>{if(!f||/^https?:\/\//i.test(f)||!f.startsWith("/"))return f;const L=f.startsWith("/api/taskforce/auth/")||f.startsWith("/api/taskforce/account/")||f.startsWith("/api/taskforce/billing/")||f.startsWith("/api/taskforce/sync/")||f.startsWith("/api/taskforce/settings/mcp/");if(!_&&L&&(b==="cloud"||!W||C.cloudAuthViaLocalProxy||C.workspaceMode==="multi-cloud"))return f;const H=oe||ge;if(H){const Z=`${H}${f}`;if(typeof window<"u"&&!_&&L)try{if(new URL(Z,window.location.origin).origin===window.location.origin)return`${Sp}${f}`}catch{return`${Sp}${f}`}return Z}return f},[W,C.cloudAuthViaLocalProxy,C.workspaceMode,oe,ge,_,b]),be=r.useCallback(f=>{const L=String(f||"").trim()||"/taskforce-ws",H=L.startsWith("/")?L:`/${L}`,Z=String(S||C.wsBaseUrl||ue||ge||"").trim().replace(/\/+$/,""),$e=typeof window<"u"?window.location.origin:"",We=Z||$e;if(!We)return"";try{const ze=new URL(H,We);return ze.protocol==="https:"&&(ze.protocol="wss:"),ze.protocol==="http:"&&(ze.protocol="ws:"),ze.toString()}catch{return""}},[S,C.wsBaseUrl,ue,ge]),[z,ie]=r.useState("tasks"),[ee,Q]=r.useState(!1),[q,Se]=r.useState(!1),[we,Te]=r.useState("open"),[Ee,nt]=r.useState(Kc(o.theme)||rm),[gt,dt]=r.useState(Kc(o.theme)||rm),[St,Ze]=r.useState(!0),[Ct]=r.useState(".taskforce"),ut=!1,[Xe,lt]=r.useState(!1),[re,it]=r.useState([]),[Ye,jt]=r.useState([]),[kt,It]=r.useState(""),[Ft,Nt]=r.useState(null),[Fe,et]=r.useState(null),[Ge,Qe]=r.useState(""),[yt,ot]=r.useState(""),ae=r.useMemo(()=>qv({projectRoot:Ge,runtimeMode:I}),[Ge,I]),[Ve,bt]=r.useState(""),[Ot,Dt]=r.useState(""),Ue=Jv(b),Et=C.workspaceMode==="single-local"||C.workspaceMode==="multi-cloud"?C.workspaceMode:Ue.workspaceMode,vt=typeof C.workspaceSwitchingEnabled=="boolean"?C.workspaceSwitchingEnabled:Ue.workspaceSwitchingEnabled,[E,c]=r.useState(!1),[Y,ye]=r.useState(!1),[Ie,qe]=r.useState(te),[Ke,Ne]=r.useState(te?D:"anonymous"),[Vt,qt]=r.useState(""),[Pt,Tt]=r.useState(""),[Lt,Ht]=r.useState(""),[sa,Kt]=r.useState([]),[Ka,Oa]=r.useState(""),[en,ba]=r.useState(!0),[he,ct]=r.useState(null),[xe,Rt]=r.useState(()=>{if(I==="local")return"default";const f=Bp(ae);return f&&f.toLowerCase()!=="default"?f:"default"}),tt=r.useMemo(()=>Kv({projectRoot:Ge,runtimeMode:b,workspaceId:xe}),[Ge,b,xe]),[Gt,ga]=r.useState([]),[Ea,ma]=r.useState(()=>ci()),[ia,Mt]=r.useState(!1),[aa,Za]=r.useState(te),[$t,Qn]=r.useState("idle"),[_a,Qt]=r.useState(null),[Or,ja]=r.useState(null),tn=r.useRef(null),Aa=r.useRef(0),Jt=r.useRef(0),Na=r.useRef(te),ca=r.useRef(xe),vn=r.useRef(null),dn=r.useRef(0),Xn=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"),[pa,Cr]=r.useState(0),$r=r.useRef(null),Sn=r.useRef(null),xa=r.useRef(null),Ar=r.useRef(null),wn=r.useRef(null),Pn=r.useRef(null),an=r.useRef(null),Ia=r.useCallback((f,L)=>{const H=String(f||"").trim();if(!H)return;const Z=String(ca.current||"").trim();Z&&Z!==H&&(dn.current+=1,Cr(dn.current)),ca.current=H,L?.clearExplicitSelection!==!1&&(vn.current=null),Rt(H)},[]);r.useEffect(()=>{ca.current=xe},[xe]);const Ur=r.useCallback(f=>{const L=String(f||"").trim();L&&Rt(()=>{const H=String(vn.current||"").trim();let Z=L;return H&&H!==L&&(Z=H),ca.current=Z,Z})},[]),_t=r.useCallback(()=>({workspaceId:String(ca.current||"default").trim()||"default",epoch:dn.current}),[]),bn=r.useCallback(f=>(String(ca.current||"default").trim()||"default")!==f.workspaceId||dn.current!==f.epoch,[]),un=r.useCallback(f=>dn.current!==f.epoch,[]),_n=r.useCallback(f=>Ju(f)||Vp(f),[]),$a=r.useCallback(()=>{[$r,Sn,xa,Ar,wn,Pn].forEach(f=>{f.current?.abort("workspace-transition"),f.current=null}),an.current!==null&&typeof window<"u"&&(window.clearTimeout(an.current),an.current=null),Nc.current=null},[]),Mn=r.useMemo(()=>Tb({shouldGateProtectedApiCalls:De,runtimeMode:b,authSessionResolved:aa,authRequiredForApi:E,isAuthenticated:Ie}),[De,b,aa,E,Ie]),va=Mn.shouldDeferProtectedApiCalls,Ua=Mn.shouldBlockProtectedApiCalls,[Cn,la]=r.useState(null),[En,Xt]=r.useState(null),[za,Ca]=r.useState(!1),[er,tr]=r.useState("unknown"),[Da,na]=r.useState(null),[fa,mn]=r.useState(o.shortcut||"Alt+T"),[nn,pr]=r.useState(o.priorities||[]),[fr]=r.useState(Ig()),[ea,ss]=r.useState(""),[Ha,ar]=r.useState(!1),[os,pn]=r.useState(!1),[zn,zr]=r.useState(!0),[An,Ga]=r.useState(()=>Hv()),xr=r.useMemo(()=>zv(),[]),[Pa,Cs]=r.useState(()=>{try{return(Intl.DateTimeFormat().resolvedOptions().locale||"").toLowerCase().startsWith("en-us")?"sunday":"monday"}catch{return"monday"}}),[rn,Ir]=r.useState(!1),[hr,Hr]=r.useState(!0),[fn,gr]=r.useState(!0),[xn,Dn]=r.useState(""),[nr,is]=r.useState(null);Cb({currentWorkspaceIdRef:ca,resolveApiUrl:N,runtimeMode:b});const{availableWorkflows:Gr,initiativeTemplates:Je,fetchWorkflows:Ut,fetchInitiativeTemplates:La,fetchWorkflowTemplate:da,fetchWorkflowOverrideNames:Va,saveWorkflowTemplateDraft:Ya,resetWorkflowTemplateDraft:As}=Yw({shouldDeferProtectedApiCalls:va,shouldBlockProtectedApiCalls:Ua}),{zenMode:Hn,setZenModeState:Vr,toggleZenMode:Gn}=Jw(),{exportEnvironment:In,setExportEnvironment:Bt,availableEnvironments:Ln,loadAvailableEnvironments:Ba,exportWorkflowsPath:rr,setExportWorkflowsPath:Tr,exportingResource:sr,exportResult:or,handleExportWorkflows:xs}=Vw({storagePath:Ct,shouldDeferProtectedApiCalls:va,shouldBlockProtectedApiCalls:Ua}),[qr,hn]=r.useState(!1),[Bn,no]=r.useState(null),{uiNotice:Rr,pushNotice:F,clearNotice:Be}=Gw(),[At,Wt]=r.useState([]),ua=r.useRef(null),[yr,cs]=r.useState(0),Is=r.useCallback(f=>!f||!Ge?f:f.startsWith(Ge)?f.slice(Ge.length).replace(/^[/\\]+/,""):f,[Ge]),[Ja,jr]=r.useState([]),[Wa,T]=r.useState([]),[j,rt]=r.useState([]),[Me,Le]=r.useState([]),[ne,gn]=r.useState([]),[Nr,yn]=r.useState([]),[li,Wn]=r.useState(!1),[Pr,Kr]=r.useState(null),[Eo,Do]=r.useState(!1),[ro,di]=r.useState([]),[Tn,so]=r.useState(!1),[ui,mi]=r.useState({}),pi=r.useRef({authSessionResolved:!1,configLoaded:!1,workspaceBootstrapPending:!1});r.useEffect(()=>{pi.current={authSessionResolved:aa,configLoaded:Tn,workspaceBootstrapPending:ia}},[aa,Tn,ia]);const Mr=r.useCallback(f=>{Qn(f),f!=="ready"&&(Qt(null),ja(Date.now()))},[]),Lo=r.useCallback(f=>{const L=pi.current;L.authSessionResolved&&L.configLoaded&&!L.workspaceBootstrapPending||(Qn("stalled"),Qt(f),ja(H=>H??Date.now()))},[]),ls=r.useCallback(async(f,L,H=od,Z)=>{const $e=new AbortController,We=Z?.signal,ze=Number(H)>0?Number(H):od,ya=_t(),ka=f.startsWith("/api/taskforce/")?hp(L,ah({workspaceId:ya.workspaceId,epoch:ya.epoch,seed:Xn.current})):L,Fa=typeof window<"u"?window.setTimeout(()=>$e.abort("bootstrap-timeout"),ze):null,Ta=()=>{$e.abort(We?.reason||"external-abort")};We&&(We.aborted?Ta():We.addEventListener("abort",Ta,{once:!0}));try{return await fetch(f,{...ka||{},signal:$e.signal})}catch(jn){throw We?.aborted&&wp(jn,We)?We.reason||jn:Ju(jn)||jn==="bootstrap-timeout"?Ah(ze):jn}finally{We&&We.removeEventListener("abort",Ta),Fa!==null&&typeof window<"u"&&window.clearTimeout(Fa)}},[_t]),rc=r.useMemo(()=>{const f=!aa,L=$t==="stalled",H=aa&&(!Tn||ia||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:f},config:{loaded:Tn},workspace:{pending:ia},pending:f||H,authPending:f,appPending:H,ready:aa&&Tn&&!ia&&$t==="ready",stalled:L,subtitle:Z,error:_a,startedAt:Or}},[aa,_a,$t,Or,Tn,ia]),Zr=r.useCallback(f=>String(f?.name||"")==="BootstrapTimeoutError",[]),[oo,Ts]=r.useState([]),[Rs,io]=r.useState({}),[ds,fi]=r.useState(o.taxonomies||[]),Sa=r.useMemo(()=>(ro.length>0?ro:l||[]).map(L=>typeof L=="string"?{value:L.toLowerCase().replace(/\s+/g,"-"),label:L}:L).sort((L,H)=>L.label.localeCompare(H.label)),[ro,l]),sc=r.useMemo(()=>({categories:Sa,types:oo,priorities:nn,taxonomies:ds,displayLabels:Rs}),[Sa,oo,nn,ds,Rs]);r.useMemo(()=>Sa.filter(f=>!f.disabled),[Sa]);const Vn=r.useCallback(f=>f.find(H=>H.value==="default"||H.value==="general"||H.label==="General"||H.value==="Taskforce"||H.label==="Taskforce")?.value||f[0]?.value||"default",[]),ra=oo.length>0?oo:i,[co,Yr]=r.useState(!1),[lo,Er]=r.useState(""),oc="Authentication required. Sign in to continue.",[js,ir]=r.useState(!1),[Os,on]=r.useState(!1),us=r.useCallback(()=>{ye(b==="cloud"),qe(!1),Tt(""),Ht(""),Oa(""),Er(oc)},[oc,b]),{recentlyChangedTaskIds:$s,fetchTasks:uo,fetchArchive:Us,refreshTaskCollections:Bo,refreshTaskCollectionsFromInvalidation:zs,mergeTaskFromServer:mo}=Xw({tasks:Ja,archivedTasks:Wa,setTasks:jr,setArchivedTasks:T,setLoadingTasks:Wn,getCurrentWorkspaceId:()=>ca.current,workspaceResetKey:`${xe}:${pa}`,shouldDeferProtectedApiCalls:va,shouldBlockProtectedApiCalls:Ua,handleUnauthorized:us,authRequiredForApi:E});r.useEffect(()=>{pa!==0&&(Nc.current=null,Pi.current="",qo.current="",Mi.current="",Rc.current="",Ms.current="",Ei.current="",Es(!1),ir(!1),ma(ci()),on(!1),yn([]),jr([]),T([]),Wn(!1),Rn.current!==null&&typeof window<"u"&&(window.clearTimeout(Rn.current),Rn.current=null),gs.current!==null&&typeof window<"u"&&(window.clearTimeout(gs.current),gs.current=null))},[T,Wn,jr,pa]);const cr=r.useCallback(async(f=!1,L)=>{if(!(L?.ignoreAuthGuard===!0)&&(va||Ua))return;f||Wn(!0);const Z=_t(),$e=new AbortController;wn.current=$e;try{let We=await fetch("/api/taskforce/deleted",{signal:$e.signal});if(We.status===404&&(We=await fetch("/api/taskforce/trash",{signal:$e.signal})),We.status===401){us(),yn([]);return}if(We.status===404){yn([]);return}if(We.ok){const ze=await We.json();if(bn(Z))return;const ya=Array.isArray(ze?.deleted)?ze.deleted.map(ka=>{const Fa=ka?.taskSnapshot&&typeof ka.taskSnapshot=="object"?Mo(ka.taskSnapshot):null;return Fa?{...ka,taskSnapshot:Fa}:null}).filter(ka=>!!ka):[];yn(ya)}}catch(We){if(wp(We,$e.signal)||_n(We))return;console.error("[Taskforce] Failed to fetch deleted tasks:",We)}finally{wn.current===$e&&(wn.current=null),f||Wn(!1)}},[_t,us,_n,bn,va,Ua]),ha=r.useCallback(async f=>{if(!(f?.ignoreAuthGuard===!0)&&(va||Ua))return;const H=_t();Pn.current?.abort("superseded"),an.current!==null&&typeof window<"u"&&(window.clearTimeout(an.current),an.current=null);const Z=new AbortController;Pn.current=Z;try{const $e=ah({workspaceId:H.workspaceId,epoch:H.epoch,seed:Xn.current}),We=async ka=>{if(typeof window>"u")return fetch(ka,hp({signal:Z.signal},$e));const Fa=new AbortController,Ta=window.setTimeout(()=>Fa.abort("planning-timeout"),$u),jn=()=>Fa.abort(Z.signal.reason||"external-abort");Z.signal.aborted?jn():Z.signal.addEventListener("abort",jn,{once:!0});try{return await fetch(ka,hp({signal:Fa.signal},$e))}catch(_r){if(Z.signal.aborted)throw Z.signal.reason||_r;if(Ju(_r)||_r==="planning-timeout")return null;throw _r}finally{window.clearTimeout(Ta),Z.signal.removeEventListener("abort",jn)}};let ze=null;const ya=await We("/api/taskforce/planning/bootstrap");if(ya?.status===401){us(),rt([]),Le([]),gn([]);return}if(ya===null)throw Ah($u);if(ya.ok)ze=xh(await ya.json().catch(()=>({})));else{const[ka,Fa]=await Promise.all([We("/api/taskforce/initiatives"),We("/api/taskforce/workstreams")]);if(!ka||!Fa)throw new Error("Planning endpoints timed out during startup.");if(ka.status===401||Fa.status===401){us(),rt([]),Le([]),gn([]);return}const[Ta,jn]=await Promise.all([ka.ok?ka.json().catch(()=>[]):[],Fa.ok?Fa.json().catch(()=>[]):[]]);ze=xh({initiatives:Ta,workstreams:jn,workstreamTaskSummaries:[]})}if(bn(H))return;rt(ze.initiatives),Le(ze.workstreams),gn(ze.workstreamTaskSummaries)}catch($e){if(wp($e,Z.signal)||_n($e))return;Zr($e)?(zt("planning_bootstrap_timeout",{workspaceId:H.workspaceId,epoch:H.epoch,timeoutMs:$u}),console.warn("[Taskforce] Planning bootstrap timed out during startup; retrying in background.")):console.error("[Taskforce] Failed to fetch planning entities:",$e),typeof window<"u"&&!bn(H)&&j.length===0&&Me.length===0&&(an.current=window.setTimeout(()=>{an.current=null,ha(f)},3e3))}finally{Pn.current===Z&&(Pn.current=null)}},[od,$u,j.length,_t,us,_n,bn,va,Ua,Me.length]),sn=r.useCallback(async(f=!1,L)=>{await uo(f,L)},[uo]),qn=r.useCallback(async(f=!1,L)=>{await Us(f,L)},[Us]),Jr=r.useCallback(async f=>{const L=f?.isSilent!==!1,H=f?.ignoreAuthGuard===!0;await Promise.all([Bo({isSilent:L,ignoreAuthGuard:H}),cr(L,{ignoreAuthGuard:H}),ha({ignoreAuthGuard:H})])},[cr,ha,Bo]),hi=r.useCallback(async()=>{await zs(),await cr(!0),await ha()},[cr,ha,zs]),Hs=r.useRef(()=>{}),ic=r.useRef(()=>{}),sl=r.useRef(async()=>!1),cn=r.useCallback(f=>sl.current(f),[]),{userGlobalSyncStatus:po,setUserGlobalSyncStatus:Wo,userGlobalSyncError:fo,setUserGlobalSyncError:Fo,workspaceLastPullAt:Nm,workspaceLastPushAt:ol,workspaceLastErrorAt:Pm,workspaceLastErrorMessage:il,workspaceLastSuccessfulSyncAt:Kn,workspaceCloudSyncEnabled:ms,workspaceSyncPhase:ho,workspaceSyncSetupIntent:gi,workspaceSyncStatus:Mm,workspaceSyncSummary:Ad,workspaceSyncRecommendedAction:Oo,workspaceSyncBusy:Em,workspaceSyncPendingChanges:xd,workspacePendingSignatureRef:Id,workspaceDeletedTaskIdsRef:Gs,workspaceDeletedTaskWatermarksRef:Td,loadWorkspaceSyncState:cl,applyWorkspaceSyncStateSnapshot:Rd,syncUserGlobalSettings:cc,buildWorkspaceSyncSignature:ll,pushWorkspaceChangesToCloud:$o,saveWorkspaceCloudSyncSettings:go,retryUserGlobalSettingsSync:lc,retryWorkspaceCloudSync:ps,resetWorkspaceSyncCursorAndPull:yi,getWorkspaceSyncDiagnostics:Uo}=zw({currentWorkspaceId:xe,cloudAuthConfigured:U,runtimeMode:b,authSessionResolved:aa,isAuthenticated:Ie,authUserId:Ke,projectName:yt,resolveCloudAuthUrl:G,resolveWebSocketUrl:be,realtimeSyncEnabled:za,tasks:Ja,archivedTasks:Wa,deletedTasks:Nr,initiatives:j,workstreams:Me,taxonomies:ds,taxonomyState:js?sc:void 0,setupState:Cn,globalTheme:gt,locale:An,globalWeekStartsOn:Pa,themeUseGlobalDefault:St,setTasks:jr,setArchivedTasks:T,setAuthBlocked:ye,setIsAuthenticated:qe,checkAuthSession:cn,setGlobalTheme:dt,setCurrentTheme:nt,setSetupState:la,setLocale:Ga,setGlobalWeekStartsOn:Cs,fetchPlanningEntities:ha}),ki=r.useCallback((f=ra)=>f.find(L=>String(L.value||"").trim().length>0)?.value||Fr,[ra]),[Vs,kr]=r.useState(()=>Vn(Sa)),[yo,Ns]=r.useState(()=>ki(ra)),[oa,zo]=r.useState(2),[dc,dl]=r.useState(3),[ul,ko]=r.useState("task"),[ml,pl]=r.useState("default"),[fl,vi]=r.useState("unassigned"),[Fn,Ps]=r.useState(""),[jd,Nd]=r.useState(""),[On,Si]=r.useState(""),[wi,bi]=r.useState(""),[uc,hl]=r.useState(""),[qs,mc]=r.useState([]),[gl,_i]=r.useState([]),[Ci,pc]=r.useState(""),[fc,wt]=r.useState({}),Pd=r.useRef(null),[hc,fs]=r.useState(!1),[Ho,gc]=r.useState("");r.useEffect(()=>{if(Pr)return;const f=String(yo||"").trim();ra.some(H=>String(H.value||"").trim()===f)||Ns(ki(ra))},[ra,Pr,ki,yo]);const{searchQuery:yc,setSearchQuery:Md,filterCategories:kc,setFilterCategories:vr,filterPriorities:Qa,setFilterPriorities:Ai,filterTypes:yl,setFilterTypes:Ed,filterStatus:vo,setFilterStatus:Dd,filterAssignees:kl,setFilterAssignees:Qr,filterAssigneesAllSelected:Ld,setFilterAssigneesAllSelected:Bd,filterTaxonomies:vc,setFilterTaxonomies:xi,hasInitedFilters:So,setHasInitedFilters:Ii,sortBy:Sc,setSortBy:wc,sortOrder:vl,setSortOrder:Wd,toggleSortOrder:Go,groupBy:hs,setGroupBy:Zn,emptyColumnMode:wo,setEmptyColumnMode:bo,collapsedCategories:Sl,setCollapsedCategories:wl,clearFilters:Dm,filteredTasks:bc,searchAgnosticTasks:_c,filteredArchive:Fd,groupedTasks:Od}=kb({tasks:Ja,archivedTasks:Wa,activeCategories:Sa,activeTypes:ra,priorities:nn,taxonomies:ds,configLoaded:Tn,referenceDataLoaded:js,assigneeOptionsLoaded:Os,assigneeOptions:Ea});Hs.current=Wo,ic.current=Fo;const{checkAuthSession:bl}=Ib({runtimeConfigReady:W,shouldProbeCloudAuth:Ce,authSessionResolved:aa,resolveCloudAuthUrl:G,authOnlyCloudMode:Pe,authRequiredError:oc,runtimeMode:b,workspaceSelectionScope:ae,markBootstrapPhase:Mr,markBootstrapStalled:Lo,setRuntimeMode:R,setAuthRequiredForApi:c,setIsAuthenticated:qe,setAuthUserId:Ne,setAuthWorkspaceId:qt,setAuthUserEmail:Tt,setAuthUserDisplayName:Ht,setAuthUserAvatarUrl:Oa,setUserGlobalSyncStatus:f=>Hs.current(f),setUserGlobalSyncError:f=>ic.current(f),setHasBetaAccess:ba,setAvailableWorkspaces:ga,setHydratedWorkspaceRole:ct,setAssigneeOptions:ma,setAuthBlocked:ye,setAuthSessionResolved:Za,setError:Er,applyResolvedWorkspaceId:Ur,readPersistedWorkspaceId:Bp,authSessionRequestRef:tn,authSessionEpochRef:Aa,authSessionLastCheckedAtRef:Jt,authSessionLastResultRef:Na,isLoopbackHost:v,setAuthStateReadyRefs:(f,L,H)=>{Ic.current=L,Tc.current=H,Vo.current=f}});sl.current=bl;const[_l,Ti]=r.useState("tasks"),[Lm,$d]=r.useState(!1),[Bm,Ri]=r.useState(!1),[Cc,Ac]=r.useState(!1),[xc,ji]=r.useState([]),[Ud,Ni]=r.useState(!1),Wm=r.useRef(null),Rn=r.useRef(null),gs=r.useRef(null),Sr=r.useRef(!1),Ic=r.useRef(aa),Tc=r.useRef(E),Vo=r.useRef(Ie),Cl=r.useRef(!1),Pi=r.useRef(""),qo=r.useRef(""),Mi=r.useRef(""),Rc=r.useRef(""),Ms=r.useRef(""),Ei=r.useRef(""),Di=r.useRef(!1),jc=r.useRef(!1),Nc=r.useRef(null),Al=r.useRef(!1),zd=r.useRef(!1),[Ko,Es]=r.useState(!1),Fm=r.useCallback(f=>{Ko||(jc.current=!0),Ti(f)},[Ko]),{handleSaveSettings:Hd,handleSaveTheme:Gd,handleSaveGlobalTheme:Om,handleJsonBackupEnabledChange:$m,handleSaveGlobalJsonBackupEnabled:Um,handleSaveGlobalWeekStartsOn:zm,handleSaveLocale:Vd,handleManualComplexityEnabledChange:Hm,handleChecklistDropdownEnabledChange:kn,handleShowTaskCardStatusLabelChange:xl,handleResetProjectToGlobal:qd}=Kw({keyShortcut:fa,themeUseGlobalDefault:St,runtimeMode:b,jsonBackupUseGlobalDefault:zn,globalTheme:gt,globalJsonBackupEnabled:os,setCurrentTheme:nt,setThemeUseGlobalDefault:Ze,setGlobalTheme:dt,setJsonBackupEnabled:ar,setJsonBackupUseGlobalDefault:zr,setGlobalJsonBackupEnabled:pn,setGlobalWeekStartsOn:Cs,setLocale:Ga,setManualComplexityEnabled:Ir,setChecklistDropdownEnabled:Hr,setShowTaskCardStatusLabel:gr,setShowChecklist:fs});r.useEffect(()=>{b==="cloud"&&ae!==ec&&fS(xe,ae)},[b,xe,ae]),r.useEffect(()=>{Ic.current=aa,Tc.current=E,Vo.current=Ie},[aa,E,Ie]);const Pc=r.useCallback((f,L)=>{if(!f)return;const H=Array.isArray(f.filterCategories)||Array.isArray(f.filterPriorities)||Array.isArray(f.filterTypes)||Array.isArray(f.filterStatus)||Array.isArray(f.filterAssignees)||typeof f.filterAssigneesAllSelected=="boolean"||f.filterTaxonomies&&typeof f.filterTaxonomies=="object";L?.skipActiveWorkspaceModule||(typeof f.activeWorkspaceModule=="string"?Ti(f.activeWorkspaceModule):f.groupBy==="docs"&&Ti("docs")),f.groupBy&&f.groupBy!=="docs"&&Zn(f.groupBy),(f.emptyColumnMode==="show"||f.emptyColumnMode==="collapse"||f.emptyColumnMode==="hide")&&bo(f.emptyColumnMode),typeof f.zenMode=="boolean"&&Vr(f.zenMode),typeof f.searchQuery=="string"&&Md(f.searchQuery),Array.isArray(f.filterCategories)&&vr(f.filterCategories),Array.isArray(f.filterPriorities)&&Ai(f.filterPriorities),Array.isArray(f.filterTypes)&&Ed(f.filterTypes),Array.isArray(f.filterStatus)&&Dd(f.filterStatus),Array.isArray(f.filterAssignees)&&Qr(f.filterAssignees),typeof f.filterAssigneesAllSelected=="boolean"&&Bd(f.filterAssigneesAllSelected),f.filterTaxonomies&&typeof f.filterTaxonomies=="object"&&xi(f.filterTaxonomies),(f.sortBy==="created"||f.sortBy==="priority"||f.sortBy==="updated"||f.sortBy==="complexity")&&wc(f.sortBy),(f.sortOrder==="asc"||f.sortOrder==="desc")&&Wd(f.sortOrder),typeof f.hasInitedFilters=="boolean"?Ii(f.hasInitedFilters):H&&Ii(!0),typeof f.showChecklist=="boolean"&&fs(f.showChecklist),typeof f.lastCategory=="string"&&gc(f.lastCategory),typeof f.exportEnvironment=="string"&&f.exportEnvironment.trim().length>0&&Bt(f.exportEnvironment.trim())},[]),Mc=r.useCallback(async f=>{const L=String(f||ca.current||xe||"default").trim()||"default",H=`${b}:${tt}:${L}`;try{const Z=await fetch(`/api/taskforce/ui-state?key=app&workspaceId=${encodeURIComponent(L)}`,{method:"GET",credentials:"include"}),$e=Z.ok?await Z.json().catch(()=>({})):{},We=$e?.state&&typeof $e.state=="object"?$e.state:null,ze=sh(tt),ya=We||ze?{...ze||{},...We||{}}:null;if(ca.current!==L)return;Pc(ya,{skipActiveWorkspaceModule:jc.current}),Pi.current=H}catch{const Z=sh(tt);ca.current===L&&(Pc(Z,{skipActiveWorkspaceModule:jc.current}),Pi.current=H)}finally{if(ca.current!==L)return;jc.current=!1,Di.current=!0,Es(!0)}},[Pc,xe,b,tt]);r.useEffect(()=>{const f=`${b}:${tt}:${xe}`;Cl.current&&Pi.current!==f&&(Es(!1),Mc(xe))},[xe,Mc,b,tt]),r.useEffect(()=>{if(!Ko)return;if(Di.current){Di.current=!1;return}const f={groupBy:hs,activeWorkspaceModule:_l,emptyColumnMode:wo,zenMode:Hn,searchQuery:yc,filterCategories:kc,filterPriorities:Qa,filterTypes:yl,filterStatus:vo,filterAssignees:kl,filterAssigneesAllSelected:Ld,filterTaxonomies:vc,sortBy:Sc,sortOrder:vl,hasInitedFilters:So,showChecklist:hc,lastCategory:Ho||"",exportEnvironment:In};hS(f,tt);const L=window.setTimeout(async()=>{try{await mf({stateKey:"app",workspaceId:ca.current,patch:f})}catch{}},250);return()=>window.clearTimeout(L)},[Ko,hs,_l,wo,Hn,yc,kc,Qa,yl,vo,kl,Ld,vc,Sc,vl,So,hc,Ho,In,tt]);const Il=r.useCallback(f=>{const L=f.runtimeMode==="cloud"?"cloud":"local",H=!!f.authRequiredForApi,Z=typeof f.userId=="string"&&f.userId.trim().length>0?f.userId.trim():"anonymous",$e=L==="cloud"&&Z!=="anonymous",We=$e||Vo.current,ze=Ic.current;if(R(L),c(H),$e&&(qe(!0),Ne(Z),ye(!1),ze||Za(!0)),typeof f.workspaceId=="string"&&f.workspaceId.trim().length>0){const Jl=f.workspaceId.trim();L==="local"?Ia(Jl):Ur(Jl)}ye(L==="cloud"&&H?!We:!1),f.setupState&&typeof f.setupState=="object"?la(f.setupState):la(null),f.runtimeCapabilities&&typeof f.runtimeCapabilities=="object"?Xt(f.runtimeCapabilities):Xt(null),Ca(!!f.realtimeSyncEnabled);const ya=String(f.realtimeSyncFlagSource||"").trim().toLowerCase();tr(ya==="env"||ya==="settings"||ya==="default"?ya:"unknown"),typeof f.shortcut=="string"&&f.shortcut.trim().length>0&&mn(f.shortcut);const ka=Kc(f.theme);ka&&nt(ka);const Fa=Kc(f.globalTheme);Fa&&dt(Fa),typeof f.themeUseGlobalDefault=="boolean"&&Ze(f.themeUseGlobalDefault);const Ta=f.runtimeMode==="cloud"?"cloud":"local";typeof f.projectRoot=="string"?Qe(f.projectRoot):Ta==="cloud"&&Qe(""),typeof f.tenantId=="string"?Dt(f.tenantId.trim()):Ta==="cloud"&&Dt("");const jn=Ta==="cloud"?String(f.projectName||"").trim():f.projectName||f.paths?.projectName||"";(String(jn||"").trim().length>0||Ta==="cloud")&&ot(jn),typeof f.mcpScript=="string"?bt(f.mcpScript):Ta==="cloud"&&bt(""),typeof f.hostRoot=="string"?Dn(f.hostRoot):Ta==="cloud"&&Dn(""),typeof f.jsonBackupEnabled=="boolean"&&ar(f.jsonBackupEnabled),typeof f.globalJsonBackupEnabled=="boolean"&&pn(f.globalJsonBackupEnabled),typeof f.jsonBackupUseGlobalDefault=="boolean"&&zr(f.jsonBackupUseGlobalDefault);const _r=f?.schedulePreferences?.weekStartsOn;(_r==="sunday"||_r==="monday")&&Cs(_r),typeof f.manualComplexityEnabled=="boolean"&&Ir(f.manualComplexityEnabled),typeof f.checklistDropdownEnabled=="boolean"?Hr(f.checklistDropdownEnabled):Hr(!0),typeof f.showTaskCardStatusLabel=="boolean"?gr(f.showTaskCardStatusLabel):gr(!0)},[Ur,Ia]),Kd=r.useCallback(async()=>{const f=typeof performance<"u"?performance.now():Date.now();try{const L=await ls("/api/taskforce/version",void 0,od);if(!L.ok)return;const H=await L.json().catch(()=>({}));H?.build&&typeof H.build=="object"&&na({version:String(H.build.version||""),gitSha:H.build.gitSha?String(H.build.gitSha):null,buildTime:H.build.buildTime?String(H.build.buildTime):null,deployId:H.build.deployId?String(H.build.deployId):null}),zt("build_info_loaded",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-f)})}catch(L){Zr(L)&&zt("build_info_timeout",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-f)})}},[ls,Zr]),{fetchReferenceData:Li,fetchConfig:Dr,fetchWorkspaces:Lr,fetchAssigneeOptions:Zo,switchWorkspace:Br,resolveWorkspaceAfterAuth:Zd,retryBootstrapChecks:Tl,runCloudBootstrap:Ks}=Mb({shouldDeferProtectedApiCalls:va,shouldBlockProtectedApiCalls:Ua,getWorkspaceRequestState:_t,isWorkspaceRequestStale:bn,isWorkspaceEpochStale:un,isAbortError:_n,isBootstrapTimeoutError:Zr,fetchWithTimeout:ls,handleUnauthorized:us,applyBootstrapConfig:Il,loadPersistedUiState:Mc,fetchBuildInfo:Kd,markBootstrapPhase:Mr,markBootstrapStalled:Lo,fetchWorkflows:Ut,fetchInitiativeTemplates:La,loadAvailableEnvironments:Ba,setReferenceDataLoaded:ir,setCustomCategories:di,setCustomTypes:Ts,setPriorities:pr,setTaxonomies:fi,setTaxonomyDisplayLabels:io,setConfigLoaded:so,hasLoadedUiStateRef:Cl,currentWorkspaceIdRef:ca,referenceDataRequestRef:Nc,referenceDataAbortRef:Sn,bootstrapConfigAbortRef:$r,workspaceListAbortRef:xa,assigneeOptionsAbortRef:Ar,workspaceListHydratedRef:Al,setAvailableWorkspaces:ga,runtimeMode:b,applyResolvedWorkspaceId:Ur,workspaceSwitchingEnabled:vt,authSessionResolved:aa,isAuthenticated:Ie,authUserId:Ke,authUserAvatarUrl:Ka,setHydratedWorkspaceRole:ct,setAssigneeOptions:ma,setAssigneeOptionsLoaded:on,commitCurrentWorkspaceId:(f,L)=>{vn.current=f,Ia(f,L),L?.clearExplicitSelection!==!1&&(vn.current=null)},currentWorkspaceId:xe,workspaceSelectionScope:ae,abortWorkspaceScopedRequests:$a,setWorkspaceBootstrapPending:Mt,checkAuthSession:cn,lastConfigRefreshKeyRef:Mi,lastAssigneeOptionsLoadKeyRef:qo,lastWorkspaceSyncStateLoadKeyRef:Rc,lastTaskSurfaceLoadKeyRef:Ms,lastSettingsSurfaceLoadKeyRef:Ei,isOpen:ee,activeTab:z,showArchive:q,taskScope:we,settingsSection:Fe,workspaceBootstrapPending:ia,fetchTasks:sn,fetchArchive:qn,fetchPlanningEntities:ha,refreshTaskCollections:Jr,loadWorkspaceSyncState:cl,archiveBootstrapTimerRef:gs,hasBootstrappedDataRef:zd}),Bi=r.useCallback(async()=>{await cn(),await Dr()},[cn,Dr]);r.useEffect(()=>{if(!Tn||ia)return;const f=`${b}:${Ie?"auth":"guest"}:${xe}:${Ka||"no-avatar"}`;Os&&qo.current===f||(qo.current=f,Zo())},[Os,Ka,Tn,xe,Zo,Ie,b,ia]),r.useEffect(()=>{if(!aa||!Ie)return;const f=String(Ke||"").trim();if(!f||f==="anonymous")return;const L=String(Ka||"").trim()||null;ma(H=>{let Z=!1;const $e=H.map(We=>We.kind!=="member"||String(We.value||"").trim()!==f||(typeof We.avatarUrl=="string"&&We.avatarUrl.trim().length>0?We.avatarUrl.trim():null)===L?We:(Z=!0,{...We,avatarUrl:L}));return Z?$e:H})},[aa,Ka,Ke,Ie]);const Rl=r.useMemo(()=>vt?Gt.find(L=>L.id===xe)?.role??null:he,[Gt,xe,he,vt]);r.useEffect(()=>{Ie||ct(null)},[Ie]);const Yd=r.useCallback(async()=>{Qt(null);const f=await Ks({reason:"post-plans",ignoreAuthGuard:!0,tasksSilent:!0,includeDeferredArchive:!1});return f.authenticated?f.success?f.workspaceSetupRequired?{success:!0,destination:"setup"}:{success:!0,destination:"app"}:{success:!1,destination:"app",error:f.error||"Unable to resolve workspace after plan selection.",code:f.code}:{success:!1,destination:"login",error:f.error||"Sign in required.",code:f.code||"AUTH_REQUIRED"}},[Ks]),ys=r.useCallback(async f=>{const L=f?.reason||"retry",H=typeof f?.preferredWorkspaceId=="string"?f.preferredWorkspaceId.trim():"",Z=f?.allowCommercialGate===!0;if(H&&vt){if(!await cn({force:!0}))return await Dr({ignoreAuthGuard:!0}),{success:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};const ze=await Zd({preferredWorkspaceId:H});if(!ze.success)return await Dr({ignoreAuthGuard:!0}),{success:!1,error:ze.error||"Unable to resolve workspace access.",code:ze.code};if(ze.workspaceSetupRequired)return await Dr({ignoreAuthGuard:!0}),{success:!0,workspaceSetupRequired:!0}}const $e=await Ks({reason:L,ignoreAuthGuard:!0,tasksSilent:!0,includeDeferredArchive:!1});return $e.authenticated?$e.success?$e.workspaceSetupRequired?Z?{success:!0,workspaceSetupRequired:!1}:{success:!0,workspaceSetupRequired:!0}:(Z||cc({preferCloudOnFirstSync:!0}),{success:!0,workspaceSetupRequired:!1}):{success:!1,error:$e.error||"Unable to resolve workspace access.",code:$e.code}:{success:!1,error:$e.error||"Sign in required.",code:$e.code||"AUTH_REQUIRED"}},[cn,Dr,Zd,Ks,cc,vt]),Yo=r.useCallback(async(f,L)=>{if(!vt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const H=String(f||"").trim();if(!H)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:H,description:typeof L=="string"?L:void 0})}),$e=await Z.json().catch(()=>({}));if(!Z.ok||$e?.success===!1)return{success:!1,error:$e?.error||`Failed to create workspace (${Z.status})`,code:$e?.code};const We=$e?.workspace;if(await Lr(),We?.id){const ze=await Br(We.id);if(!ze.success)return{success:!1,error:ze.error||"Workspace created but failed to activate.",code:ze.code}}return{success:!0,workspace:We}}catch{return{success:!1,error:"Failed to create workspace."}}},[Lr,Br,vt]),lr=r.useCallback(async f=>{if(!vt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const L=String(f||"").trim();if(!L)return{success:!1,error:"workspaceId is required.",code:"WORKSPACE_ID_REQUIRED"};try{const H=await fetch(`/api/taskforce/workspaces/${encodeURIComponent(L)}`,{method:"DELETE",credentials:"include"}),Z=await H.json().catch(()=>({}));if(!H.ok||Z?.success===!1)return{success:!1,error:Z?.error||`Failed to delete workspace (${H.status})`,code:Z?.code};await cn({force:!0}),await Promise.all([Dr(),Lr()]);const $e=typeof Z?.nextWorkspaceId=="string"?Z.nextWorkspaceId.trim():"";return $e&&Ia($e),{success:!0,nextWorkspaceId:$e||void 0,workspaceSetupRequired:Z?.workspaceSetupRequired===!0,cleanupWarnings:Array.isArray(Z?.cleanupWarnings)?Z.cleanupWarnings.map(We=>String(We||"")):[]}}catch{return{success:!1,error:"Failed to delete workspace."}}},[cn,Ia,Dr,Lr,vt]),Jo=r.useCallback(async f=>{const L=f==="operations"?"operations":"core";try{const H=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:L}})}),Z=await H.json().catch(()=>({}));return!H.ok||Z?.success===!1?!1:(await Bi(),!0)}catch{return!1}},[Bi]),jl=r.useCallback(async f=>{const L=String(f?.name||"").trim(),H=typeof f?.workspaceId=="string"?f.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:H&&H!=="default"?H:void 0,name:L,description:typeof f.description=="string"?f.description:void 0,allowCreate:!0})}),$e=await Z.json().catch(()=>({}));if(!Z.ok||$e?.success===!1)return{success:!1,error:$e?.error||`Failed to save workspace (${Z.status})`,code:$e?.code};const We=String($e?.workspace?.id||"").trim();if(We&&(Ia(We),await new Promise(ze=>window.setTimeout(ze,0)),b==="cloud"&&Ie&&We!==xe)){const ze=await Br(We);if(!ze.success)return{success:!1,error:ze.error||"Workspace saved but failed to activate session workspace.",code:"WORKSPACE_SWITCH_FAILED"}}return await Bi(),{success:!0,workspaceId:We||void 0}}catch{return{success:!1,error:"Failed to save workspace profile."}}},[Ia,Bi,b,Ie,xe,Br]),Jd=r.useCallback(async(f,L)=>{if(!U)return{success:!1,error:"Cloud auth endpoint is not configured."};const H=f.trim().toLowerCase(),Z=L;if(!H||!Z)return{success:!1,error:"Email and password are required."};try{const $e=await fetch(G("/api/taskforce/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:H,password:Z})}),We=await $e.json().catch(()=>({}));if(!$e.ok||!We?.success)return{success:!1,error:We?.error||"Sign in failed.",code:We?.code};Er("");const ze=await ys();return ze.success?{success:!0,workspaceSetupRequired:ze.workspaceSetupRequired===!0}:{success:!1,error:ze.error||"Unable to resolve workspace after sign in.",code:ze.code}}catch{return{success:!1,error:"Sign in failed."}}},[G,U,ys]),Gm=r.useCallback((f,L,H)=>{const Z=L&&/^\/[A-Za-z0-9_\-./?=&%]*$/.test(L)?L:"/";let $e=`/api/taskforce/auth/oauth/${encodeURIComponent(f)}/start?return_to=${encodeURIComponent(Z)}`;H&&($e+=`&invite_token=${encodeURIComponent(H)}`),window.location.href=G($e)},[G]),Nl=r.useCallback(async(f,L,H)=>{if(!U)return{success:!1,error:"Cloud auth endpoint is not configured."};const Z=f.trim().toLowerCase(),$e=L;if(!Z||!$e)return{success:!1,error:"Email and password are required."};try{const We=await fetch(G("/api/taskforce/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:Z,password:$e,...typeof H?.displayName=="string"&&H.displayName.trim()?{displayName:H.displayName.trim()}:{},...typeof H?.planId=="string"&&H.planId.trim()?{planId:H.planId.trim()}:{},...typeof H?.planVersionId=="string"&&H.planVersionId.trim()?{planVersionId:H.planVersionId.trim()}:{},...typeof H?.interval=="string"&&H.interval.trim()?{interval:H.interval.trim()}:{}})}),ze=await We.json().catch(()=>({}));if(!We.ok||!ze?.success)return{success:!1,error:ze?.error||"Create account failed.",code:ze?.code,verificationRequired:!!ze?.verificationRequired,verificationToken:typeof ze?.verificationToken=="string"?ze.verificationToken:void 0,emailSent:ze?.emailSent!==!1,emailError:typeof ze?.emailError=="string"?ze.emailError:void 0};const ya=ze?.planSelectionRequired===!0,ka=ze?.checkoutPending===!0,Fa=typeof ze?.commercialState=="string"?ze.commercialState:null,Ta=!!ze?.verificationRequired;if(!Ta){if(Er(""),!!(ya||ka||Fa==="pending_plan_selection"||Fa==="checkout_pending"))return await cn({force:!0})?{success:!0,workspaceSetupRequired:!1,planSelectionRequired:ya,checkoutPending:ka,commercialState:Fa,verificationRequired:Ta,verificationToken:typeof ze?.verificationToken=="string"?ze.verificationToken:void 0,emailSent:ze?.emailSent!==!1,emailError:typeof ze?.emailError=="string"?ze.emailError:void 0}:{success:!1,error:"Unable to resolve workspace after registration.",code:"AUTH_REQUIRED"};const _r=await ys({allowCommercialGate:!1});return _r.success?{success:!0,workspaceSetupRequired:_r.workspaceSetupRequired===!0,planSelectionRequired:ya,checkoutPending:ka,commercialState:Fa,verificationRequired:Ta,verificationToken:typeof ze?.verificationToken=="string"?ze.verificationToken:void 0,emailSent:ze?.emailSent!==!1,emailError:typeof ze?.emailError=="string"?ze.emailError:void 0}:{success:!1,error:_r.error||"Unable to resolve workspace after registration.",code:_r.code}}return{success:!0,workspaceSetupRequired:!!ze?.workspaceSetupRequired,planSelectionRequired:ya,checkoutPending:ka,commercialState:Fa,verificationRequired:Ta,verificationToken:typeof ze?.verificationToken=="string"?ze.verificationToken:void 0,emailSent:ze?.emailSent!==!1,emailError:typeof ze?.emailError=="string"?ze.emailError:void 0}}catch{return{success:!1,error:"Create account failed."}}},[cn,G,U,ys]),Qd=r.useCallback(async f=>{if(!U)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=String(f.displayName||"").trim(),H=typeof f.avatarDraftId=="string"?f.avatarDraftId.trim():"",Z=f.clearAvatar===!0;if(!L)return{success:!1,error:"Display name is required."};try{const $e=await fetch(G("/api/taskforce/auth/profile"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({displayName:L,...H?{avatarDraftId:H}:{},...Z?{clearAvatar:!0}:{}})}),We=await $e.json().catch(()=>({}));if(!$e.ok||!We?.success)return{success:!1,error:We?.error||"Failed to update profile.",code:We?.code};const ze={userId:typeof We?.profile?.userId=="string"?We.profile.userId:Ke,email:typeof We?.profile?.email=="string"?We.profile.email:Pt,displayName:typeof We?.profile?.displayName=="string"?We.profile.displayName:null,avatarUrl:typeof We?.profile?.avatarUrl=="string"?We.profile.avatarUrl:null};return Ht(ze.displayName||""),Oa(ze.avatarUrl||""),{success:!0,profile:ze}}catch{return{success:!1,error:"Failed to update profile."}}},[G,U,Pt,Ke]),Xr=r.useCallback(async f=>{if(!U)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=f.trim().toLowerCase();if(!L)return{success:!1,error:"Email is required."};try{const H=await fetch(G("/api/taskforce/auth/verify-email/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:L})}),Z=await H.json().catch(()=>({}));return!H.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."}}},[G,U]),Xd=r.useCallback(async f=>{if(!U)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=f.trim();if(!L)return{success:!1,error:"Token is required."};try{const H=await fetch(G("/api/taskforce/auth/verify-email/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:L})}),Z=await H.json().catch(()=>({}));return!H.ok||!Z?.success?{success:!1,error:Z?.error||"Verification failed.",code:Z?.code}:{success:!0}}catch{return{success:!1,error:"Verification failed."}}},[G,U]),es=r.useCallback(async f=>{if(!U)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=f.trim().toLowerCase();if(!L)return{success:!1,error:"Email is required."};try{const H=await fetch(G("/api/taskforce/auth/password-reset/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:L})}),Z=await H.json().catch(()=>({}));return!H.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."}}},[G,U]),eu=r.useCallback(async(f,L)=>{if(!U)return{success:!1,error:"Cloud auth endpoint is not configured."};const H=f.trim(),Z=L;if(!H||!Z)return{success:!1,error:"Token and password are required."};try{const $e=await fetch(G("/api/taskforce/auth/password-reset/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:H,password:Z})}),We=await $e.json().catch(()=>({}));return!$e.ok||!We?.success?{success:!1,error:We?.error||"Failed to reset password.",code:We?.code}:{success:!0}}catch{return{success:!1,error:"Failed to reset password."}}},[G,U]),tu=r.useCallback(async f=>{if(!U)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=f.trim();if(!L)return{success:!1,error:"Token is required."};try{const H=await fetch(G("/api/taskforce/auth/invite/inspect"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:L})}),Z=await H.json().catch(()=>({}));return!H.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."}}},[G,U]),Wi=r.useCallback(async(f,L)=>{if(!U)return{success:!1,error:"Cloud auth endpoint is not configured."};const H=f.trim(),Z=L;if(!H||!Z)return{success:!1,error:"Token and password are required."};try{const $e=await fetch(G("/api/taskforce/auth/invite/accept"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:H,password:Z})}),We=await $e.json().catch(()=>({}));if(!$e.ok||!We?.success)return{success:!1,error:We?.error||"Invite acceptance failed.",code:We?.code};Er("");const ze=typeof We?.workspaceId=="string"?We.workspaceId:null;if(ze&&vt){const ka=await Br(ze,{hydrate:!1});if(!ka.success)return{success:!1,error:ka.error||"Unable to resolve workspace after invite acceptance.",code:ka.code}}const ya=await ys({preferredWorkspaceId:ze});return ya.success?(ze&&ca.current!==ze&&Ia(ze,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:ya.workspaceSetupRequired===!0}):{success:!1,error:ya.error||"Unable to resolve workspace after invite acceptance.",code:ya.code}}catch{return{success:!1,error:"Invite acceptance failed."}}},[Ia,G,U,ca,ys,Br,vt]),Pl=r.useCallback(async f=>{if(!U)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=f.trim();if(!L)return{success:!1,error:"Token is required."};try{const H=await fetch(G("/api/taskforce/auth/invite/join"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:L})}),Z=await H.json().catch(()=>({}));if(!H.ok||!Z?.success)return{success:!1,error:Z?.error||"Invite join failed.",code:Z?.code};Er("");const $e=typeof Z?.workspaceId=="string"?Z.workspaceId:null;if($e&&vt){const ze=await Br($e,{hydrate:!1});if(!ze.success)return{success:!1,error:ze.error||"Unable to resolve workspace after invite join.",code:ze.code}}const We=await ys({preferredWorkspaceId:$e});return We.success?($e&&ca.current!==$e&&Ia($e,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:We.workspaceSetupRequired===!0}):{success:!1,error:We.error||"Unable to resolve workspace after invite join.",code:We.code}}catch{return{success:!1,error:"Invite join failed."}}},[Ia,G,U,ca,ys,Br,vt]),Fi=r.useCallback(async()=>{if(!U)return{success:!1,error:"Cloud auth not configured."};try{const f=await fetch(G("/api/taskforce/account/login-methods"),{credentials:"include"}),L=await f.json().catch(()=>({}));return!f.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."}}},[G,U]),Vm=r.useCallback(async f=>{if(!U)return{success:!1,error:"Cloud auth not configured."};try{const L=await fetch(G(`/api/taskforce/account/login-methods/${encodeURIComponent(f)}`),{method:"DELETE",credentials:"include"}),H=await L.json().catch(()=>({}));return!L.ok||!H?.success?{success:!1,error:H?.error||"Unlink failed.",code:H?.code}:{success:!0}}catch{return{success:!1,error:"Unlink failed."}}},[G,U]),Qo=r.useCallback(async f=>{if(!U)return{success:!1,error:"Cloud auth not configured."};try{const L=await fetch(G("/api/taskforce/account/login-methods/password"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({password:f})}),H=await L.json().catch(()=>({}));return!L.ok||!H?.success?{success:!1,error:H?.error||"Failed to add password.",code:H?.code}:{success:!0}}catch{return{success:!1,error:"Failed to add password."}}},[G,U]),Ml=r.useCallback((f,L)=>{const H=L&&/^\/[A-Za-z0-9_\-./?=&%]*$/.test(L)?L:"/",Z=`/api/taskforce/auth/oauth/${encodeURIComponent(f)}/start?flow=link&return_to=${encodeURIComponent(H)}`;window.location.href=G(Z)},[G]),El=r.useCallback(()=>{$a(),Nc.current=null,Pi.current="",qo.current="",Mi.current="",Rc.current="",Ms.current="",Ei.current="",Es(!1),ir(!1),ma(ci()),on(!1),yn([]),jr([]),T([]),rt([]),Le([]),gn([]),Wn(!1),Rn.current!==null&&typeof window<"u"&&(window.clearTimeout(Rn.current),Rn.current=null),gs.current!==null&&typeof window<"u"&&(window.clearTimeout(gs.current),gs.current=null)},[$a,T,jr]),qm=r.useCallback(async()=>{try{U&&await fetch(G("/api/taskforce/auth/logout"),{method:"POST",credentials:"include"})}catch{}finally{if($a(),Aa.current+=1,tn.current=null,Na.current=!1,Jt.current=Date.now(),qe(!1),Za(!0),Ne("anonymous"),qt(""),rd(null),Tt(""),Ht(""),Oa(""),Wo("disconnected"),Fo(null),ba(!0),ot(""),so(!1),ir(!1),la(null),Qn("idle"),Qt(null),Cl.current=!1,b!=="local"&&rh(ae),ye(b==="cloud"&&E),Ia("default"),ga([]),Al.current=!1,ct(null),b==="local"){await Promise.allSettled([Dr({ignoreAuthGuard:!0}),sn(!0,{ignoreAuthGuard:!0}),ha({ignoreAuthGuard:!0}),Li({ignoreAuthGuard:!0,force:!0})]);return}zd.current=!1,El()}},[$a,E,rh,Ia,G,U,ae,b,Dr,ha,Li,sn,El]),Dl=r.useCallback(async f=>{try{const L=await fetch("/api/taskforce/initiative-templates/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)}),H=await L.json().catch(()=>({}));return!L.ok||!H?.success?{success:!1,error:H?.error||`Create failed (${L.status})`}:(await sn(!0),{success:!0,result:H?.results})}catch(L){return{success:!1,error:L.message}}},[sn]),au=r.useCallback(async f=>{const L=await fetch("/api/taskforce/initiative",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f||{})}),H=await L.json().catch(()=>({}));if(!L.ok)throw new Error(H?.error||`Failed to create initiative (${L.status})`);return await ha(),rt(Z=>ri(Z,H)),H},[ha]),Km=r.useCallback(async(f,L)=>{const H=await fetch(`/api/taskforce/initiative/${encodeURIComponent(f)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(L||{})}),Z=await H.json().catch(()=>({}));if(!H.ok)throw new Error(Z?.error||`Failed to update initiative (${H.status})`);return await ha(),rt($e=>ri($e,Z)),Z},[ha]),Ll=r.useCallback(async f=>{const L=await fetch(`/api/taskforce/initiative/${encodeURIComponent(f)}/archive`,{method:"POST"}),H=await L.json().catch(()=>({}));if(!L.ok)throw new Error(H?.error||`Failed to archive initiative (${L.status})`);return await ha(),rt(Z=>ri(Z,H)),H},[ha]),nu=r.useCallback(async f=>{const L=await fetch(`/api/taskforce/initiative/${encodeURIComponent(f)}/unarchive`,{method:"POST"}),H=await L.json().catch(()=>({}));if(!L.ok)throw new Error(H?.error||`Failed to unarchive initiative (${L.status})`);return await ha(),rt(Z=>ri(Z,H)),H},[ha]),Zm=r.useCallback(async f=>{const L=await fetch("/api/taskforce/workstream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f||{})}),H=await L.json().catch(()=>({}));if(!L.ok)throw new Error(H?.error||`Failed to create workstream (${L.status})`);return await ha(),Le(Z=>ri(Z,H)),H},[ha]),Ym=r.useCallback(async(f,L)=>{const H=await fetch(`/api/taskforce/workstream/${encodeURIComponent(f)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(L||{})}),Z=await H.json().catch(()=>({}));if(!H.ok)throw new Error(Z?.error||`Failed to update workstream (${H.status})`);return await ha(),Le($e=>ri($e,Z)),Z},[ha]),Bl=r.useCallback(async f=>{const L=await fetch(`/api/taskforce/workstream/${encodeURIComponent(f)}/archive`,{method:"POST"}),H=await L.json().catch(()=>({}));if(!L.ok)throw new Error(H?.error||`Failed to archive workstream (${L.status})`);return await ha(),Le(Z=>ri(Z,H)),H},[ha]),Ec=r.useCallback(async f=>{const L=await fetch(`/api/taskforce/workstream/${encodeURIComponent(f)}/unarchive`,{method:"POST"}),H=await L.json().catch(()=>({}));if(!L.ok)throw new Error(H?.error||`Failed to unarchive workstream (${L.status})`);return await ha(),Le(Z=>ri(Z,H)),H},[ha]),_o=r.useRef(!1);r.useEffect(()=>{Q(!0),!_o.current&&(_o.current=!0,cn())},[cn]),r.useEffect(()=>{W&&cn()},[W,cn]),r.useEffect(()=>{if(!U)return;let f=!1;const L=new AbortController,H=typeof window<"u"?window.setTimeout(()=>L.abort(),5e3):null;return fetch(G("/api/taskforce/auth/providers"),{credentials:"include",signal:L.signal}).then(Z=>Z.ok?Z.json():null).then(Z=>{!f&&Array.isArray(Z?.providers)&&Kt(Z.providers)}).catch(()=>{}).finally(()=>{H!==null&&typeof window<"u"&&window.clearTimeout(H)}),()=>{f=!0,L.abort()}},[U,G]),r.useEffect(()=>{if(b!=="local"||!Ce||typeof window>"u")return;const f=()=>{cn()},L=()=>{document.visibilityState==="visible"&&f()};window.addEventListener("focus",f),window.addEventListener("online",f),document.addEventListener("visibilitychange",L);const H=window.setInterval(f,3e4);return()=>{window.removeEventListener("focus",f),window.removeEventListener("online",f),document.removeEventListener("visibilitychange",L),window.clearInterval(H)}},[b,Ce,cn]),r.useEffect(()=>{n&&n(Ja.length)},[Ja.length,n]);const Xo=r.useRef(null);r.useEffect(()=>{if(!t){Xo.current=null;return}if(Xo.current===t||Ja.length===0)return;const f=Ja.find(L=>L.id.endsWith(t)||L.id===t);f&&(Xo.current=t,ti(f),br("add"))},[t,Ja]);const wr=r.useRef(!1);r.useEffect(()=>{if(!Tn)return;if(!wr.current&&Sa.length>0){wr.current=!0;const L=Ho,H=Sa.some(Z=>Z.label===L||Z.value===L);if(L&&H){const Z=Sa.find($e=>$e.label===L||$e.value===L);kr(Z?.value||L)}else kr(Vn(Sa));return}const f=Sa.some(L=>L.value===Vs);Sa.length>0&&!f&&kr(Vn(Sa))},[Tn,Sa,Vs,Vn,Ho]),r.useEffect(()=>{if(!Tn||Sa.length===0)return;const f=Z=>!Sa.some($e=>$e.value===Z.category),L=Ja.some(f),H=Wa.some(f);if(L||H){const Z=Vn(Sa);L&&jr($e=>$e.map(We=>f(We)?{...We,category:Z}:We)),H&&T($e=>$e.map(We=>f(We)?{...We,category:Z}:We))}},[Tn,Sa,Ja,Wa,Vn]),r.useEffect(()=>()=>{gs.current!==null&&typeof window<"u"&&(window.clearTimeout(gs.current),gs.current=null),Rn.current!==null&&typeof window<"u"&&(window.clearTimeout(Rn.current),Rn.current=null)},[]),r.useEffect(()=>{},[Jr]);const Co=r.useCallback(async()=>{await hi()},[hi]),Zs=String(xe||"").trim(),Dc=String(Ke||"").trim(),ru=be("/taskforce-ws"),Jm=!!(U&&b==="cloud"&&aa&&Ie&&Dc&&Dc!=="anonymous"&&Zs&&!lf(Zs)&&ru),su=r.useCallback(()=>{b==="cloud"&&(hi(),!(typeof window>"u")&&(Rn.current!==null&&window.clearTimeout(Rn.current),Rn.current=window.setTimeout(()=>{Rn.current=null,hi()},250)))},[b,hi]);Jg({enabled:Jm,workspaceId:Zs,websocketUrl:ru,onSignal:su,userId:Dc||void 0}),Eb({isOpen:ee,authBlocked:Y,authRequiredForApi:E,isAuthenticated:Ie,canCallProtectedApi:Mn.canCallProtectedApi,shouldGateProtectedApiCalls:De,authSessionResolvedRef:Ic,authRequiredForApiRef:Tc,isAuthenticatedRef:Vo,dataVersionRef:Wm,refreshTaskCollectionsForDataVersion:Co});const Wl=r.useMemo(()=>{const f=new Map;for(const L of Wa)f.set(L.id,L);for(const L of Ja)f.set(L.id,L);return Array.from(f.values())},[Ja,Wa]),Lc=r.useMemo(()=>Nr.map(f=>({...f.taskSnapshot,isDeleted:!0,deletedRecordId:f.id})),[Nr]);r.useEffect(()=>{if(!(va||Ua)&&ee&&!ia){if(z==="tasks"){const f=`${xe}:${z}:${q?"archive":"active"}:${we}`;if(!Sr.current){Sr.current=!0,Ms.current=f;return}if(Ms.current===f)return;Ms.current=f,sn(),ha(),(q||we==="archived")&&qn(!0),we==="deleted"&&cr();return}if(z==="settings"){const f=`${xe}:${z}:${Fe}`;if(Ei.current===f)return;Ei.current=f,Dr(),(Fe==="commands"||Fe==="resources")&&Ut()}}},[xe,ee,z,Fe,q,we,sn,ha,qn,cr,Dr,Ut,va,Ua,ia]);const Fl=r.useCallback(async(f="")=>{try{const L=await fetch(`/api/taskforce/folders?path=${encodeURIComponent(f)}`);if(L.ok){const H=await L.json();it(H.folders||[]),jt(H.files||[]),It(f)}}catch(L){console.error("[Taskforce] Failed to fetch folders:",L)}},[]),ou=r.useCallback(f=>{const L=[];if(f.path&&L.push(f.path),f.paths&&f.paths.length>0)for(const H of f.paths)L.includes(H)||L.push(H);return L},[]),{validatePaths:Ol,handleUpdateCategory:Bc,handleSaveCategory:iu,handleAddPath:Ds,handleUpdateCategoryIcon:cu,handleUpdateCategoryColor:$l,handleRemovePath:lu,handleSelectPath:du,handleRemoveCategory:Ls,handleSaveType:uu,handleRemoveType:mu,handleUpdateType:pu,handleUpdateTaxonomies:fu,handleUpdatePriorities:hu,analyzeSystemTaxonomyPack:ts,handleApplySystemTaxonomyPack:Ul}=Zw({activeCategories:Sa,activeTab:z,activeTypes:ra,archivedTasks:Wa,browserTarget:Ft,category:Vs,configLoaded:Tn,customCategories:ro,refreshTaskCollections:Jr,fetchTasks:sn,filterCategories:kc,getCategoryPaths:ou,normalizePath:Is,pathValidation:ui,setBrowserTarget:Nt,setCategory:kr,setCustomCategories:di,setCustomTypes:Ts,setFilterCategories:vr,setPathValidation:mi,setPriorities:pr,setShowFolderBrowser:lt,setTaxonomies:fi,tasks:Ja}),ei=r.useCallback(async f=>{const L=Rs,H={...L,...f};io(H);try{const Z=await fetch("/api/taskforce/taxonomy-display-labels",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayLabels:f})});if(!Z.ok)throw new Error(`Failed to save taxonomy display labels (${Z.status})`);const $e=await Z.json().catch(()=>({}));$e?.displayLabels&&typeof $e.displayLabels=="object"&&io({...H,...$e.displayLabels})}catch(Z){console.error("[Taskforce] Failed to update taxonomy display labels",Z),io(L)}},[Rs]),br=r.useCallback(f=>{z==="tasks"&&ua.current&&cs(ua.current.scrollTop),ie(f)},[z]),gu=r.useRef(async()=>{}),{handleNavigation:zl,handleClose:Qm,resetForm:Wc,resolveWorkstreamIdInput:yu,handleEdit:ti,handleOpenTaskById:Ao,returnToPreviousTask:Fc,clearReturnToParentTask:Oc}=rb({activeCategories:Sa,activeTypes:ra,activeTab:z,attachments:xc,checklistItems:qs,comments:gl,description:uc,editingTaskId:Pr,flushPendingAutoSave:()=>gu.current(),getPreferredCategoryValue:Vn,lastUsedCategory:Ho,newCommentText:Ci,relationshipTasks:Wl,workstreams:Me,showArchive:q,taxonomies:ds,setActiveTab:br,setApproach:pl,setAssignee:vi,setAttachments:ji,setAttachmentsDirty:Ni,setCategory:kr,setChecklistItems:mc,setComments:_i,setComplexity:dl,setDescription:hl,setDueDate:Nd,setEditingTaskId:Kr,setError:Er,setFormTaxonomies:wt,setIsOpen:Q,setNewCommentText:pc,setPendingNavigation:no,setWorkstreamInput:Si,setPriority:zo,setScheduledDate:Ps,setShowArchive:Se,setStatus:ko,setTaskReturnTrail:Wt,setTitle:bi,setType:Ns,setUnsavedModalOpen:hn,taskReturnTrail:At,title:wi}),{copiedId:Oi,handleDelete:ai,handleUpdateTask:Hl,handleToggleComplete:Gl,handleToggleCancel:$c,handleToggleInProgress:xo,handleToggleReview:Vl,handleArchiveTask:$i,handleBulkArchive:Xm,handleUnarchive:ql,handleRestoreDeletedTask:ku,handlePermanentlyDeleteDeletedTask:vu,handleEmptyDeletedTasks:Ys,handleCopyId:Su,queueWorkspaceSyncFromAuthoritativeTaskState:Kl}=bb({tasks:Ja,archivedTasks:Wa,editingTaskId:Pr,setTasks:jr,setArchivedTasks:T,setDeletedTasks:yn,setError:Er,resetForm:Wc,setActiveTab:br,fetchTasks:sn,fetchArchive:qn,fetchDeletedTasks:cr,mergeTaskFromServer:mo,pushNotice:F,cloudAuthConfigured:U,runtimeMode:b,isAuthenticated:Ie,workspaceCloudSyncEnabled:ms,buildWorkspaceSyncSignature:ll,pushWorkspaceChangesToCloud:$o,workspacePendingSignatureRef:Id,workspaceDeletedTaskIdsRef:Gs,workspaceDeletedTaskWatermarksRef:Td}),{autoSaveState:wu,flushAutoSave:bu,scheduleWarningPrompt:ep,handleSubmit:Zl,confirmScheduleWarning:tp,cancelScheduleWarning:ni,handleAddComment:Yl}=vb({activeCategories:Sa,activeTab:z,apiEndpoint:d,approach:ml,assignee:fl,attachments:xc,attachmentsDirty:Ud,category:Vs,checklistItems:qs,comments:gl,complexity:dc,description:uc,dueDate:jd,editingTaskId:Pr,fetchTasks:sn,formTaxonomies:fc,getPreferredCategoryValue:Vn,mergeTaskFromServer:mo,workstreamInput:On,priority:oa,pushNotice:F,queueWorkspaceSyncFromAuthoritativeTaskState:Kl,relationshipTasks:Wl,resetForm:Wc,resolveWorkstreamIdInput:yu,scheduledDate:Fn,setActiveTab:br,setAttachmentsDirty:Ni,setComments:_i,setError:Er,setLastUsedCategory:gc,setLoading:Yr,setNewCommentText:pc,status:ul,title:wi,taxonomies:ds,type:yo});r.useEffect(()=>{gu.current=bu},[bu]);const{handleSetWorkstreamForCurrentTask:_u}=Sb({editingTaskId:Pr,mergeTaskFromServer:mo,workstreamInput:On,pushNotice:F,queueWorkspaceSyncFromAuthoritativeTaskState:Kl,relationshipTasks:Wl,resolveWorkstreamIdInput:yu,setError:Er,fetchTasks:sn}),{currentTask:Cu,currentTaskWorkstream:Au,currentTaskInitiative:ks}=eb({editingTaskId:Pr,relationshipTasks:Wl,initiatives:j,workstreams:Me,supplementalTasks:Lc,setComments:_i}),vs=qw({resolveCloudAuthUrl:G,currentWorkspaceId:xe,normalizedCloudAuthBaseUrl:oe,normalizedCloudMcpBaseUrl:Re,mergedConfig:o,availableWorkspaces:Gt,currentTheme:Ee,configLoaded:Tn,globalTheme:gt,themeUseGlobalDefault:St,keyShortcut:fa,jsonBackupEnabled:Ha,globalJsonBackupEnabled:os,globalWeekStartsOn:Pa,locale:An,supportedLocales:xr,jsonBackupUseGlobalDefault:zn,manualComplexityEnabled:rn,checklistDropdownEnabled:hr,showTaskCardStatusLabel:fn,exportWorkflowsPath:rr,exportingResource:sr,exportResult:or,pathSaved:ut,settingsSection:Fe,exportEnvironment:In,setupState:Cn,buildInfo:Da,saveSetupMode:Jo,saveWorkspaceProfile:jl,setCurrentTheme:nt,handleSaveTheme:Gd,handleSaveGlobalTheme:Om,setKeyShortcut:mn,handleJsonBackupEnabledChange:$m,handleSaveGlobalJsonBackupEnabled:Um,handleSaveGlobalWeekStartsOn:zm,handleSaveLocale:Vd,handleManualComplexityEnabledChange:Hm,handleChecklistDropdownEnabledChange:kn,handleShowTaskCardStatusLabelChange:xl,handleResetProjectToGlobal:qd,handleSaveSettings:Hd,setExportWorkflowsPath:Tr,setExportEnvironment:Bt,availableWorkflows:Gr,initiativeTemplates:Je,availableEnvironments:Ln,fetchWorkflows:Ut,fetchInitiativeTemplates:La,createInitiativeFromTemplate:Dl,fetchWorkflowTemplate:da,fetchWorkflowOverrideNames:Va,saveWorkflowTemplateDraft:Ya,resetWorkflowTemplateDraft:As,handleExportWorkflows:xs,setShowFolderBrowser:lt,setBrowserTarget:Nt,fetchFolders:Fl,activeCategories:Sa,pathValidation:ui,taxonomyDisplayLabels:Rs,handleUpdateCategory:Bc,handleRemoveCategory:Ls,handleSaveCategory:iu,handleAddPath:Ds,handleRemovePath:lu,handleUpdateCategoryIcon:cu,handleUpdateCategoryColor:$l,activeTypes:ra,handleSaveType:uu,handleRemoveType:mu,handleUpdateType:pu,taxonomies:ds,handleUpdateTaxonomies:fu,priorities:nn,handleUpdatePriorities:hu,analyzeSystemTaxonomyPack:ts,handleApplySystemTaxonomyPack:Ul,handleUpdateTaxonomyDisplayLabels:ei,projectRoot:Ge,projectName:yt,mcpHostRoot:ea,serverHostRoot:xn,mcpScriptPath:Ve,tenantId:Ot,runtimeMode:b,workspaceSwitchingEnabled:vt,deleteWorkspace:lr,setMcpHostRoot:ss,isAuthenticated:Ie});r.useEffect(()=>{typeof window<"u"&&(window.__TASKFORCE_DEBUG__={tasks:Ja,archivedTasks:Wa,runtimeMode:b,currentWorkspaceId:xe,isAuthenticated:Ie,workspaceCloudSyncEnabled:ms,realtimeSyncEnabled:za,fetchTasks:sn,fetchArchive:qn,retryWorkspaceCloudSync:ps,resetWorkspaceSyncCursorAndPull:yi,getSyncDiagnostics:Uo,__dispatch:{handleUpdateTask:Hl,handleToggleComplete:Gl,handleArchiveTask:$i,handleToggleCancel:$c,handleToggleInProgress:xo,handleToggleReview:Vl,handleSubmit:Zl,handleDelete:ai}})},[Ja,Wa,b,xe,Ie,ms,za,sn,qn,ps,yi,Uo,Hl,Gl,$i,$c,xo,Vl,Zl,ai]);const xu=Rr&&Rr.tone!=="error"?{message:Rr.message,type:"info"}:null,Iu=String(S||C.wsBaseUrl||ge||"").trim().replace(/\/+$/,"");return{config:{...o,cloudEnvironment:C.cloudEnvironment||o.cloudEnvironment||"",apiBaseUrl:ge||o.apiBaseUrl,cloudAuthBaseUrl:oe||o.cloudAuthBaseUrl,wsBaseUrl:Iu||o.wsBaseUrl},isOpen:ee,setIsOpen:Q,activeTab:z,setActiveTab:br,currentTheme:Ee,setCurrentTheme:nt,configLoaded:Tn,storagePath:Ct,saveSettings:Hd,pathSaved:ut,keyShortcut:fa,setKeyShortcut:mn,globalWeekStartsOn:Pa,locale:An,supportedLocales:xr,saveLocale:Vd,jsonBackupEnabled:Ha,setJsonBackupEnabled:ar,manualComplexityEnabled:rn,checklistDropdownEnabled:hr,showTaskCardStatusLabel:fn,setManualComplexityEnabled:Ir,mcpHostRoot:ea,setMcpHostRoot:ss,settingsSection:Fe,setSettingsSection:et,runtimeMode:b,workspaceMode:Et,workspaceSwitchingEnabled:vt,cloudAuthConfigured:U,authRequiredForApi:E,authBlocked:Y,isAuthenticated:Ie,authUserId:Ke,authUserEmail:Pt,authUserDisplayName:Lt,authUserAvatarUrl:Ka,authWorkspaceId:Vt,userGlobalSyncStatus:po,workspaceLastPullAt:Nm,workspaceLastPushAt:ol,workspaceLastErrorAt:Pm,userGlobalSyncError:fo,workspaceLastErrorMessage:il,workspaceLastSuccessfulSyncAt:Kn,workspaceSyncPhase:ho,workspaceSyncSetupIntent:gi,workspaceSyncStatus:Mm,workspaceSyncSummary:Ad,workspaceSyncRecommendedAction:Oo,workspaceSyncBusy:Em,workspaceSyncPendingChanges:xd,retryUserGlobalSettingsSync:lc,retryWorkspaceCloudSync:ps,resetWorkspaceSyncCursorAndPull:yi,getWorkspaceSyncDiagnostics:Uo,hasBetaAccess:en,realtimeSyncEnabled:za,realtimeSyncFlagSource:er,currentWorkspaceId:xe,currentWorkspaceRole:Rl,availableWorkspaces:Gt,assigneeOptions:Ea,workspaceCloudSyncEnabled:ms,saveWorkspaceCloudSyncSettings:go,applyWorkspaceSyncStateSnapshot:Rd,bootstrapState:rc,authSessionResolved:aa,workspaceBootstrapPending:ia,bootstrapPhase:$t,bootstrapError:_a,bootstrapStartedAt:Or,setupState:Cn,runtimeCapabilities:En,refreshSetupContext:Bi,retryBootstrapChecks:Tl,continueAfterCommercialOnboarding:Yd,saveWorkspaceProfile:jl,fetchWorkspaces:Lr,createWorkspace:Yo,deleteWorkspace:lr,switchWorkspace:Br,loginWithCredentials:Jd,beginOAuthLogin:Gm,availableAuthProviders:sa,fetchLoginMethods:Fi,unlinkLoginMethod:Vm,addPasswordToAccount:Qo,beginOAuthLink:Ml,registerWithCredentials:Nl,updateCurrentUserProfile:Qd,requestEmailVerification:Xr,confirmEmailVerification:Xd,requestPasswordReset:es,confirmPasswordReset:eu,inspectInviteAcceptance:tu,acceptInviteWithToken:Wi,joinInviteWithToken:Pl,logout:qm,showFolderBrowser:Xe,setShowFolderBrowser:lt,folders:re,files:Ye,currentBrowsePath:kt,fetchFolders:Fl,browserTarget:Ft,setBrowserTarget:Nt,groupBy:hs,setGroupBy:Zn,activeWorkspaceModule:_l,setActiveWorkspaceModule:Fm,emptyColumnMode:wo,setEmptyColumnMode:bo,zenMode:Hn,setZenMode:Gn,handleSelectPath:du,handleAddPath:Ds,handleRemovePath:lu,tasks:Ja,loadingTasks:li,archivedTasks:Wa,initiatives:j,workstreams:Me,planningBootstrapTaskSummaries:ne,deletedTasks:Nr,activeCategories:Sa,activeTypes:ra,priorities:nn,taxonomyDisplayLabels:Rs,approaches:fr,taxonomies:ds,searchQuery:yc,setSearchQuery:Md,filterCategories:kc,setFilterCategories:vr,filterTypes:yl,setFilterTypes:Ed,filterPriorities:Qa,setFilterPriorities:Ai,filterStatus:vo,setFilterStatus:Dd,filterAssignees:kl,setFilterAssignees:Qr,filterTaxonomies:vc,setFilterTaxonomies:xi,hasInitedFilters:So,sortBy:Sc,setSortBy:wc,sortOrder:vl,setSortOrder:Wd,toggleSortOrder:Go,showArchive:q,setShowArchive:Se,taskScope:we,setTaskScope:Te,clearFilters:Dm,filteredTasks:bc,searchAgnosticTasks:_c,filteredArchive:Fd,groupedTasks:Od,collapsedCategories:Sl,setCollapsedCategories:wl,fetchTasks:sn,fetchArchive:qn,fetchDeletedTasks:cr,fetchPlanningEntities:ha,fetchAssigneeOptions:Zo,createInitiative:au,updateInitiative:Km,archiveInitiative:Ll,unarchiveInitiative:nu,createWorkstream:Zm,updateWorkstream:Ym,archiveWorkstream:Bl,unarchiveWorkstream:Ec,handleEdit:ti,handleDelete:ai,handleCopyId:Su,handleToggleComplete:Gl,handleToggleCancel:$c,handleToggleInProgress:xo,handleToggleReview:Vl,handleArchiveTask:$i,handleBulkArchive:Xm,handleUnarchive:ql,handleRestoreDeletedTask:ku,handlePermanentlyDeleteDeletedTask:vu,handleEmptyDeletedTasks:Ys,handleUpdateTask:Hl,editingTaskId:Pr,loading:co,error:lo,title:wi,setTitle:bi,description:uc,setDescription:hl,checklistItems:qs,setChecklistItems:mc,category:Vs,setCategory:kr,type:yo,setType:Ns,priority:oa,setPriority:zo,complexity:dc,setComplexity:dl,status:ul,setStatus:ko,approach:ml,setApproach:pl,assignee:fl,setAssignee:vi,scheduledDate:Fn,setScheduledDate:Ps,dueDate:jd,setDueDate:Nd,workstreamInput:On,setWorkstreamInput:Si,formTaxonomies:fc,setFormTaxonomies:wt,comments:gl,newCommentText:Ci,setNewCommentText:pc,attachments:xc,setAttachments:ji,attachmentsDirty:Ud,setAttachmentsDirty:Ni,descriptionFocused:Bm,setDescriptionFocused:Ri,showMarkdownHelp:Eo,setShowMarkdownHelp:Do,showChecklist:hc,setShowChecklist:fs,showComments:Lm,setShowComments:$d,isCapturingScreenshot:Cc,setIsCapturingScreenshot:Ac,handleSubmit:Zl,resetForm:Wc,handleAddComment:Yl,handleSetWorkstreamForCurrentTask:_u,handleOpenTaskById:Ao,returnToPreviousTask:Fc,autoSaveState:wu,unsavedModalOpen:qr,setUnsavedModalOpen:hn,pendingNavigation:Bn,handleNavigation:zl,handleClose:Qm,uiNotice:Rr,pushNotice:F,clearNotice:Be,successBanner:xu,taskReturnTrail:At,clearReturnToParentTask:Oc,copiedId:Oi,recentlyChangedTaskIds:$s,scheduleWarningPrompt:ep,confirmScheduleWarning:tp,cancelScheduleWarning:ni,tasksScrollRef:ua,setTasksScrollPos:cs,exportEnvironment:In,setExportEnvironment:Bt,exportWorkflowsPath:rr,setExportWorkflowsPath:Tr,exportResult:or,exportingResource:sr,handleUpdateCategory:Bc,handleRemoveCategory:Ls,handleSaveCategory:iu,handleUpdateCategoryIcon:cu,handleUpdateCategoryColor:$l,handleSaveType:uu,handleRemoveType:mu,handleUpdateType:pu,handleUpdateTaxonomies:fu,handleUpdatePriorities:hu,handleUpdateTaxonomyDisplayLabels:ei,pathValidation:ui,validatePaths:Ol,getCategoryPaths:ou,customCategories:ro,setCustomCategories:di,projectRoot:Ge,projectName:yt,mcpScriptPath:Ve,serverHostRoot:xn,commentsEndRef:Pd,currentTask:Cu,currentTaskWorkstream:Au,currentTaskInitiative:ks,availableWorkflows:Gr,initiativeTemplates:Je,availableEnvironments:Ln,fetchWorkflows:Ut,fetchInitiativeTemplates:La,createInitiativeFromTemplate:Dl,fetchWorkflowTemplate:da,fetchWorkflowOverrideNames:Va,saveWorkflowTemplateDraft:Ya,resetWorkflowTemplateDraft:As,onExportWorkflows:xs,settingsModel:vs}}const Wb="modulepreload",Fb=function(e){return"/taskforce/"+e},Ih={},_s=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=Fb(y),y in Ih)return;Ih[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":Wb,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)})},Ob="_filterGlow_1a4uy_8",$b="_floatingButton_1a4uy_18",Ub="_badge_1a4uy_49",zb="_configBadge_1a4uy_66",Hb="_configBadgeActive_1a4uy_76",Gb="_configBadgeRevoked_1a4uy_82",Vb="_configBadgeExpired_1a4uy_88",qb="_header_1a4uy_98",Kb="_headerTitle_1a4uy_113",Zb="_brandIcon_1a4uy_130",Yb="_brandHomeButton_1a4uy_136",Jb="_brandHomeStatic_1a4uy_137",Qb="_brandCloudSuffix_1a4uy_162",Xb="_projectSlash_1a4uy_167",e_="_projectName_1a4uy_174",t_="_taskCountBadge_1a4uy_193",a_="_taskCountBadgeIcon_1a4uy_210",n_="_taskCountBadgeAlert_1a4uy_214",r_="_headerActions_1a4uy_220",s_="_sortDirectionBtn_1a4uy_227",o_="_sortDirectionBtnWidget_1a4uy_234",i_="_form_1a4uy_242",c_="_topRow_1a4uy_254",l_="_field_1a4uy_260",d_="_labelRow_1a4uy_266",u_="_label_1a4uy_266",m_="_manageLink_1a4uy_280",p_="_input_1a4uy_299",f_="_select_1a4uy_300",h_="_textarea_1a4uy_301",g_="_taskIdInlineLink_1a4uy_335",y_="_readOnly_1a4uy_354",k_="_selectWithConfig_1a4uy_362",v_="_configBtn_1a4uy_372",S_="_configBtnActive_1a4uy_402",w_="_hasPath_1a4uy_410",b_="_pathIndicator_1a4uy_415",__="_formActions_1a4uy_421",C_="_hasCancel_1a4uy_428",A_="_submitBtn_1a4uy_432",x_="_cancelBtn_1a4uy_448",I_="_successMessage_1a4uy_480",T_="_errorMessage_1a4uy_486",R_="_successIcon_1a4uy_498",j_="_spinner_1a4uy_518",N_="_spin_1a4uy_518",P_="_boardRefreshIndicator_1a4uy_522",M_="_destructiveBtn_1a4uy_552",E_="_warningBtn_1a4uy_575",D_="_viewTab_1a4uy_598",L_="_deleteBtn_1a4uy_609",B_="_loading_1a4uy_619",W_="_emptyState_1a4uy_625",F_="_taskList_1a4uy_635",O_="_taskIdBadge_1a4uy_641",$_="_taskIdBadgeLabel_1a4uy_663",U_="_copiedId_1a4uy_682",z_="_highlight_1a4uy_688",H_="_modal_1a4uy_700",G_="_priorityEmoji_1a4uy_708",V_="_metaItem_1a4uy_712",q_="_taskFormDateInput_1a4uy_726",K_="_metaBadge_1a4uy_736",Z_="_complexityPill_1a4uy_751",Y_="_complexityDots_1a4uy_755",J_="_dot_1a4uy_761",Q_="_dotFilled_1a4uy_769",X_="_typePill_1a4uy_775",eC="_type_bug_1a4uy_779",tC="_type_feature_1a4uy_783",aC="_type_chore_1a4uy_787",nC="_type_refactor_1a4uy_791",rC="_type_documentation_1a4uy_795",sC="_type_research_1a4uy_799",oC="_type_security_1a4uy_807",iC="_approachPill_1a4uy_812",cC="_approach_evaluate_1a4uy_817",lC="_approach_collaborate_1a4uy_823",dC="_approach_plan_1a4uy_829",uC="_approachActive_1a4uy_835",mC="_statusActionsGroup_1a4uy_840",pC="_statusActionsGroupCompact_1a4uy_846",fC="_statusSelectWrap_1a4uy_850",hC="_statusTaxonomyDropdownWrap_1a4uy_856",gC="_statusTaxonomyDropdown_1a4uy_856",yC="_statusTaxonomyDropdownCompact_1a4uy_864",kC="_statusTaxonomyDropdownIconOnly_1a4uy_868",vC="_taxonomyDropdownButton_1a4uy_873",SC="_taxonomyDropdownButtonContent_1a4uy_890",wC="_statusTaxonomyDropdownIconOnlyPanel_1a4uy_894",bC="_actionBtn_1a4uy_900",_C="_startWorkBtn_1a4uy_924",CC="_workingBtn_1a4uy_933",AC="_pulse_1a4uy_1",xC="_reviewBtn_1a4uy_939",IC="_reviewActiveBtn_1a4uy_949",TC="_reviewPill_1a4uy_955",RC="_archiveTaskBtn_1a4uy_962",jC="_bulkArchiveBtn_1a4uy_971",NC="_bulkDeleteBtn_1a4uy_993",PC="_completeBtn_1a4uy_1034",MC="_completeActiveBtn_1a4uy_1044",EC="_deleteActiveBtn_1a4uy_1050",DC="_disabledBtn_1a4uy_1056",LC="_archiveList_1a4uy_1063",BC="_archiveHeader_1a4uy_1071",WC="_settingsTab_1a4uy_1082",FC="_settingsTabMcpOnly_1a4uy_1091",OC="_settingsTabs_1a4uy_1100",$C="_settingsLayout_1a4uy_1114",UC="_settingsLayoutMcpOnly_1a4uy_1121",zC="_settingsSidebar_1a4uy_1127",HC="_settingsSidebarHeader_1a4uy_1137",GC="_settingsSidebarNav_1a4uy_1146",VC="_settingsSidebarBtn_1a4uy_1155",qC="_settingsSidebarBtnActive_1a4uy_1179",KC="_settingsSidebarGroup_1a4uy_1186",ZC="_settingsSidebarGroupBtn_1a4uy_1192",YC="_settingsSidebarGroupLabel_1a4uy_1196",JC="_settingsSidebarGroupChevron_1a4uy_1200",QC="_settingsSidebarSubnav_1a4uy_1206",XC="_settingsSidebarSubBtn_1a4uy_1213",eA="_appScrollbar_1a4uy_1236",tA="_settingsTabBtn_1a4uy_1240",aA="_settingsTabBtnActive_1a4uy_1266",nA="_settingsContent_1a4uy_1272",rA="_mcpRegistrationHint_1a4uy_1298",sA="_mcpRegistrationPrompt_1a4uy_1309",oA="_mcpAuthRequiredCard_1a4uy_1328",iA="_mcpAuthRequiredIcon_1a4uy_1340",cA="_mcpAuthRequiredBody_1a4uy_1353",lA="_mcpAuthRequiredActions_1a4uy_1360",dA="_settingsToast_1a4uy_1404",uA="_settingsToastSuccess_1a4uy_1421",mA="_settingsToastError_1a4uy_1427",pA="_inputWithPrefix_1a4uy_1433",fA="_pathHint_1a4uy_1440",hA="_settingGroup_1a4uy_1453",gA="_settingTitle_1a4uy_1459",yA="_settingTitleRow_1a4uy_1468",kA="_settingTitleActionBtn_1a4uy_1475",vA="_themeOptions_1a4uy_1495",SA="_buttonGrid_1a4uy_1500",wA="_themeBtn_1a4uy_1512",bA="_activeTheme_1a4uy_1536",_A="_pathInputGroup_1a4uy_1544",CA="_saveSettingsBtn_1a4uy_1553",AA="_shortcutInputWrapper_1a4uy_1574",xA="_inputIcon_1a4uy_1579",IA="_settingHelper_1a4uy_1588",TA="_browseBtn_1a4uy_1595",RA="_inlineCategoryManager_1a4uy_1614",jA="_categoryManager_1a4uy_1625",NA="_categoryList_1a4uy_1631",PA="_categoryChip_1a4uy_1643",MA="_categoryChipLabel_1a4uy_1656",EA="_chipActionBtn_1a4uy_1664",DA="_removeCategoryBtn_1a4uy_1684",LA="_addCategoryForm_1a4uy_1704",BA="_addCategoryBtn_1a4uy_1709",WA="_filesList_1a4uy_1734",FA="_helpLink_1a4uy_1761",OA="_inlineCode_1a4uy_1782",$A="_codeBlock_1a4uy_1793",UA="_taskChildrenSummaryBadges_1a4uy_1817",zA="_taskChildrenProgressBar_1a4uy_1825",HA="_taskChildrenProgressBarSegmentDone_1a4uy_1836",GA="_taskChildrenProgressBarSegmentReview_1a4uy_1842",VA="_taskChildrenProgressBarSegmentInProgress_1a4uy_1848",qA="_taskChildrenProgressBarSegmentBlocked_1a4uy_1854",KA="_taskChildrenProgressText_1a4uy_1860",ZA="_taskChildUnlinkBtn_1a4uy_1869",YA="_aboutText_1a4uy_1887",JA="_versionInfo_1a4uy_1894",QA="_filterBar_1a4uy_1902",XA="_kanbanHintText_1a4uy_1916",ex="_searchContainer_1a4uy_1922",tx="_searchIcon_1a4uy_1929",ax="_searchInput_1a4uy_1937",nx="_searchActive_1a4uy_1963",rx="_searchCount_1a4uy_1968",sx="_clearSearchBtn_1a4uy_1984",ox="_filterRow_1a4uy_2006",ix="_sortLabel_1a4uy_2012",cx="_archiveToggle_1a4uy_2020",lx="_filterContainer_1a4uy_2057",dx="_filterButton_1a4uy_2062",ux="_filterActive_1a4uy_2087",mx="_filterDropdown_1a4uy_2093",px="_filterOption_1a4uy_2108",fx="_filterDivider_1a4uy_2138",hx="_filterSelect_1a4uy_2144",gx="_filterToggleBtn_1a4uy_2185",yx="_inProgressToggle_1a4uy_2207",kx="_activeInProgress_1a4uy_2225",vx="_activeFilter_1a4uy_2234",Sx="_resetFiltersBtn_1a4uy_2244",wx="_categoryChip_disabled_1a4uy_2277",bx="_categoryVisibilityToggle_1a4uy_2287",_x="_editCategoryInput_1a4uy_2300",Cx="_categoryChipActionBtn_1a4uy_2311",Ax="_categoryChipActionBtn_active_1a4uy_2329",xx="_categoryGroup_1a4uy_2334",Ix="_categoryHeader_1a4uy_2342",Tx="_categoryTitle_1a4uy_2356",Rx="_categoryCount_1a4uy_2366",jx="_categoryItems_1a4uy_2372",Nx="_priorityItem_low_1a4uy_2381",Px="_priorityItem_medium_1a4uy_2385",Mx="_priorityItem_high_1a4uy_2389",Ex="_priorityItem_critical_1a4uy_2393",Dx="_priorityPill_low_1a4uy_2397",Lx="_priorityPill_medium_1a4uy_2403",Bx="_priorityPill_high_1a4uy_2409",Wx="_priorityPill_critical_1a4uy_2415",Fx="_selectPriority_low_1a4uy_2430",Ox="_selectPriority_medium_1a4uy_2435",$x="_selectPriority_high_1a4uy_2440",Ux="_selectPriority_critical_1a4uy_2445",zx="_levelSelect_1a4uy_2454",Hx="_levelOption_1a4uy_2467",Gx="_levelOptionFilled_1a4uy_2484",Vx="_levelOption_priority_low_1a4uy_2491",qx="_levelOption_priority_medium_1a4uy_2496",Kx="_levelOption_priority_high_1a4uy_2501",Zx="_levelOption_priority_critical_1a4uy_2506",Yx="_levelOption_complexity_tiny_1a4uy_2513",Jx="_levelOption_complexity_low_1a4uy_2518",Qx="_levelOption_complexity_medium_1a4uy_2523",Xx="_levelOption_complexity_high_1a4uy_2528",eI="_levelOption_complexity_epic_1a4uy_2533",tI="_levelOptionActive_1a4uy_2540",aI="_levelOptionSelected_1a4uy_2545",nI="_levelLabel_1a4uy_2553",rI="_fadeIn_1a4uy_1",sI="_closeConfigBtn_1a4uy_2578",oI="_configItem_1a4uy_2600",iI="_settingsLabel_1a4uy_2606",cI="_settingsHint_1a4uy_2615",lI="_pathList_1a4uy_2622",dI="_pathChip_1a4uy_2629",uI="_pathValid_1a4uy_2642",mI="_pathInvalid_1a4uy_2647",pI="_pathValidIcon_1a4uy_2652",fI="_pathInvalidIcon_1a4uy_2657",hI="_pathText_1a4uy_2662",gI="_removePathBtn_1a4uy_2669",yI="_pathCount_1a4uy_2691",kI="_specialistSection_1a4uy_2714",vI="_toggleHeading_1a4uy_2722",SI="_dropdownList_1a4uy_2762",wI="_specialistBadge_1a4uy_2771",bI="_iconGrid_1a4uy_2801",_I="_iconPickerBtn_1a4uy_2812",CI="_iconPickerBtnActive_1a4uy_2831",AI="_categorySubConfig_1a4uy_2838",xI="_colorPickerRow_1a4uy_2846",II="_colorPickerGrid_1a4uy_2852",TI="_colorSwatch_1a4uy_2859",RI="_colorSwatchActive_1a4uy_2878",jI="_categoryChipIcon_1a4uy_2884",NI="_fieldIconWrapper_1a4uy_2889",PI="_fieldIcon_1a4uy_2889",MI="_field_dynamic_1a4uy_2911",EI="_fieldIcon_dynamic_1a4uy_2917",DI="_categoryTitleIcon_1a4uy_2921",LI="_editActionsHeader_1a4uy_2927",BI="_editActionsGroup_1a4uy_2936",WI="_urlInputGroup_1a4uy_2943",FI="_iconBtn_1a4uy_2956",OI="_stickyActionHeader_1a4uy_2977",$I="_taskHierarchyHeader_1a4uy_2994",UI="_taskHierarchyBadgeRow_1a4uy_3001",zI="_taskHierarchyDivider_1a4uy_3009",HI="_taskHierarchySegment_1a4uy_3015",GI="_taskHierarchyMeta_1a4uy_3022",VI="_taskHierarchyActionBtn_1a4uy_3035",qI="_taskHierarchyEditor_1a4uy_3041",KI="_taskHierarchyInput_1a4uy_3048",ZI="_taskSaveStatus_1a4uy_3057",YI="_taskSaveStatusCenter_1a4uy_3068",JI="_taskSaveStatusError_1a4uy_3076",QI="_headerSuccessFeedback_1a4uy_3080",XI="_slideInUp_1a4uy_1",eT="_successCheck_1a4uy_3092",tT="_scaleIn_1a4uy_1",aT="_primaryUpdateBtn_1a4uy_3128",nT="_secondaryHeaderBtn_1a4uy_3156",rT="_secondaryHeaderBtnDestructive_1a4uy_3177",sT="_commentSection_1a4uy_3190",oT="_attachmentCaptureContainer_1a4uy_3226",iT="_capturePrompt_1a4uy_3234",cT="_previewContainer_1a4uy_3248",lT="_previewHeader_1a4uy_3254",dT="_attachmentCapturePreview_1a4uy_3264",uT="_actions_1a4uy_3271",mT="_primaryButton_1a4uy_3277",pT="_secondaryButton_1a4uy_3292",fT="_iconButton_1a4uy_3307",hT="_attachmentGrid_1a4uy_3329",gT="_attachmentCard_1a4uy_3336",yT="_attachmentPreviewContainer_1a4uy_3350",kT="_contextFileLink_1a4uy_3371",vT="_attachmentActions_1a4uy_3397",ST="_attachmentActionBtn_1a4uy_3411",wT="_attachmentCaptionInput_1a4uy_3433",bT="_hiddenInput_1a4uy_3451",_T="_contextUploadPanel_1a4uy_3455",CT="_contextUploadActions_1a4uy_3463",AT="_contextDropzone_1a4uy_3471",xT="_contextDropzoneActive_1a4uy_3487",IT="_contextDropzonePulse_1a4uy_1",TT="_contextLinkRow_1a4uy_3495",RT="_contextNotice_1a4uy_3501",jT="_documentAttachmentList_1a4uy_3507",NT="_documentAttachmentItem_1a4uy_3514",PT="_documentAttachmentRow_1a4uy_3521",MT="_documentAttachmentLink_1a4uy_3529",ET="_documentAttachmentMain_1a4uy_3543",DT="_documentAttachmentText_1a4uy_3550",LT="_documentAttachmentIcon_1a4uy_3558",BT="_documentAttachmentName_1a4uy_3569",WT="_documentAttachmentType_1a4uy_3578",FT="_documentAttachmentActions_1a4uy_3591",OT="_documentAttachmentActionBtn_1a4uy_3597",$T="_documentAttachmentCaptionInput_1a4uy_3618",UT="_brokenImage_1a4uy_3646",zT="_brokenImagePlaceholder_1a4uy_3654",HT="_regionOverlay_1a4uy_3668",GT="_selectionBox_1a4uy_3679",VT="_exportRow_1a4uy_3687",qT="_exportItem_1a4uy_3692",KT="_taxonomyDrillDown_1a4uy_3701",ZT="_drillDownList_1a4uy_3711",YT="_drillDownSection_1a4uy_3719",JT="_drillDownSectionHeader_1a4uy_3725",QT="_drillDownSectionTitle_1a4uy_3732",XT="_drillDownItem_1a4uy_3741",eR="_drillDownItemDimmed_1a4uy_3763",tR="_drillDownItemActive_1a4uy_3771",aR="_drillDownItemInfo_1a4uy_3776",nR="_drillDownItemText_1a4uy_3782",rR="_drillDownItemLabel_1a4uy_3787",sR="_drillDownItemSubtext_1a4uy_3792",oR="_addTaxonomyBtnSmall_1a4uy_3797",iR="_taxonomyDetailView_1a4uy_3819",cR="_slideIn_1a4uy_1",lR="_detailHeader_1a4uy_3839",dR="_detailTitle_1a4uy_3848",uR="_detailContent_1a4uy_3855",mR="_createOverlay_1a4uy_3862",pR="_createDialog_1a4uy_3874",fR="_zoomIn_1a4uy_1",hR="_dialogActions_1a4uy_3902",gR="_settingsGroup_1a4uy_3920",yR="_settingsItem_1a4uy_3926",kR="_settingLabelGroup_1a4uy_3932",vR="_settingLabel_1a4uy_3932",SR="_settingDescription_1a4uy_3944",wR="_settingInput_1a4uy_3951",bR="_codeBlockWrapper_1a4uy_3974",_R="_codeHeader_1a4uy_3983",CR="_codeHeaderActions_1a4uy_3994",AR="_codeLabel_1a4uy_4001",xR="_codeHeaderDescription_1a4uy_4009",IR="_mcpTokenCardBody_1a4uy_4017",TR="_mcpTokenFormGrid_1a4uy_4025",RR="_mcpTokenOutputWrap_1a4uy_4032",jR="_mcpTokenValueField_1a4uy_4039",NR="_mcpTokenValueText_1a4uy_4049",PR="_mcpTokenValueInput_1a4uy_4062",MR="_mcpTokenActionRow_1a4uy_4067",ER="_copyBtn_1a4uy_4090",DR="_copyBtnActive_1a4uy_4111",LR="_copyBtnNeutralActive_1a4uy_4117",BR="_headerDivider_1a4uy_4135",WR="_groupByContainer_1a4uy_4141",FR="_groupByLabel_1a4uy_4149",OR="_groupBySelect_1a4uy_4154",$R="_viewSwitcher_1a4uy_4176",UR="_selectWithIcon_1a4uy_4184",zR="_marginBottom16_1a4uy_4188",HR="_headerDraggable_1a4uy_4193",GR="_headerDragging_1a4uy_4197",VR="_filterSelectSort_1a4uy_4205",qR="_archiveRow_1a4uy_4209",KR="_taskScopeToggle_1a4uy_4215",ZR="_taskScopeTabs_1a4uy_4223",YR="_taskScopeTab_1a4uy_4223",JR="_taskScopeTabActive_1a4uy_4256",QR="_taskToolbarAction_1a4uy_4268",XR="_overlayHighZ_1a4uy_4284",ej="_savedText_1a4uy_4294",tj="_shortcutInput_1a4uy_1574",aj="_saveSettingsBtnWrapper_1a4uy_4302",nj="_marginBottom12_1a4uy_4306",rj="_exportRowGrid_1a4uy_4310",sj="_settingSubtitleCustom_1a4uy_4315",oj="_capitalize_1a4uy_4321",ij="_marginTop12_1a4uy_4325",cj="_marginTop16_1a4uy_4329",lj="_labelGroupFlex_1a4uy_4333",dj="_codeBlockWrapperCustom_1a4uy_4339",uj="_kanbanWrapper_1a4uy_4345",mj="_kanbanContainer_1a4uy_4353",pj="_kanbanTopScroll_1a4uy_4375",fj="_kanbanTopScrollSpacer_1a4uy_4384",hj="_kanbanColumn_1a4uy_4388",gj="_kanbanColumnSticky_1a4uy_4404",yj="_kanbanColumnCollapsed_1a4uy_4410",kj="_kanbanColumnPast_1a4uy_4415",vj="_kanbanColumnSelectedDay_1a4uy_4420",Sj="_kanbanHeader_1a4uy_4427",wj="_kanbanCount_1a4uy_4437",bj="_kanbanHeaderDraggable_1a4uy_4457",_j="_kanbanHeaderPanning_1a4uy_4461",Cj="_kanbanQuickAdd_1a4uy_4465",Aj="_kanbanColorDot_1a4uy_4486",xj="_kanbanDroppable_1a4uy_4498",Ij="_kanbanDroppableScroll_1a4uy_4507",Tj="_kanbanEmpty_1a4uy_4517",Rj="_kanbanCard_1a4uy_4527",jj="_kanbanCardWrapper_1a4uy_4537",Nj="_taxonomyDropdownActive_1a4uy_4545",Pj="_kanbanCardWrapperRaised_1a4uy_4549",Mj="_kanbanCardTitle_1a4uy_4553",Ej="_kanbanBadges_1a4uy_4557",Dj="_kanbanBadge_1a4uy_4557",Lj="_headerFlex_1a4uy_4573",Bj="_marginBottom8_1a4uy_4580",Wj="_marginBottom20_1a4uy_4584",Fj="_configPanel_1a4uy_4588",Oj="_configPanelLarge_1a4uy_4597",$j="_subLabelBlock_1a4uy_4601",Uj="_subLabelBlock12_1a4uy_4608",zj="_flexBetween_1a4uy_4612",Hj="_flexBetweenCenter_1a4uy_4619",Gj="_deleteBtnSmall_1a4uy_4624",Vj="_deleteBtnMedium_1a4uy_4630",qj="_trashIcon_1a4uy_4637",Kj="_gridConfig_1a4uy_4641",Zj="_flexColGap4_1a4uy_4648",Yj="_flexColGap4Center_1a4uy_4654",Jj="_flex1_1a4uy_4661",Qj="_flexCol_1a4uy_4648",Xj="_flexGrow1_1a4uy_4671",eN="_inputLabel_1a4uy_4675",tN="_inputLabelBlock_1a4uy_4679",aN="_checkboxInput_1a4uy_4685",nN="_configDividerMargin_1a4uy_4691",rN="_configDividerMargin24_1a4uy_4696",sN="_pathListMargin_1a4uy_4701",oN="_cancelBtnRed_1a4uy_4705",iN="_code_1a4uy_1793",cN="_workflowList_1a4uy_4732",lN="_workflowActions_1a4uy_4740",dN="_textBtn_1a4uy_4749",uN="_workflowGrid_1a4uy_4763",mN="_checkboxLabel_1a4uy_4771",pN="_checkboxSmall_1a4uy_4785",fN="_docWorkspace_1a4uy_4804",hN="_docIndexPanel_1a4uy_4815",gN="_docWorkspaceTrayMode_1a4uy_4827",yN="_docViewerPanel_1a4uy_4827",kN="_docWorkspaceTrayOpen_1a4uy_4832",vN="_docTrayPanel_1a4uy_4836",SN="_docTrayPanelOpen_1a4uy_4860",wN="_docSpinning_1a4uy_4868",bN="_docSpin_1a4uy_4868",_N="_docViewerEmpty_1a4uy_4887",CN="_agentsModuleRoot_1a4uy_4902",AN="_agentsModuleWithTray_1a4uy_4914",xN="_agentsModuleTrayOpen_1a4uy_4918",IN="_agentTrayPanel_1a4uy_4922",TN="_agentTrayPanelOpen_1a4uy_4945",RN="_agentTrayHeader_1a4uy_4953",jN="_agentTrayTitle_1a4uy_4968",NN="_agentTrayContent_1a4uy_4980",PN="_agentTrayContentInner_1a4uy_4988",MN="_agentsModuleContent_1a4uy_4992",EN="_agentsModuleGroup_1a4uy_4997",DN="_marginTop24_1a4uy_5001",LN="_settingSubTitle_1a4uy_5005",BN="_dangerBtn_1a4uy_5014",WN="_aiProfilesExplorer_1a4uy_5030",FN="_aiProfilesListPane_1a4uy_5041",ON="_aiProfilesList_1a4uy_5041",$N="_aiProfilesSection_1a4uy_5060",UN="_aiProfilesSectionHeader_1a4uy_5066",zN="_aiProfileGroup_1a4uy_5074",HN="_aiProfileGroupSelected_1a4uy_5097",GN="_aiProfileGroupDuplicate_1a4uy_5106",VN="_aiProfileGroupHeader_1a4uy_5111",qN="_aiProfileGroupAvatar_1a4uy_5119",KN="_aiProfileGroupIdentity_1a4uy_5141",ZN="_aiProfileName_1a4uy_5150",YN="_aiProfileHandle_1a4uy_5158",JN="_aiProfileRole_1a4uy_5159",QN="_aiProfileSeatSummary_1a4uy_5170",XN="_aiProfileSeatScopeIcon_1a4uy_5179",eP="_aiProfileSeatScopeIconDetail_1a4uy_5190",tP="_aiProfileSeatScopeIconCloud_1a4uy_5195",aP="_aiProfileSeatScopeIconLocal_1a4uy_5199",nP="_aiProfileDuplicateBadge_1a4uy_5203",rP="_aiProfileMergeSection_1a4uy_5215",sP="_aiProfileMergeRow_1a4uy_5222",oP="_aiProfileIdChip_1a4uy_5229",iP="_aiProfileKeepBadge_1a4uy_5241",cP="_aiProfileMergeActions_1a4uy_5255",lP="_aiProfileDetailPane_1a4uy_5262",dP="_aiProfileDetailCard_1a4uy_5268",uP="_aiProfileDetailHero_1a4uy_5280",mP="_aiProfileDetailIcon_1a4uy_5286",pP="_aiProfileDetailAvatar_1a4uy_5300",fP="_aiProfileDetailHeading_1a4uy_5304",hP="_aiProfileDetailTitleRow_1a4uy_5309",gP="_aiProfileDetailTitle_1a4uy_5309",yP="_aiProfileDetailMetaRow_1a4uy_5324",kP="_aiProfileDetailHandle_1a4uy_5332",vP="_aiProfileDetailRole_1a4uy_5337",SP="_aiProfileDetailLinkedCount_1a4uy_5344",wP="_aiProfileDetailDescription_1a4uy_5349",bP="_aiProfileSignatureColor_1a4uy_5356",_P="_aiProfileSignatureSwatch_1a4uy_5366",CP="_aiProfileDetailDataList_1a4uy_5376",AP="_aiProfileDetailDataGroup_1a4uy_5385",xP="_aiProfileDetailDateGroup_1a4uy_5392",IP="_aiProfileDetailDataRow_1a4uy_5397",TP="_aiProfileDetailDataLabel_1a4uy_5406",RP="_aiProfileDetailDataValue_1a4uy_5413",jP="_aiProfileStatusSelect_1a4uy_5419",NP="_aiProfileInstanceSection_1a4uy_5461",PP="_aiProfileInstanceSectionHeader_1a4uy_5467",MP="_aiProfileInstanceList_1a4uy_5477",EP="_aiProfileInstanceCard_1a4uy_5483",DP="_aiProfileIdFooter_1a4uy_5496",LP="_aiProfileIdFooterValue_1a4uy_5506",BP="_aiProfileDangerTextButton_1a4uy_5516",WP="_aiProfileInstanceTopRow_1a4uy_5548",FP="_aiProfileInstanceName_1a4uy_5555",OP="_aiProfileInstanceMeta_1a4uy_5562",$P="_aiProfileInlineError_1a4uy_5570",p={filterGlow:Ob,floatingButton:$b,badge:Ub,configBadge:zb,configBadgeActive:Hb,configBadgeRevoked:Gb,configBadgeExpired:Vb,header:qb,headerTitle:Kb,brandIcon:Zb,brandHomeButton:Yb,brandHomeStatic:Jb,brandCloudSuffix:Qb,projectSlash:Xb,projectName:e_,taskCountBadge:t_,taskCountBadgeIcon:a_,taskCountBadgeAlert:n_,headerActions:r_,sortDirectionBtn:s_,sortDirectionBtnWidget:o_,form:i_,topRow:c_,field:l_,labelRow:d_,label:u_,manageLink:m_,input:p_,select:f_,textarea:h_,taskIdInlineLink:g_,readOnly:y_,selectWithConfig:k_,configBtn:v_,configBtnActive:S_,hasPath:w_,pathIndicator:b_,formActions:__,hasCancel:C_,submitBtn:A_,cancelBtn:x_,successMessage:I_,errorMessage:T_,successIcon:R_,spinner:j_,spin:N_,boardRefreshIndicator:P_,destructiveBtn:M_,warningBtn:E_,viewTab:D_,deleteBtn:L_,loading:B_,emptyState:W_,taskList:F_,taskIdBadge:O_,taskIdBadgeLabel:$_,copiedId:U_,highlight:z_,modal:H_,priorityEmoji:G_,metaItem:V_,taskFormDateInput:q_,metaBadge:K_,complexityPill:Z_,complexityDots:Y_,dot:J_,dotFilled:Q_,typePill:X_,type_bug:eC,type_feature:tC,type_chore:aC,type_refactor:nC,type_documentation:rC,type_research:sC,"type_ui-ux":"_type_ui-ux_1a4uy_803",type_security:oC,approachPill:iC,approach_evaluate:cC,approach_collaborate:lC,approach_plan:dC,approachActive:uC,statusActionsGroup:mC,statusActionsGroupCompact:pC,statusSelectWrap:fC,statusTaxonomyDropdownWrap:hC,statusTaxonomyDropdown:gC,statusTaxonomyDropdownCompact:yC,statusTaxonomyDropdownIconOnly:kC,taxonomyDropdownButton:vC,taxonomyDropdownButtonContent:SC,statusTaxonomyDropdownIconOnlyPanel:wC,actionBtn:bC,startWorkBtn:_C,workingBtn:CC,pulse:AC,reviewBtn:xC,reviewActiveBtn:IC,reviewPill:TC,archiveTaskBtn:RC,bulkArchiveBtn:jC,bulkDeleteBtn:NC,completeBtn:PC,completeActiveBtn:MC,deleteActiveBtn:EC,disabledBtn:DC,archiveList:LC,archiveHeader:BC,settingsTab:WC,settingsTabMcpOnly:FC,settingsTabs:OC,settingsLayout:$C,settingsLayoutMcpOnly:UC,settingsSidebar:zC,settingsSidebarHeader:HC,settingsSidebarNav:GC,settingsSidebarBtn:VC,settingsSidebarBtnActive:qC,settingsSidebarGroup:KC,settingsSidebarGroupBtn:ZC,settingsSidebarGroupLabel:YC,settingsSidebarGroupChevron:JC,settingsSidebarSubnav:QC,settingsSidebarSubBtn:XC,appScrollbar:eA,settingsTabBtn:tA,settingsTabBtnActive:aA,settingsContent:nA,mcpRegistrationHint:rA,mcpRegistrationPrompt:sA,mcpAuthRequiredCard:oA,mcpAuthRequiredIcon:iA,mcpAuthRequiredBody:cA,mcpAuthRequiredActions:lA,settingsToast:dA,settingsToastSuccess:uA,settingsToastError:mA,inputWithPrefix:pA,pathHint:fA,settingGroup:hA,settingTitle:gA,settingTitleRow:yA,settingTitleActionBtn:kA,themeOptions:vA,buttonGrid:SA,themeBtn:wA,activeTheme:bA,pathInputGroup:_A,saveSettingsBtn:CA,shortcutInputWrapper:AA,inputIcon:xA,settingHelper:IA,browseBtn:TA,inlineCategoryManager:RA,categoryManager:jA,categoryList:NA,categoryChip:PA,categoryChipLabel:MA,chipActionBtn:EA,removeCategoryBtn:DA,addCategoryForm:LA,addCategoryBtn:BA,filesList:WA,helpLink:FA,inlineCode:OA,codeBlock:$A,taskChildrenSummaryBadges:UA,taskChildrenProgressBar:zA,taskChildrenProgressBarSegmentDone:HA,taskChildrenProgressBarSegmentReview:GA,taskChildrenProgressBarSegmentInProgress:VA,taskChildrenProgressBarSegmentBlocked:qA,taskChildrenProgressText:KA,taskChildUnlinkBtn:ZA,aboutText:YA,versionInfo:JA,filterBar:QA,kanbanHintText:XA,searchContainer:ex,searchIcon:tx,searchInput:ax,searchActive:nx,searchCount:rx,clearSearchBtn:sx,filterRow:ox,sortLabel:ix,archiveToggle:cx,filterContainer:lx,filterButton:dx,filterActive:ux,filterDropdown:mx,filterOption:px,filterDivider:fx,filterSelect:hx,filterToggleBtn:gx,inProgressToggle:yx,activeInProgress:kx,activeFilter:vx,resetFiltersBtn:Sx,categoryChip_disabled:wx,categoryVisibilityToggle:bx,editCategoryInput:_x,categoryChipActionBtn:Cx,categoryChipActionBtn_active:Ax,categoryGroup:xx,categoryHeader:Ix,categoryTitle:Tx,categoryCount:Rx,categoryItems:jx,priorityItem_low:Nx,priorityItem_medium:Px,priorityItem_high:Mx,priorityItem_critical:Ex,priorityPill_low:Dx,priorityPill_medium:Lx,priorityPill_high:Bx,priorityPill_critical:Wx,selectPriority_low:Fx,selectPriority_medium:Ox,selectPriority_high:$x,selectPriority_critical:Ux,"critical-glow":"_critical-glow_1a4uy_1",levelSelect:zx,levelOption:Hx,levelOptionFilled:Gx,levelOption_priority_low:Vx,levelOption_priority_medium:qx,levelOption_priority_high:Kx,levelOption_priority_critical:Zx,levelOption_complexity_tiny:Yx,levelOption_complexity_low:Jx,levelOption_complexity_medium:Qx,levelOption_complexity_high:Xx,levelOption_complexity_epic:eI,levelOptionActive:tI,levelOptionSelected:aI,levelLabel:nI,fadeIn:rI,closeConfigBtn:sI,configItem:oI,settingsLabel:iI,settingsHint:cI,pathList:lI,pathChip:dI,pathValid:uI,pathInvalid:mI,pathValidIcon:pI,pathInvalidIcon:fI,pathText:hI,removePathBtn:gI,pathCount:yI,specialistSection:kI,toggleHeading:vI,dropdownList:SI,specialistBadge:wI,iconGrid:bI,iconPickerBtn:_I,iconPickerBtnActive:CI,categorySubConfig:AI,colorPickerRow:xI,colorPickerGrid:II,colorSwatch:TI,colorSwatchActive:RI,categoryChipIcon:jI,fieldIconWrapper:NI,fieldIcon:PI,field_dynamic:MI,fieldIcon_dynamic:EI,categoryTitleIcon:DI,editActionsHeader:LI,editActionsGroup:BI,urlInputGroup:WI,iconBtn:FI,stickyActionHeader:OI,taskHierarchyHeader:$I,taskHierarchyBadgeRow:UI,taskHierarchyDivider:zI,taskHierarchySegment:HI,taskHierarchyMeta:GI,taskHierarchyActionBtn:VI,taskHierarchyEditor:qI,taskHierarchyInput:KI,taskSaveStatus:ZI,taskSaveStatusCenter:YI,taskSaveStatusError:JI,headerSuccessFeedback:QI,slideInUp:XI,successCheck:eT,scaleIn:tT,primaryUpdateBtn:aT,secondaryHeaderBtn:nT,secondaryHeaderBtnDestructive:rT,commentSection:sT,attachmentCaptureContainer:oT,capturePrompt:iT,previewContainer:cT,previewHeader:lT,attachmentCapturePreview:dT,actions:uT,primaryButton:mT,secondaryButton:pT,iconButton:fT,attachmentGrid:hT,attachmentCard:gT,attachmentPreviewContainer:yT,contextFileLink:kT,attachmentActions:vT,attachmentActionBtn:ST,attachmentCaptionInput:wT,hiddenInput:bT,contextUploadPanel:_T,contextUploadActions:CT,contextDropzone:AT,contextDropzoneActive:xT,contextDropzonePulse:IT,contextLinkRow:TT,contextNotice:RT,documentAttachmentList:jT,documentAttachmentItem:NT,documentAttachmentRow:PT,documentAttachmentLink:MT,documentAttachmentMain:ET,documentAttachmentText:DT,documentAttachmentIcon:LT,documentAttachmentName:BT,documentAttachmentType:WT,documentAttachmentActions:FT,documentAttachmentActionBtn:OT,documentAttachmentCaptionInput:$T,brokenImage:UT,brokenImagePlaceholder:zT,regionOverlay:HT,selectionBox:GT,exportRow:VT,exportItem:qT,taxonomyDrillDown:KT,drillDownList:ZT,drillDownSection:YT,drillDownSectionHeader:JT,drillDownSectionTitle:QT,drillDownItem:XT,drillDownItemDimmed:eR,drillDownItemActive:tR,drillDownItemInfo:aR,drillDownItemText:nR,drillDownItemLabel:rR,drillDownItemSubtext:sR,addTaxonomyBtnSmall:oR,taxonomyDetailView:iR,slideIn:cR,detailHeader:lR,detailTitle:dR,detailContent:uR,createOverlay:mR,createDialog:pR,zoomIn:fR,dialogActions:hR,settingsGroup:gR,settingsItem:yR,settingLabelGroup:kR,settingLabel:vR,settingDescription:SR,settingInput:wR,codeBlockWrapper:bR,codeHeader:_R,codeHeaderActions:CR,codeLabel:AR,codeHeaderDescription:xR,mcpTokenCardBody:IR,mcpTokenFormGrid:TR,mcpTokenOutputWrap:RR,mcpTokenValueField:jR,mcpTokenValueText:NR,mcpTokenValueInput:PR,mcpTokenActionRow:MR,copyBtn:ER,copyBtnActive:DR,copyBtnNeutralActive:LR,headerDivider:BR,groupByContainer:WR,groupByLabel:FR,groupBySelect:OR,viewSwitcher:$R,selectWithIcon:UR,marginBottom16:zR,headerDraggable:HR,headerDragging:GR,filterSelectSort:VR,archiveRow:qR,taskScopeToggle:KR,taskScopeTabs:ZR,taskScopeTab:YR,taskScopeTabActive:JR,taskToolbarAction:QR,overlayHighZ:XR,savedText:ej,shortcutInput:tj,saveSettingsBtnWrapper:aj,marginBottom12:nj,exportRowGrid:rj,settingSubtitleCustom:sj,capitalize:oj,marginTop12:ij,marginTop16:cj,labelGroupFlex:lj,codeBlockWrapperCustom:dj,kanbanWrapper:uj,kanbanContainer:mj,kanbanTopScroll:pj,kanbanTopScrollSpacer:fj,kanbanColumn:hj,kanbanColumnSticky:gj,kanbanColumnCollapsed:yj,kanbanColumnPast:kj,kanbanColumnSelectedDay:vj,kanbanHeader:Sj,kanbanCount:wj,kanbanHeaderDraggable:bj,kanbanHeaderPanning:_j,kanbanQuickAdd:Cj,kanbanColorDot:Aj,kanbanDroppable:xj,kanbanDroppableScroll:Ij,kanbanEmpty:Tj,kanbanCard:Rj,kanbanCardWrapper:jj,taxonomyDropdownActive:Nj,kanbanCardWrapperRaised:Pj,kanbanCardTitle:Mj,kanbanBadges:Ej,kanbanBadge:Dj,headerFlex:Lj,marginBottom8:Bj,marginBottom20:Wj,configPanel:Fj,configPanelLarge:Oj,subLabelBlock:$j,subLabelBlock12:Uj,flexBetween:zj,flexBetweenCenter:Hj,deleteBtnSmall:Gj,deleteBtnMedium:Vj,trashIcon:qj,gridConfig:Kj,flexColGap4:Zj,flexColGap4Center:Yj,flex1:Jj,flexCol:Qj,flexGrow1:Xj,inputLabel:eN,inputLabelBlock:tN,checkboxInput:aN,configDividerMargin:nN,configDividerMargin24:rN,pathListMargin:sN,cancelBtnRed:oN,code:iN,workflowList:cN,workflowActions:lN,textBtn:dN,workflowGrid:uN,checkboxLabel:mN,checkboxSmall:pN,docWorkspace:fN,docIndexPanel:hN,docWorkspaceTrayMode:gN,docViewerPanel:yN,docWorkspaceTrayOpen:kN,docTrayPanel:vN,docTrayPanelOpen:SN,docSpinning:wN,docSpin:bN,docViewerEmpty:_N,agentsModuleRoot:CN,agentsModuleWithTray:AN,agentsModuleTrayOpen:xN,agentTrayPanel:IN,agentTrayPanelOpen:TN,agentTrayHeader:RN,agentTrayTitle:jN,agentTrayContent:NN,agentTrayContentInner:PN,agentsModuleContent:MN,agentsModuleGroup:EN,marginTop24:DN,settingSubTitle:LN,dangerBtn:BN,aiProfilesExplorer:WN,aiProfilesListPane:FN,aiProfilesList:ON,aiProfilesSection:$N,aiProfilesSectionHeader:UN,aiProfileGroup:zN,aiProfileGroupSelected:HN,aiProfileGroupDuplicate:GN,aiProfileGroupHeader:VN,aiProfileGroupAvatar:qN,aiProfileGroupIdentity:KN,aiProfileName:ZN,aiProfileHandle:YN,aiProfileRole:JN,aiProfileSeatSummary:QN,aiProfileSeatScopeIcon:XN,aiProfileSeatScopeIconDetail:eP,aiProfileSeatScopeIconCloud:tP,aiProfileSeatScopeIconLocal:aP,aiProfileDuplicateBadge:nP,aiProfileMergeSection:rP,aiProfileMergeRow:sP,aiProfileIdChip:oP,aiProfileKeepBadge:iP,aiProfileMergeActions:cP,aiProfileDetailPane:lP,aiProfileDetailCard:dP,aiProfileDetailHero:uP,aiProfileDetailIcon:mP,aiProfileDetailAvatar:pP,aiProfileDetailHeading:fP,aiProfileDetailTitleRow:hP,aiProfileDetailTitle:gP,aiProfileDetailMetaRow:yP,aiProfileDetailHandle:kP,aiProfileDetailRole:vP,aiProfileDetailLinkedCount:SP,aiProfileDetailDescription:wP,aiProfileSignatureColor:bP,aiProfileSignatureSwatch:_P,aiProfileDetailDataList:CP,aiProfileDetailDataGroup:AP,aiProfileDetailDateGroup:xP,aiProfileDetailDataRow:IP,aiProfileDetailDataLabel:TP,aiProfileDetailDataValue:RP,aiProfileStatusSelect:jP,aiProfileInstanceSection:NP,aiProfileInstanceSectionHeader:PP,aiProfileInstanceList:MP,aiProfileInstanceCard:EP,aiProfileIdFooter:DP,aiProfileIdFooterValue:LP,aiProfileDangerTextButton:BP,aiProfileInstanceTopRow:WP,aiProfileInstanceName:FP,aiProfileInstanceMeta:OP,aiProfileInlineError:$P},UP="_standaloneWrapper_1r0om_1",zP="_standalonePage_1r0om_11",HP="_standaloneHeader_1r0om_21",GP="_standaloneTitle_1r0om_27",VP="_standaloneContent_1r0om_31",qP="_workspaceToolRail_1r0om_37",KP="_workspaceToolRailMain_1r0om_54",ZP="_workspaceToolRailBottom_1r0om_62",YP="_workspaceToolRailDivider_1r0om_72",JP="_workspaceToolButton_1r0om_79",QP="_workspaceToolButtonActive_1r0om_99",XP="_workspaceToolButtonDisabled_1r0om_106",e0="_headerTitleWidget_1r0om_137",ta={standaloneWrapper:UP,standalonePage:zP,standaloneHeader:HP,standaloneTitle:GP,standaloneContent:VP,workspaceToolRail:qP,workspaceToolRailMain:KP,workspaceToolRailBottom:ZP,workspaceToolRailDivider:YP,workspaceToolButton:JP,workspaceToolButtonActive:QP,workspaceToolButtonDisabled:XP,headerTitleWidget:e0},t0="_overlay_11v7l_1",a0="_browser_11v7l_16",n0="_header_11v7l_27",r0="_pathInfo_11v7l_36",s0="_actions_11v7l_52",o0="_list_11v7l_57",i0="_item_11v7l_63",c0="_itemCurrent_11v7l_80",l0="_itemFile_11v7l_86",d0="_empty_11v7l_90",Ma={overlay:t0,browser:a0,header:n0,pathInfo:r0,actions:s0,list:o0,item:i0,itemCurrent:c0,itemFile:l0,empty:d0},u0="_overlay_1hk7m_2",m0="_overlayHighZ_1hk7m_15",p0="_modal_1hk7m_20",f0="_draggableModal_1hk7m_46",h0="_draggableHeader_1hk7m_53",g0="_headerActions_1hk7m_61",y0="_modalContent_1hk7m_69",k0="_form_1hk7m_80",v0="_formActions_1hk7m_91",S0="_modalFooter_1hk7m_98",w0="_modalSizeSm_1hk7m_104",b0="_modalSizeMd_1hk7m_108",_0="_modalSizeMdWide_1hk7m_112",C0="_modalSizeLg_1hk7m_116",A0="_modalSizeXl_1hk7m_120",x0="_modalSizeFull_1hk7m_124",I0="_settingsViewModal_1hk7m_129",T0="_unsavedOverlay_1hk7m_148",R0="_unsavedModal_1hk7m_153",j0="_unsavedHeader_1hk7m_159",N0="_unsavedTitle_1hk7m_164",P0="_unsavedContent_1hk7m_168",M0="_unsavedText_1hk7m_172",E0="_unsavedActions_1hk7m_177",xt={overlay:u0,overlayHighZ:m0,modal:p0,draggableModal:f0,draggableHeader:h0,headerActions:g0,modalContent:y0,form:k0,formActions:v0,modalFooter:S0,modalSizeSm:w0,modalSizeMd:b0,modalSizeMdWide:_0,modalSizeLg:C0,modalSizeXl:A0,modalSizeFull:x0,settingsViewModal:I0,unsavedOverlay:T0,unsavedModal:R0,unsavedHeader:j0,unsavedTitle:N0,unsavedContent:P0,unsavedText:M0,unsavedActions:E0};function D0(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 qi({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 C=x=>{m.current&&!m.current.contains(x.target)&&d(!1)};return document.addEventListener("mousedown",C),()=>document.removeEventListener("mousedown",C)},[]);const y=C=>{n.includes(C)?s(n.filter(x=>x!==C)):s([...n,C])},k=t.length>0&&t.every(C=>{const x=o==="label"?C.label:C.value;return n.includes(x)}),S=!t.some(C=>{const x=o==="label"?C.label:C.value;return n.includes(x)}),h=()=>{s(k?[]:t.map(C=>o==="label"?C.label:C.value))},g=t.filter(C=>{const x=o==="label"?C.label:C.value;return n.includes(x)}).length,v=D0(e),_=k?`All ${v}`:S?`No ${v}`:g===1?`1 ${e}`:`${g} ${v}`;return a.jsxs("div",{className:p.filterContainer,ref:m,style:l,children:[a.jsxs("button",{className:`${p.filterButton} ${k?"":p.filterActive}`,onClick:()=>d(!i),title:`Filter by ${e}`,children:[a.jsx("span",{children:_}),a.jsx(nl,{size:14,style:{transform:i?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),i&&a.jsxs("div",{className:`${p.filterDropdown} ${p.appScrollbar} tf-scrollbar`,children:[a.jsxs("div",{className:p.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:p.filterDivider}),t.map(C=>{const x=o==="label"?C.label:C.value,W=n.includes(x);return a.jsxs("div",{className:p.filterOption,onClick:()=>y(x),children:[a.jsx("input",{type:"checkbox",checked:W,onChange:()=>{}}),a.jsx("span",{children:C.label})]},C.value)})]})]})}const L0="_taskItem_zvr7q_1",B0="_compressed_zvr7q_20",W0="_taskHeader_zvr7q_25",F0="_taskReferenceCluster_zvr7q_30",O0="_taskMeta_zvr7q_34",$0="_taskTitle_zvr7q_40",U0="_taskItemRecentlyChanged_zvr7q_67",z0="_assigneeAvatarImage_zvr7q_107",H0="_assigneeAvatarIndicator_zvr7q_115",G0="_assigneeAvatarEmpty_zvr7q_137",V0="_inProgress_zvr7q_164",q0="_onHold_zvr7q_175",K0="_readyForReview_zvr7q_186",Z0="_completed_zvr7q_197",Y0="_cancelled_zvr7q_208",J0="_archived_zvr7q_219",Q0="_taskContent_zvr7q_229",X0="_kanbanCardOverlay_zvr7q_238",e1="_taskReferenceText_zvr7q_277",t1="_taskReferenceDivider_zvr7q_286",a1="_taskActions_zvr7q_293",n1="_taskMetaCompact_zvr7q_318",r1="_taskMetaRow_zvr7q_325",s1="_taskMetaBadgeGroup_zvr7q_333",o1="_taskDescription_zvr7q_339",i1="_taskLatestComment_zvr7q_398",c1="_taskCancellationReason_zvr7q_419",l1="_archiveBadge_zvr7q_573",d1="_attachmentThumbnails_zvr7q_578",u1="_attachmentImageRow_zvr7q_585",m1="_attachmentDocumentList_zvr7q_592",p1="_attachmentThumbnail_zvr7q_578",f1="_contextDocThumb_zvr7q_625",h1="_contextDocMain_zvr7q_651",g1="_contextDocText_zvr7q_658",y1="_contextDocIcon_zvr7q_666",k1="_contextDocName_zvr7q_677",v1="_contextDocType_zvr7q_687",S1="_taskSpecialists_zvr7q_699",w1="_taxonomiesList_zvr7q_708",Yt={taskItem:L0,compressed:B0,taskHeader:W0,taskReferenceCluster:F0,taskMeta:O0,taskTitle:$0,taskItemRecentlyChanged:U0,assigneeAvatarImage:z0,assigneeAvatarIndicator:H0,assigneeAvatarEmpty:G0,inProgress:V0,onHold:q0,readyForReview:K0,completed:Z0,cancelled:Y0,archived:J0,taskContent:Q0,kanbanCardOverlay:X0,taskReferenceText:e1,taskReferenceDivider:t1,taskActions:a1,taskMetaCompact:n1,taskMetaRow:r1,taskMetaBadgeGroup:s1,taskDescription:o1,taskLatestComment:i1,taskCancellationReason:c1,archiveBadge:l1,attachmentThumbnails:d1,attachmentImageRow:u1,attachmentDocumentList:m1,attachmentThumbnail:p1,contextDocThumb:f1,contextDocMain:h1,contextDocText:g1,contextDocIcon:y1,contextDocName:k1,contextDocType:v1,taskSpecialists:S1,taxonomiesList:w1},cy=({children:e,className:t,onTaskIdClick:n})=>{if(!e)return null;const s=i=>Oe.Children.toArray(i).some(m=>Oe.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],_=g.index??-1;_<S||(_>S&&k.push(i.slice(S,_)),k.push(a.jsx("button",{type:"button",className:p.taskIdInlineLink,onClick:C=>{C.preventDefault(),C.stopPropagation(),n(v)},children:v},`${v}-${_}-${h}`)),S=_+v.length)}return S<i.length&&k.push(i.slice(S)),k}if(Array.isArray(i))return i.map(l);if(!Oe.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:Oe.cloneElement(i,{},Oe.Children.map(m,l))};return a.jsx("div",{className:t,children:a.jsx(av,{remarkPlugins:[nv,rv],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:p.codeBlock,children:a.jsx("code",{className:d,...m,children:y})}):a.jsx("code",{className:p.inlineCode,...m,children:y})}},children:e})})};function ly({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:`${p.taskIdBadge} ${s?p.copiedId:""} ${l}`.trim(),onClick:i,disabled:o,title:t,"aria-label":n,children:[s?a.jsx(to,{size:13}):a.jsx(ef,{size:13}),a.jsx("span",{className:p.taskIdBadgeLabel,children:d??e})]})}function Qu({copied:e,disabled:t=!1,label:n,onClick:s,title:o="Copy task reference",ariaLabel:l,className:i=""}){return a.jsx(ly,{copied:e,disabled:t,label:"",onClick:s,title:o,ariaLabel:l,className:i,children:n})}const b1=(e,t=10)=>{const n=mm[e?.toLowerCase()]||{icon:"FileCode"},s=bs[n.icon]||Rk;return a.jsx(s,{size:t})},Uu=(e,t)=>{if(!e)return null;const n=t.trim();if(!n)return e;const o=Tm(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:p.highlight,children:m},y):m)})};function wd(e){return e.trim().replace(/\\/g,"/")}function dy(e){return e.split("?")[0].split("#")[0]}function jm(e){return typeof e=="string"?e:String(e.path||"").trim()}function uy(e){const n=dy(wd(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 my(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?wd(n):null}catch{return null}}function _1(e,t){const n=(t||(typeof e=="string"?"":e.fsPath||"")).trim();if(n)return wd(n);const s=jm(e),o=my(s);return o?wd(o):null}function C1(e,t){const n=String(typeof e=="string"?"":e.assetId||"").trim();if(n)return n;const s=jm(e);return uy(s)}function A1(e,t){const n=jm(e);return uy(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(),my(n)||"",n].some(o=>{if(!o)return!1;const l=dy(wd(o)).toLowerCase();return l.endsWith(".md")||l.endsWith(".markdown")})}function x1(e,t){const n=jm(e),s=_1(e,t);if(!s||!A1(e,s))return!1;const o=C1(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 I1="I-";function py(e){return Am(I1,e)}function T1(e){return e.trim().replace(/\\/g,"/")}function fy(e){return typeof e=="string"?e:String(e.path||"").trim()}function R1(e){return/\.(png|jpe?g|webp)(\?|#|$)/i.test(e)}function j1(e){return typeof e=="string"?T1(e).split("/").pop()||"Image attachment":String(e.caption||e.displayName||e.originalFilename||e.fsPath||e.path.split("/").pop()||"Image attachment").trim()}function N1(e,t){if(typeof e=="string")return!1;const n=String(e.assetId||"").trim(),s=fy(e);return!!(n&&s&&R1(s))}function P1(e,t){if(!N1(e))return!1;const n=e,s=String(t?.taskId||n.taskId||"").trim(),o=String(t?.taskReferenceLabel||"").trim(),l=String(n.assetId||"").trim(),i=py(n),d=fy(e),m=new CustomEvent("taskforce:open-annotated-attachment",{detail:{...s?{taskId:s}:{},...o?{taskReferenceLabel:o}:{},assetId:l,...i?{imageReferenceLabel:i}:{},path:d,displayName:j1(e)},cancelable:!0});return!window.dispatchEvent(m)}function Th(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||Xi(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 hm(e){const t=String(e||"").trim().replace(/\\/g,"/");if(!t)return"";const n=t.split("/").filter(Boolean);return n[n.length-1]||""}function bf(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 hy(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 M1(e){return String(e||"").replace(/-\d{13,}$/g,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim()}function Rh(e,t){const{stem:n,ext:s}=bf(hm(e)),o=hy(n,t),l=M1(o||n);return l?`${l}${s}`:hm(e)||"Untitled document"}function bp(e,t){const n=String(e||"").trim();if(!n)return!0;const s=hm(n),{stem:o}=bf(s),l=String(t||"").trim();if(l&&o.toLowerCase()===l.toLowerCase())return!0;const i=hy(o,t);return i?i!==o:!0}function E1(e){const t=String(e.logicalName||"").trim();if(t&&!bp(t,e.assetId))return t;const n=String(e.displayName||"").trim();if(n&&!bp(n,e.assetId))return n;const s=String(e.title||"").trim();if(s&&!bp(s,e.assetId))return s;const o=String(e.originalFilename||"").trim();if(o)return Rh(o,e.assetId);const l=String(e.fsPath||"").trim();return l?Rh(l,e.assetId):"Untitled document"}function D1(e){return E1(e)}function L1(e){const t=D1(e),n=String(e.originalFilename||e.fsPath||"").trim(),s=bf(hm(n)).ext;return s?t.toLowerCase().endsWith(s.toLowerCase())?t:`${t}${s}`:t}const B1="_taxonomyDropdown_tt12a_1",W1="_taxonomyDropdownActive_tt12a_6",F1="_taxonomyDropdownButton_tt12a_11",O1="_taxonomyDropdownOpen_tt12a_50",$1="_taxonomyDropdownButtonContent_tt12a_56",U1="_taxonomyDropdownIcon_tt12a_64",z1="_taxonomyDropdownLabel_tt12a_72",H1="_taxonomyDropdownChevron_tt12a_81",G1="_taxonomyDropdownChevronOpen_tt12a_87",V1="_taxonomyDropdownPanel_tt12a_91",q1="_taxonomyDropdownPanelPortal_tt12a_110",K1="_taxonomyDropdownOption_tt12a_129",Z1="_taxonomyDropdownOptionHighlighted_tt12a_157",Y1="_taxonomyDropdownOptionSelected_tt12a_163",ur={taxonomyDropdown:B1,taxonomyDropdownActive:W1,taxonomyDropdownButton:F1,taxonomyDropdownOpen:O1,taxonomyDropdownButtonContent:$1,taxonomyDropdownIcon:U1,taxonomyDropdownLabel:z1,taxonomyDropdownChevron:H1,taxonomyDropdownChevronOpen:G1,taxonomyDropdownPanel:V1,taxonomyDropdownPanelPortal:q1,taxonomyDropdownOption:K1,taxonomyDropdownOptionHighlighted:Z1,taxonomyDropdownOptionSelected:Y1};function id({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,_]=r.useState(!1),[C,x]=r.useState(-1),[W,V]=r.useState({}),B=r.useRef(null),J=r.useRef(null),me=r.useRef(null),ve=t.find(X=>String(X.value)===String(e));r.useEffect(()=>{if(!v)return;const X=M=>{const O=M.target,de=!!B.current?.contains(O),ge=!!me.current?.contains(O);!de&&!ge&&(_(!1),x(-1))};return document.addEventListener("mousedown",X),()=>document.removeEventListener("mousedown",X)},[v]),r.useEffect(()=>{if(!v)x(-1);else{const X=t.findIndex(M=>String(M.value)===String(e));x(X>=0?X:0)}},[v,t,e]),r.useEffect(()=>{if(!v||!h)return;const X=()=>{const M=J.current;if(!M)return;const O=M.getBoundingClientRect(),de=Math.max(g||0,O.width),ge=Math.max(8,O.right-de),$=O.bottom;V({position:"fixed",top:$,left:ge,minWidth:de,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 se=()=>{l||_(!v)},A=X=>{n(X.value),_(!1),J.current?.focus()},K=X=>{if(!l)switch(X.key){case"Enter":case" ":X.preventDefault(),v?C>=0&&A(t[C]):_(!0);break;case"Escape":X.preventDefault(),_(!1),J.current?.focus();break;case"ArrowDown":X.preventDefault(),v?x(M=>M<t.length-1?M+1:0):_(!0);break;case"ArrowUp":X.preventDefault(),v?x(M=>M>0?M-1:t.length-1):_(!0);break;case"Home":X.preventDefault(),v&&x(0);break;case"End":X.preventDefault(),v&&x(t.length-1);break;case"Tab":_(!1);break}},ue=(X,M)=>{const O=X.icon&&bs[X.icon]?bs[X.icon]:Ji,de=X.color?Nn(X.color):"var(--text-secondary)",ge=M?.hideLabel===!0;return a.jsxs(a.Fragment,{children:[a.jsx("span",{className:`taxonomyDropdownIcon ${ur.taxonomyDropdownIcon}`,style:{color:de},children:a.jsx(O,{size:16})}),!ge&&a.jsx("span",{className:`taxonomyDropdownLabel ${ur.taxonomyDropdownLabel}`,children:X.label})]})},pe=v?a.jsx("div",{ref:me,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 O=String(X.value)===String(e),de=M===C;return a.jsx("div",{className:`taxonomyDropdownOption ${ur.taxonomyDropdownOption} ${O?`taxonomyDropdownOptionSelected ${ur.taxonomyDropdownOptionSelected}`:""} ${de?`taxonomyDropdownOptionHighlighted ${ur.taxonomyDropdownOptionHighlighted}`:""}`,role:"option","aria-selected":O,onClick:()=>A(X),onMouseEnter:()=>x(M),style:(()=>{const ge=X.color,$=Nn(ge),_e=!$||$.startsWith("var("),je=_e?"#8b5cf6":$,oe=_e?"20":"30",ce=_e?"05":"10";return{"--option-color":$||"var(--text-primary)","--option-border":`${je}${oe}`,"--option-bg":`${je}${ce}`}})(),children:ue(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:se,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=Nn(X),O=!M||M.startsWith("var("),de=O?"#8b5cf6":M,ge=O?"30":"50",$=O?"05":"10";return{"--field-color":M||"var(--text-primary)","--field-border":`${de}${ge}`,"--field-bg":`${de}${$}`}})(),children:[a.jsx("span",{className:`taxonomyDropdownButtonContent ${ur.taxonomyDropdownButtonContent}`,children:ve?ue(ve,{hideLabel:y}):a.jsxs(a.Fragment,{children:[a.jsx("span",{className:`taxonomyDropdownIcon ${ur.taxonomyDropdownIcon}`,children:a.jsx(Ji,{size:16})}),a.jsx("span",{className:`taxonomyDropdownLabel ${ur.taxonomyDropdownLabel}`,children:s})]})}),!k&&a.jsx(nl,{size:16,className:`taxonomyDropdownChevron ${ur.taxonomyDropdownChevron} ${v?`taxonomyDropdownChevronOpen ${ur.taxonomyDropdownChevronOpen}`:""}`})]}),h?pe?Yi.createPortal(pe,document.body):null:pe]})}function gy({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,_=s??t,C=Yc.map(x=>({...x,label:(o||l)&&x.shortLabel||x.label}));return a.jsxs("div",{className:`${p.statusActionsGroup} ${o?p.statusActionsGroupCompact:""}`,children:[g==="archive"&&a.jsx("button",{type:"button",className:`${p.actionBtn} ${p.archiveTaskBtn}`,onClick:()=>e&&!v&&m?.(e),disabled:v,title:"Archive Now","aria-label":"Archive task",children:a.jsx(jk,{size:o?12:16})}),g==="unarchive"&&a.jsx("button",{type:"button",className:`${p.actionBtn} ${p.archiveTaskBtn}`,onClick:()=>e&&!v&&y?.(e),disabled:v,title:"Unarchive task","aria-label":"Unarchive task",children:a.jsx(gd,{size:o?12:16})}),a.jsx("div",{className:`${p.statusSelectWrap} ${p.statusTaxonomyDropdownWrap}`,children:a.jsx(id,{value:S,options:C,disabled:_||!e,ariaLabel:"Status",hideSelectedLabel:!i,hideChevron:!i,className:`${p.statusTaxonomyDropdown} ${o?p.statusTaxonomyDropdownCompact:""} ${i?"":p.statusTaxonomyDropdownIconOnly}`,panelClassName:i?"":p.statusTaxonomyDropdownIconOnlyPanel,portalPanel:!i,panelMinWidth:i?void 0:144,onChange:x=>{e&&d?.(e,x)}})})]})}function J1(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 Q1(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 X1(e){return e==="task"?"Task":e.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function Yn(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=>Yn(l,t,n)).filter(Boolean);return o.length>0?o.join(", "):"none"}return typeof e=="object"?"updated":t==="status"?X1(String(e)):String(e)}function jh(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 eM(e){const t=jh(e?.from),n=jh(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 _f(e){return e.split(/[?#]/,1)[0]||e}function Nh(e){const t=_f(e).replace(/\\/g,"/"),n=t.split("/").filter(Boolean);return n[n.length-1]||t}function tM(e){return/\.(png|jpe?g|webp|gif)$/i.test(_f(e))}function aM(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(_f(e))}function Ph(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?Nh(l):"",o?Nh(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=>tM(h))?"image":d.startsWith("D-")||k.some(h=>aM(h))?"document":"attachment";return[{key:y,label:m,kind:S}]}):[]}function nM(e,t){return t===1?e:e==="image"?"images":e==="document"?"documents":"attachments"}function zu(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} ${nM(s,o)}`);return n.length===1?n[0]:e.length<=3&&n.length<=2?n.join(" and "):`${e.length} attachments`}function Gi(e){return e&&e.charAt(0).toUpperCase()+e.slice(1)}function rM(e){const t=Ph(e?.from),n=Ph(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`${Gi(l[0].kind)} attached: ${l[0].label}`;if(i.length===1&&l.length===0)return`${Gi(i[0].kind)} removed: ${i[0].label}`;if(l.length>0&&i.length===0)return`${Gi(zu(l))} attached`;if(i.length>0&&l.length===0)return`${Gi(zu(i))} removed`;if(l.length===1&&i.length===1)return`${Gi(l[0].kind)} replaced: ${i[0].label} -> ${l[0].label}`;if(l.length>0||i.length>0)return`${Gi(zu(l))} attached, ${zu(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`${Gi(d[0].kind)} renamed: ${m?.label||"Attachment"} -> ${d[0].label}`}return"Attachment details updated"}function gm(e,t,n){if(e==="checklistItems")return eM(t);if(e==="attachments")return rM(t);const s=Q1(e);if(e==="title")return`${s}: updated`;if(e==="description"){const o=Yn(t?.from,e,n)!=="none",l=Yn(t?.to,e,n)!=="none";return!o&&l?`${s}: added`:o&&!l?`${s}: cleared`:`${s}: updated`}return`${s}: ${Yn(t?.from,e,n)} -> ${Yn(t?.to,e,n)}`}function yy(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: ${Yn(n.status.from,"status",t)} -> ${Yn(n.status.to,"status",t)}`;if(e.action==="task-schedule-changed")return n.scheduledDate?`Scheduled date changed: ${Yn(n.scheduledDate.from,"scheduledDate",t)} -> ${Yn(n.scheduledDate.to,"scheduledDate",t)}`:n.dueDate?`Due date changed: ${Yn(n.dueDate.from,"dueDate",t)} -> ${Yn(n.dueDate.to,"dueDate",t)}`:"Schedule updated";if(e.action==="task-relationship-changed"&&n.workstreamId)return`Workstream changed: ${Yn(n.workstreamId.from,"workstreamId",t)} -> ${Yn(n.workstreamId.to,"workstreamId",t)}`;if(e.action==="task-relationship-changed"&&n.initiativeId)return`Initiative changed: ${Yn(n.initiativeId.from,"initiativeId",t)} -> ${Yn(n.initiativeId.to,"initiativeId",t)}`;if(e.action==="task-attachments-changed")return n.attachments?gm("attachments",n.attachments,t):"Attachments updated";if(s.length===1){const o=s[0],l=n[o];return gm(o,l,t)}return s.length>1?`${s.length} fields updated`:"Task updated"}function qO(e,t){if(e.taskId||e.entityType==="task")return yy(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: ${Yn(n.initiativeId.from,"initiativeId",t)} -> ${Yn(n.initiativeId.to,"initiativeId",t)}`:(e.action==="initiative-attachments-changed"||e.action==="workstream-attachments-changed")&&n.attachments?gm("attachments",n.attachments,t):s.length===1?gm(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 ym(e){const t=Date.parse(String(e.timestamp||""));return Number.isFinite(t)?t:null}function sM(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 KO(e){if(e.taskId||e.entityType==="task")return sM(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 ky(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=ym(o),d=ym(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 Cf(e){return ky(e)}function oM(e){const t=Cf(e);return t.length===0?null:[...t].sort((n,s)=>{const o=ym(n),l=ym(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 iM(e,t){return e?e.type==="comment"?e.comment.text:yy(e.event,t):""}const{MessageSquare:cM,User:lM,Bot:dM,Gauge:uM,ClipboardList:mM,HelpCircle:pM,File:fM}=bs,hM=({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:_,onToggleInProgress:C,onToggleReview:x,onToggleComplete:W,onToggleCancel:V,onSetStatus:B,onArchiveTask:J,onUnarchive:me,onDelete:ve,deleteActionTitle:se,onOpenTaskById:A,compressed:K=!1,showStatusLabel:ue=!0})=>{const pe=Ng(e),X=pe.label||(pe.isProvisional?"Pending":""),M=pe.isProvisional,O=!!pe.label,de=um(m)||m?.id||"",ge=ry(y)||y?.id||"",$=l.find(re=>String(re.value)===String(e.priority)),_e=$?$.label.toLowerCase().replace(/\s+/g,"-"):String(e.priority),je=i.find(re=>re.value===e.category||re.label===e.category),oe=typeof e.complexity=="number"?e.complexity:Number(e.complexity??3),ce=Number.isFinite(oe)?Math.max(1,Math.min(5,Math.round(oe))):3,Re={1:"Tiny",2:"Low",3:"Mid",4:"High",5:"Epic"},Pe={1:"tiny",2:"low",3:"medium",4:"high",5:"epic"},Ce=Re[ce],De=`var(--complexity-${Pe[ce]})`,U=Dv(e.priority,_e),I=!!p[`priorityItem_${U}`],b=cm(e.assignee),R=ud(e.assignee,d),D=Oe.useMemo(()=>{const re=String(e.assignee||"").trim();return d.find(it=>String(it.value||"").trim()===re)||null},[d,e.assignee]),te=b!=="unassigned"&&typeof D?.avatarUrl=="string"?J1(D.avatarUrl,D.avatarRevision,D.avatarUpdatedAt):"",N=b==="agent"?"var(--color-violet-500, #8b5cf6)":b==="member"?"var(--color-green-500, #22c55e)":"var(--text-secondary, #888)",G=Oe.useMemo(()=>oM(e),[e]),be=h||(e.isDeleted?"deleted":S?"archived":null),z=be!==null,ie=Oe.useCallback((re,it)=>{const Ye=String(it||"").trim();if(Ye){if(re==="assignee")return ud(Ye,d);if(re==="workstreamId"&&Ye===m?.id)return de||m.id;if(re==="initiativeId"&&Ye===y?.id)return ge||y.id}},[d,ge,y,m,de]),ee=Oe.useMemo(()=>iM(G,ie),[ie,G]),Q=Oe.useMemo(()=>Cf(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:"",p[`priorityItem_${U}`]||"",k?Yt.kanbanCardOverlay:"",S?Yt.archived:"",K?Yt.compressed:""].filter(Boolean).join(" "),Se=Nn($?.color),we=o.find(re=>re.value===e.type),Te=Nn(we?.color)||ub(e.type),Ee=re=>{const it=typeof re=="string"?re:re.path,Ye=typeof re=="string"?"":(re.fsPath||"").trim(),jt=typeof re=="string"?"":(re.displayName||"").trim(),kt=typeof re=="string"?"":(re.originalFilename||"").trim(),It=typeof re=="string"?"":(re.caption||"").trim();return[Ye,kt,jt,It,it].some(Nt=>/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(Nt))},nt=re=>{const it=typeof re=="string"?re:re.path,Ye=it.includes("/api/taskforce/documents/"),jt=typeof re=="string"?"":(re.displayName||"").trim();if(Ye&&typeof re!="string")return L1({displayName:re.displayName,originalFilename:re.originalFilename,fsPath:re.fsPath,assetId:re.assetId||null});const kt=typeof re=="string"?"":(re.caption||"").trim();if(kt)return kt;if(jt)return jt;const It=typeof re=="string"?"":(re.originalFilename||"").trim();return It||it.split("?")[0].split("#")[0].split("/").pop()||"Context file"},gt=re=>{const it=typeof re=="string"?re:re.path,Ye=typeof re=="string"?"":(re.fsPath||"").trim(),jt=typeof re=="string"?"":(re.caption||"").trim(),kt=typeof re=="string"?"":(re.originalFilename||"").trim(),It=[];if(Ye&&It.push(Ye),kt&&It.push(kt),jt&&It.push(jt),it.includes("/api/taskforce/context-link?path="))try{const Nt=new URL(it,"http://localhost").searchParams.get("path");Nt&&It.push(Nt)}catch{}It.push(it);for(const Ft of It){const Fe=Ft.split("?")[0].split("#")[0].split("/").pop()||"",et=Fe.lastIndexOf(".");if(et<=0||et===Fe.length-1)continue;const Ge=Fe.slice(et+1);if(Ge)return Ge.slice(0,5).toUpperCase()}return"FILE"},dt={"--task-change-glow-color":Se||`var(--priority-${U})`,...Se?{borderLeftColor:Se,[`--priority-${U}`]:Se}:{},...!I&&Se?{borderLeft:`4px solid ${Se}`}:{}},St=re=>re.replace(/\b\w/g,it=>it.toUpperCase()),Ze=Cd(s,[e]),Ct=e.checklistItems||[],ut=Ct.length,Xe=ut>0?Ct.filter(re=>re.isCompleted).length:0,lt=(re,it)=>{re.stopPropagation(),_?.(re,it)};return a.jsxs("div",{className:q,onClick:()=>v?.(e),style:dt,"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:de}),a.jsx("span",{className:Yt.taskReferenceDivider,children:"/"})]}):null,X?a.jsx(Qu,{copied:O&&n===pe.label,onClick:re=>lt(re,pe.label),disabled:!O,title:O?"Copy task reference":"Task reference pending sync",className:S?Yt.archiveBadge:"",label:Uu(X,t)}):null,M?a.jsx("span",{className:p.taskHierarchyMeta,title:"Temporary local reference until cloud sync assigns the final task number.",children:"Pending sync"}):null]}),a.jsx("div",{className:Yt.taskActions,onClick:re=>re.stopPropagation(),children:z?me||ve?a.jsxs(a.Fragment,{children:[me&&a.jsx("button",{type:"button",className:p.actionBtn,onClick:()=>me(e.id),title:be==="deleted"?"Restore deleted task":"Restore archived task",children:a.jsx(gd,{size:16})}),ve&&a.jsx("button",{type:"button",className:`${p.actionBtn} ${p.deleteBtn}`,onClick:()=>ve(e.id),title:se||(be==="deleted"?"Delete Permanently":"Move to Trash"),children:a.jsx(_m,{size:16})})]}):null:a.jsx(gy,{task:e,compressed:K,shortLabels:!0,showLabel:ue,onSetStatus:(re,it)=>{if(B){B(re,it);return}if(it==="in-progress"){C?.(re);return}if(it==="review"){x?.(re);return}if(it==="done"){W?.(re);return}it==="cancelled"&&V?.(re)},onArchiveTask:J})})]}),a.jsxs("div",{className:Yt.taskContent,children:[z&&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: ",Uu(e.title,t)]}),e.description&&!z&&!K&&a.jsx("div",{className:Yt.taskDescription,children:a.jsx(cy,{onTaskIdClick:A,children:e.description})})]}),e.attachments&&e.attachments.length>0&&!z&&!K&&a.jsxs("div",{className:Yt.attachmentThumbnails,children:[a.jsx("div",{className:Yt.attachmentImageRow,children:(e.attachments||[]).map((re,it)=>{const Ye=typeof re=="string"?re:re.path;return Ee(re)?a.jsx("div",{className:Yt.attachmentThumbnail,onClick:jt=>{jt.stopPropagation(),!P1(typeof re=="string"?{path:Ye}:re,{taskId:e.id,taskReferenceLabel:X})&&window.open(Ye,"_blank")},children:a.jsx("img",{src:Ye,alt:`Attachment ${it}`})},it):null})}),a.jsx("div",{className:Yt.attachmentDocumentList,children:(e.attachments||[]).map((re,it)=>{const Ye=typeof re=="string"?re:re.path,jt=typeof re=="string"?void 0:re.fsPath,kt=nt(re);if(Ee(re))return null;const It=gt(re);return a.jsxs("button",{type:"button",className:Yt.contextDocThumb,onClick:Ft=>{Ft.stopPropagation();const Nt=typeof re=="string"?{path:re,taskId:e.id}:{...re,taskId:e.id};x1(Nt,jt)||window.open(Ye,"_blank")},title:kt,style:{"--context-doc-accent":mb(It)},children:[a.jsxs("span",{className:Yt.contextDocMain,children:[a.jsx("span",{className:Yt.contextDocIcon,"aria-hidden":"true",children:a.jsx(fM,{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})]},it)})})]}),e.status==="cancelled"&&e.canceledReason&&!K&&a.jsxs("div",{className:Yt.taskCancellationReason,children:[a.jsx("strong",{children:"Cancellation Reason:"})," ",Uu(e.canceledReason,t)]}),ee&&!z&&!K&&a.jsxs("div",{className:Yt.taskLatestComment,children:[a.jsx("strong",{children:"Latest Activity:"})," ",Uu(ee.length>120?ee.substring(0,120)+"...":ee,t)]}),!z&&Ze.length>0&&!K&&a.jsx("div",{className:`${Yt.taskSpecialists} ${Yt.taxonomiesList}`,children:Ze.map(re=>{const it=e.taxonomies?.[re.id];return it?(Array.isArray(it)?it:[it]).map(jt=>{const kt=re.options.find(et=>et.value===jt);if(!kt)return null;const It=bs[kt.icon||"Layers"]||Mp,Ft=Nn(kt.color)||"var(--text-primary)",Nt=re.status==="retired"?`${re.label} (Retired)`:re.label,Fe=kt.status==="retired"?`${kt.label} (Retired)`:kt.label;return a.jsx("span",{className:p.specialistBadge,style:{borderColor:`${Ft}50`,backgroundColor:`${Ft}15`,color:Ft},title:`${Nt}: ${St(Fe)}`,children:a.jsx(It,{size:10})},`${re.id}-${jt}`)}):null})}),a.jsx("div",{className:Yt.taskMeta,children:z?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 re=Nn(je?.color),it=je?.icon||"Folder",Ye=bs[it]||jo;return a.jsx("span",{className:p.metaBadge,title:St(e.category),style:{color:re||"var(--text-secondary)",backgroundColor:re?`${re}15`:"var(--bg-tertiary)",borderColor:re?`${re}40`:"transparent"},children:a.jsx(Ye,{size:14})})})(),a.jsx("span",{className:`${p.metaBadge} ${p[`type_${e.type}`]||""}`,title:St(e.type||Fr),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 re=bs[we.icon]||pM;return a.jsx(re,{size:14})})():b1(e.type,14)}),$&&a.jsx("span",{className:p.metaBadge,style:{color:Se||"var(--text-secondary)",backgroundColor:Se?`${Se}15`:"var(--bg-tertiary)",borderColor:Se?`${Se}40`:"var(--border-color)"},title:`${$.label}`,children:(()=>{const re=$.icon||"AlertCircle",it=bs[re]||Nk;return a.jsx(it,{size:14})})()}),Q>0&&a.jsxs("span",{className:p.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(cM,{size:14}),a.jsx("span",{children:Q})]}),ut>0&&a.jsxs("span",{className:p.metaBadge,title:`${Xe}/${ut} checklist items complete`,style:{color:"var(--text-muted)",backgroundColor:"var(--bg-tertiary)",borderColor:"var(--border-primary)",gap:"4px",padding:"0 8px"},children:[a.jsx(mM,{size:14}),a.jsx("span",{children:`${Xe}/${ut}`})]})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[a.jsxs("span",{className:p.metaBadge,title:`AI-estimated complexity: ${Ce} (${ce}/5)`,style:{color:De,backgroundColor:`color-mix(in srgb, ${De}, transparent 88%)`,borderColor:`color-mix(in srgb, ${De}, transparent 72%)`,gap:"4px",padding:"0 8px"},children:[a.jsx(uM,{size:14}),!K&&a.jsx("span",{children:Ce})]}),a.jsx("span",{className:`${Yt.assigneeAvatarIndicator} ${b==="unassigned"?Yt.assigneeAvatarEmpty:""}`,title:`Assigned to: ${R}`,"aria-label":b==="unassigned"?"Unassigned":`Assigned to ${R}`,style:{"--assignee-avatar-color":N},children:te?a.jsx("img",{src:te,alt:"",className:Yt.assigneeAvatarImage}):b==="agent"?a.jsx(dM,{size:K?18:20}):b==="member"?a.jsx(lM,{size:K?18:20}):null})]})]})})})]})]})},bd=Oe.memo(hM),km="168px";function vy(){return a.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:"var(--text-secondary)",marginRight:"4px"},children:He("standalone.filtersCaps")})}function Ki({label:e,options:t,selected:n,onChange:s,variant:o="label"}){return a.jsx(qi,{label:e,options:t,selected:n,onChange:s,variant:o,containerStyle:{flex:`0 0 ${km}`,maxWidth:km}})}function Sy({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(nc,{size:12})," ",He("standalone.clearFilters")]})}function Mh({label:e,options:t,selected:n,onChange:s,allLabel:o,title:l}){const[i,d]=Oe.useState(!1),m=Oe.useRef(null),y=t.find(h=>h.value===n),k=y?.selectedLabel||y?.label||o;Oe.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:p.filterContainer,ref:m,style:{flex:`0 0 ${km}`,maxWidth:km},children:[a.jsxs("button",{type:"button",className:`${p.filterButton} ${n?p.filterActive:""}`,onClick:()=>d(h=>!h),title:l||`Filter by ${e}`,"aria-haspopup":"listbox","aria-expanded":i,children:[a.jsx("span",{children:k}),a.jsx(nl,{size:14,style:{transform:i?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),i&&a.jsxs("div",{className:`${p.filterDropdown} ${p.appScrollbar} tf-scrollbar`,role:"listbox","aria-label":e,children:[a.jsxs("button",{type:"button",className:p.filterOption,onClick:()=>S(""),"aria-selected":!n,children:[a.jsx(to,{size:14,style:{opacity:n?0:1}}),a.jsx("span",{style:{fontWeight:n?500:600},children:o})]}),a.jsx("div",{className:p.filterDivider}),t.map(h=>{const g=h.value===n;return a.jsxs("button",{type:"button",className:p.filterOption,onClick:()=>S(h.value),"aria-selected":g,children:[a.jsx(to,{size:14,style:{opacity:g?1:0}}),a.jsx("span",{style:{fontWeight:g?600:500},children:h.label})]},h.value)})]})]})}function wy({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:p.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:`${p.taskScopeTab} ${l?p.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 by({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(_m,{size:14}),o]})}const{Search:Eh,ClipboardList:gM,ChevronRight:yM,ChevronDown:kM,Folder:vM,Archive:SM,RotateCcw:wM,X:bM,Plus:_M,ArrowUpDown:CM,Trash2:AM}=bs,_y=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:_,filterAssignees:C=[],filterTaxonomies:x,sortBy:W,sortOrder:V,showArchive:B,taskScope:J,collapsedCategories:me,loadingTasks:ve,filteredTasks:se,filteredArchive:A,groupedTasks:K,filteredDeletedTasks:ue=[],groupedDeletedTasks:pe={},copiedId:X,recentlyChangedTaskIds:M=[],showTaskCardStatusLabel:O=!0,onSearchChange:de,onFilterCategoriesChange:ge,onFilterTypesChange:$,onFilterPrioritiesChange:_e,onFilterStatusChange:je,onFilterAssigneesChange:oe,onTaxonomyFilterChange:ce,onSortByChange:Re,onSortOrderChange:Pe,onShowArchiveChange:Ce,onTaskScopeChange:De,onClearFilters:U,onToggleCategory:I,onEditTask:b,onOpenTaskById:R,onCopyId:D,onToggleInProgress:te,onToggleReview:N,onToggleComplete:G,onToggleCancel:be,onSetStatus:z,onArchiveTask:ie,onBulkArchive:ee,onUnarchive:Q,onDelete:q,onDeleteAllDeleted:Se,onFetchArchive:we,onAddTaskToCategory:Te,supplementalTasks:Ee=[],taxonomies:nt}=e,gt=new Set(M),dt=Oe.useMemo(()=>new Map(y.map(ae=>[ae.id,ae])),[y]),St=Oe.useMemo(()=>new Map(k.map(ae=>[ae.id,ae])),[k]),Ze=Oe.useCallback(ae=>{const Ve=ae.workstreamId&&dt.get(ae.workstreamId)||null,bt=Ve?.initiativeId&&St.get(Ve.initiativeId)||null;return{taskWorkstream:Ve,taskInitiative:bt}},[St,dt]),Ct=[...n,...s,...Ee],ut=!!De,Xe=De,lt=J??(B?"archived":"open"),re=ut?lt==="archived"?A:lt==="deleted"?ue:se:se,it=ut?lt==="archived"?{Archived:A}:lt==="deleted"?pe:K:K,Ye=ut?lt==="deleted"?"deleted":lt==="archived"?"archived":null:null,jt=Tm(S),kt=S?jt?`No task found for ${jt.toUpperCase()}`:He("taskList.noMatchingTasks"):lt==="archived"?"No archived tasks found.":lt==="deleted"?"No deleted tasks found.":He("taskList.noActiveTasks"),It=o.filter(ae=>!ae.disabled),Ft=o.filter(ae=>ae.disabled&&Ct.some(Ve=>Ve.category===ae.value)),Nt=[...It,...Ft.filter(ae=>!It.some(Ve=>Ve.value===ae.value))].map(ae=>({value:ae.value,label:ae.disabled?`${ae.label} (Legacy)`:ae.label})),Fe=l.filter(ae=>ae.status!=="retired"),et=l.filter(ae=>ae.status==="retired"&&Ct.some(Ve=>Ve.type===ae.value)),Ge=[...Fe,...et.filter(ae=>!Fe.some(Ve=>Ve.value===ae.value))].map(ae=>({value:ae.value,label:ae.status==="retired"?`${ae.label} (Retired)`:ae.label})),yt=Cd(nt,Ct).filter(ae=>ae.filterEnabled!==!1).map(ae=>({...ae,options:wf(ae,Ct)})),ot=Oe.useMemo(()=>[{value:"created",label:He("taskList.sortCreated")},{value:"updated",label:He("taskList.sortUpdated")},{value:"priority",label:He("taskList.sortPriority")},...iy(nt,Ct)],[Ct,He,nt]);return a.jsxs("div",{className:p.viewTab,ref:t,children:[a.jsxs("div",{className:p.filterBar,children:[a.jsxs("div",{className:p.searchContainer,children:[a.jsx(Eh,{size:16,className:p.searchIcon}),a.jsx("input",{type:"text",className:p.searchInput,placeholder:He("taskList.searchPlaceholder"),value:S,onChange:ae=>de(ae.target.value)}),S&&a.jsx("button",{className:p.clearSearchBtn,onClick:()=>de(""),title:He("taskList.clearSearchTitle"),children:a.jsx(bM,{size:14})})]}),a.jsxs("div",{className:p.filterRow,children:[a.jsx(qi,{label:d?.category||He("taskList.categoryLabel"),options:Nt,selected:h,onChange:ge,variant:"value"}),a.jsx(qi,{label:d?.type||He("taskList.typeLabel"),options:Ge,selected:g,onChange:$,variant:"value"})]}),a.jsxs("div",{className:p.filterRow,children:[a.jsx(qi,{label:d?.priority||He("taskList.priorityLabel"),options:i,selected:v,onChange:_e,variant:"value"}),a.jsx(qi,{label:He("taskList.statusLabel"),options:eo,selected:_,onChange:je,variant:"value"}),a.jsx(qi,{label:He("taskList.assigneeLabel"),options:m,selected:C,onChange:ae=>oe?.(ae),variant:"value"})]}),yt.map(ae=>a.jsx(qi,{label:ae.status==="retired"?`${ae.label} (Retired)`:ae.label,options:ae.options.map(Ve=>({...Ve,label:Ve.status==="retired"?`${Ve.label} (Retired)`:Ve.label})),selected:x[ae.id]||[],onChange:Ve=>ce(ae.id,Ve),variant:"value"},ae.id)),a.jsxs("div",{className:p.filterRow,children:[a.jsxs("div",{className:p.sortLabel,children:[a.jsx(CM,{size:14,style:{marginRight:"4px"}})," ",He("taskList.sortByLabel")]}),a.jsx("select",{value:W,onChange:ae=>Re(ae.target.value),className:`${p.filterSelect} ${p.filterSelectSort} `,children:ot.map(ae=>a.jsx("option",{value:ae.value,children:ae.label},ae.value))}),a.jsx("button",{className:`${p.resetFiltersBtn} ${p.sortDirectionBtnWidget}`,onClick:Pe,title:He(V==="desc"?"taskList.sortDirectionDescTitle":"taskList.sortDirectionAscTitle"),children:V==="desc"?a.jsx(cg,{size:14}):a.jsx(lg,{size:14})}),a.jsx("button",{className:p.resetFiltersBtn,onClick:U,title:He("taskList.resetFiltersTitle"),children:a.jsx(wM,{size:14})})]}),a.jsxs("div",{className:`${p.filterRow} ${p.archiveRow} `,children:[lt==="open"?a.jsxs("button",{className:`${p.bulkArchiveBtn} ${n.some(ae=>ae.status==="done"||ae.status==="cancelled")?"":p.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")?He("taskList.archiveAllTitle"):He("taskList.noTasksToArchiveTitle"),children:[a.jsx(SM,{size:12}),a.jsx("span",{children:He("taskList.archiveFinished")})]}):lt==="deleted"&&Se?a.jsx(by,{className:`${p.bulkArchiveBtn} ${p.taskToolbarAction} ${p.bulkDeleteBtn} ${ue.length===0?p.disabledBtn:""}`,onClick:()=>ue.length>0&&Se(),disabled:ue.length===0,title:ue.length>0?"Empty trash":"Trash is already empty",children:"Empty Trash"}):a.jsx("div",{}),ut?a.jsx(wy,{scope:lt,onScopeChange:ae=>{Xe?.(ae),ae==="archived"?(Ce(!0),we()):B&&Ce(!1)},className:`${p.archiveToggle} ${p.taskScopeToggle}`}):a.jsxs("label",{className:p.archiveToggle,children:[a.jsx("input",{type:"checkbox","aria-label":"Archived",checked:B,onChange:ae=>{Ce(ae.target.checked),ae.target.checked&&we()}}),a.jsx("span",{children:"Include Archive"})]})]})]}),ve&&n.length===0?a.jsx("div",{className:p.loading,children:a.jsx(mr,{size:24,className:p.spinner})}):re.length===0&&!ve?a.jsxs("div",{className:p.emptyState,children:[S?a.jsx(Eh,{size:48}):lt==="deleted"?a.jsx(AM,{size:48}):a.jsx(gM,{size:48}),a.jsx("p",{children:kt})]}):a.jsx("div",{className:p.taskList,style:{opacity:ve?.6:1,transition:"opacity 0.2s ease"},children:Object.entries(it).map(([ae,Ve])=>{if(Ve.length===0)return null;const bt=me[ae];return a.jsxs("div",{className:p.categoryGroup,children:[a.jsx("div",{className:p.categoryHeader,onClick:()=>I(ae),children:a.jsxs("div",{className:p.categoryTitle,children:[bt?a.jsx(yM,{size:16}):a.jsx(kM,{size:16}),(()=>{const Ot=o.find(Et=>Et.label===ae),Dt=Ot?.icon&&tc[Ot.icon]?tc[Ot.icon]:vM,Ue=Nn(Ot?.color)||"var(--color-purple, #8b5cf6)";return a.jsx(Dt,{size:16,className:p.categoryTitleIcon,style:{color:Ue}})})(),ae,a.jsxs("span",{className:p.categoryCount,children:["(",Ve.length,")"]}),Te&&a.jsx("button",{className:p.kanbanQuickAdd,onClick:Ot=>{Ot.stopPropagation(),Te(ae)},title:He("taskList.addTaskToCategoryTitle",{category:ae}),style:{marginLeft:"auto"},disabled:Ye!==null,children:a.jsx(_M,{size:14})})]})}),!bt&&a.jsx("div",{className:p.categoryItems,children:Ve.map(Ot=>(()=>{const{taskWorkstream:Dt,taskInitiative:Ue}=Ze(Ot);return a.jsx(bd,{task:Ot,taskWorkstream:Dt,taskInitiative:Ue,searchQuery:S,copiedId:X,taxonomies:nt,types:l,priorities:i,assigneeOptions:m,onClick:b,onOpenTaskById:R,onCopyId:D,onToggleInProgress:te,onToggleReview:N,onToggleComplete:G,onToggleCancel:be,onSetStatus:z,onArchiveTask:ie,onUnarchive:Ye?Q:void 0,onDelete:Ye?q:void 0,categories:o,isRecentlyChanged:gt.has(Ot.id),readOnlyMode:Ye,showStatusLabel:O},Ot.id)})())})]},ae)})}),!ut&&B&&A.length>0&&a.jsxs("div",{className:p.archiveList,children:[a.jsx("div",{className:p.archiveHeader,children:"Archived"}),A.map(ae=>(()=>{const{taskWorkstream:Ve,taskInitiative:bt}=Ze(ae);return a.jsx(bd,{task:ae,taskWorkstream:Ve,taskInitiative:bt,searchQuery:S,copiedId:X,isArchived:!0,types:l,assigneeOptions:m,onClick:b,onCopyId:D,onSetStatus:z,onUnarchive:Q,onDelete:q,deleteActionTitle:"Delete Permanently",categories:o,showStatusLabel:O},ae.id)})())]})]})});_y.displayName="TaskList";const xM="_formNotice_inuex_1",IM="_assigneeIndicator_inuex_12",TM="_assigneeIndicatorAgent_inuex_20",RM="_assigneeIndicatorUser_inuex_24",jM="_assigneeIndicatorUnassigned_inuex_28",NM="_markdownPreview_inuex_32",PM="_error_inuex_83",MM="_keyboardHint_inuex_92",EM="_taskFormLifecycle_inuex_110",DM="_taskFormMetaDivider_inuex_115",LM="_taskFormMetaGrid_inuex_122",BM="_compactMetaSection_inuex_128",WM="_createWorkstreamRow_inuex_134",FM="_createWorkstreamDropdown_inuex_140",OM="_compactMetaGrid_inuex_145",$M="_compactMetaField_inuex_151",UM="_compactMetaFieldHint_inuex_165",zM="_formFieldsetReset_inuex_169",HM="_formLayout_inuex_176",GM="_formLayoutWithSidebar_inuex_183",VM="_formMainColumn_inuex_191",qM="_activitySidebar_inuex_198",KM="_activitySidebarHeader_inuex_208",ZM="_activitySidebarTitle_inuex_215",YM="_activitySidebarCount_inuex_224",JM="_taskFormDateRow_inuex_246",QM="_taskFormDateLabel_inuex_253",XM="_taskFormDateValue_inuex_261",eE="_taskFormMetaStack_inuex_269",tE="_taskFormMetaActor_inuex_275",aE="_taskFormDateWarning_inuex_287",nE="_taskFormDateError_inuex_293",rE="_helpHeader_inuex_299",sE="_helpClose_inuex_310",oE="_markdownHelp_inuex_324",iE="_helpGrid_inuex_333",cE="_helpGridItem_inuex_339",lE="_settingsHint_inuex_351",dE="_sectionBlock_inuex_357",uE="_softSectionSurface_inuex_367",mE="_stackedList_inuex_374",pE="_stackedListSpaced_inuex_379",fE="_checklistRow_inuex_383",hE="_checklistRowDragging_inuex_392",gE="_checklistHandleBtn_inuex_396",yE="_checklistCheckboxBtn_inuex_419",kE="_checklistCheckboxBtnChecked_inuex_439",vE="_checklistItemText_inuex_444",SE="_checklistItemTextCompleted_inuex_450",wE="_checklistRemoveBtn_inuex_455",bE="_specialistChip_inuex_522",_E="_specialistChipActive_inuex_545",CE="_commentPanel_inuex_626",AE="_activitySidebarPanel_inuex_635",xE="_commentThread_inuex_643",IE="_emptyComments_inuex_663",TE="_activityLoadingThread_inuex_673",RE="_activitySkeletonItem_inuex_677",jE="_activitySkeletonMeta_inuex_683",NE="_activitySkeletonBody_inuex_684",PE="_comment_inuex_626",ME="_commentAi_inuex_740",EE="_commentUser_inuex_744",DE="_commentHeader_inuex_748",LE="_commentAuthor_inuex_772",BE="_commentTime_inuex_780",WE="_commentText_inuex_784",FE="_commentInputArea_inuex_844",OE="_commentInput_inuex_844",$E="_sendCommentBtn_inuex_876",UE="_taxonomyFieldsGrid_inuex_903",zE="_markdownPreviewContainer_inuex_910",HE="_descriptionSurface_inuex_915",at={formNotice:xM,assigneeIndicator:IM,assigneeIndicatorAgent:TM,assigneeIndicatorUser:RM,assigneeIndicatorUnassigned:jM,markdownPreview:NM,error:PM,keyboardHint:MM,taskFormLifecycle:EM,taskFormMetaDivider:DM,taskFormMetaGrid:LM,compactMetaSection:BM,createWorkstreamRow:WM,createWorkstreamDropdown:FM,compactMetaGrid:OM,compactMetaField:$M,compactMetaFieldHint:UM,formFieldsetReset:zM,formLayout:HM,formLayoutWithSidebar:GM,formMainColumn:VM,activitySidebar:qM,activitySidebarHeader:KM,activitySidebarTitle:ZM,activitySidebarCount:YM,taskFormDateRow:JM,taskFormDateLabel:QM,taskFormDateValue:XM,taskFormMetaStack:eE,taskFormMetaActor:tE,taskFormDateWarning:aE,taskFormDateError:nE,helpHeader:rE,helpClose:sE,markdownHelp:oE,helpGrid:iE,helpGridItem:cE,settingsHint:lE,sectionBlock:dE,softSectionSurface:uE,stackedList:mE,stackedListSpaced:pE,checklistRow:fE,checklistRowDragging:hE,checklistHandleBtn:gE,checklistCheckboxBtn:yE,checklistCheckboxBtnChecked:kE,checklistItemText:vE,checklistItemTextCompleted:SE,checklistRemoveBtn:wE,specialistChip:bE,specialistChipActive:_E,commentPanel:CE,activitySidebarPanel:AE,commentThread:xE,emptyComments:IE,activityLoadingThread:TE,activitySkeletonItem:RE,activitySkeletonMeta:jE,activitySkeletonBody:NE,comment:PE,commentAi:ME,commentUser:EE,commentHeader:DE,commentAuthor:LE,commentTime:BE,commentText:WE,commentInputArea:FE,commentInput:OE,sendCommentBtn:$E,taxonomyFieldsGrid:UE,markdownPreviewContainer:zE,descriptionSurface:HE};function _p({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:p.field,children:[!l&&a.jsxs("div",{className:p.labelRow,children:[a.jsx("label",{className:p.label,children:e}),i&&d&&a.jsx("span",{className:p.levelLabel,style:{color:Nn(d.color)||(o==="priority"?`var(--priority-${t})`:o==="complexity"?`var(--complexity-${t})`:"var(--text-secondary)"),backgroundColor:(Nn(d.color)?`${Nn(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:p.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:`${p.levelOption} ${S?p.levelOptionFilled:""} ${S?p[`levelOption_${o}_${m.value}`]:""} ${h?p.levelOptionSelected:""}`,onClick:()=>s(m.value),title:m.label,style:{opacity:S?1:.15,backgroundColor:S?Nn(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 Dh=new Map;function GE(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:t}function VE(e,t){const n=Object.entries(t).sort(([s],[o])=>s.localeCompare(o));return JSON.stringify([e,n])}function vm(e,t,n){const s=GE(e);if(!s)return"";const o=n??Dg(),l=VE(o,t);let i=Dh.get(l);return i||(i=new Intl.DateTimeFormat(o,t),Dh.set(l,i)),i.format(s)}const qE=Oe.lazy(()=>_s(()=>import("./EntityActivityTimeline-B2aXkxiE.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),KE=Oe.lazy(()=>_s(()=>import("./TaskContextUpload-Bz06La5A.js"),__vite__mapDeps([7,1,8,9,2,3,4,5])).then(e=>({default:e.TaskContextUpload})));function ZE({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 YE({id:e,item:t,onToggle:n,onRemove:s}){const{attributes:o,listeners:l,setNodeRef:i,transform:d,transition:m,isDragging:y}=wg({id:e}),k={transform:nf.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(Mk,{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(to,{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(nc,{size:15,strokeWidth:1.9})})]})}function Cy(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:_,newCommentText:C,contextFiles:x,currentWorkspaceId:W,apiBaseUrl:V,descriptionFocused:B,showMarkdownHelp:J,showChecklist:me=!1,checklistEnabled:ve=!0,formTaxonomies:se,onTaxonomyChange:A,onOpenSettings:K,categories:ue,types:pe,priorities:X,taxonomyDisplayLabels:M,assigneeOptions:O,taxonomies:de,workstreams:ge=[],initiatives:$=[],copiedId:_e,onTitleChange:je,onDescriptionChange:oe,onCategoryChange:ce,onTypeChange:Re,onPriorityChange:Pe,onComplexityChange:Ce,onAssigneeChange:De,onScheduledDateChange:U,onDueDateChange:I,onWorkstreamInputChange:b=()=>{},onChecklistItemsChange:R,onNewCommentTextChange:D,onDescriptionFocusedChange:te,onShowMarkdownHelpChange:N,onShowChecklistChange:G=()=>{},onSubmit:be,onAddComment:z,onAddContextFile:ie,onRemoveContextFile:ee,onUpdateContextCaption:Q,onCopyId:q,onToggleInProgress:Se,onToggleReview:we,onToggleComplete:Te,onToggleCancel:Ee,onSetStatus:nt,onArchiveTask:gt,onUnarchive:dt,onOpenTaskById:St,currentTask:Ze,commentsEndRef:Ct}=e,ut=Xi(Ze),Xe=Oe.useMemo(()=>nb(de,se),[de,se]),lt=Oe.useMemo(()=>{const he=ue.find(Gt=>Gt.value===Qc),ct={value:Qc,label:he?.label||Cm,icon:he?.icon||"HelpCircle",color:he?.color||"var(--text-secondary)"},xe=ue.find(Gt=>Gt.value===l),tt=ue.filter(Gt=>!Gt.disabled||Gt.value===xe?.value).filter(Gt=>Gt.value!==Qc).map(Gt=>({value:Gt.value,label:Gt.disabled?`${Gt.label} (Legacy)`:Gt.label,icon:Gt.icon,color:Gt.color}));return[ct,...tt]},[ue,l]),re=Oe.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]),it=he=>he&&vm(he,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})||null,Ye=it(Ze?.createdAt),jt=it(Ze?.updatedAt||Ze?.createdAt),kt=it(Ze?.completedAt),It=Oe.useMemo(()=>{const he=new Date,ct=he.getFullYear(),xe=String(he.getMonth()+1).padStart(2,"0"),Rt=String(he.getDate()).padStart(2,"0");return`${ct}-${xe}-${Rt}`},[]),Ft=!!(h&&S&&h<S),Nt=!!(h&&h<It&&(!Ze||Ze.status!=="done"&&Ze.status!=="cancelled")),Fe=v.filter(he=>he.isCompleted).length,[et,Ge]=Oe.useState(""),[Qe,yt]=Oe.useState(!1),ot=!!Ze?.isArchived,ae=!!Ze?.isDeleted,Ve=Oe.useMemo(()=>ge.map(he=>{const ct=um(he);return{value:ct||he.id,label:ct?`${ct} · ${he.title}`:he.title,icon:"Folder",color:"var(--text-secondary)"}}),[ge]),bt=Oe.useMemo(()=>Ve.some(he=>String(he.value)===String(g||"").trim()),[g,Ve]);Oe.useEffect(()=>{if(t){Qe&&yt(!1);return}if(g.trim()){if(bt&&Qe){yt(!1);return}!bt&&!Qe&&yt(!0)}},[t,bt,Qe,g]);const Ot=ot||ae,Dt=Oe.useRef(null),Ue=gg(Dp(Sg,{activationConstraint:{distance:6}}));Oe.useLayoutEffect(()=>{const he=Dt.current;if(!he)return;const ct=()=>{he.scrollTop=0;const Rt=he.parentElement;Rt&&(typeof Rt.scrollTo=="function"?Rt.scrollTo({top:0,left:0,behavior:"auto"}):Rt.scrollTop=0)};ct();const xe=window.requestAnimationFrame(ct);return()=>window.cancelAnimationFrame(xe)},[t,Ze?.id]);const Et=()=>{const he=et.trim();if(!he)return;const ct=new Date().toISOString();R([...v,{id:`checklist-draft-${ct}-${v.length}`,taskId:t||"",title:he,isCompleted:!1,order:v.length,createdAt:ct,updatedAt:ct}]),Ge("")},vt=Oe.useCallback(he=>{const{active:ct,over:xe}=he;if(!xe||ct.id===xe.id)return;const Rt=v.findIndex(Ea=>Ea.id===ct.id),tt=v.findIndex(Ea=>Ea.id===xe.id);if(Rt<0||tt<0)return;const Gt=new Date().toISOString(),ga=sv(v,Rt,tt).map((Ea,ma)=>({...Ea,order:ma,updatedAt:Gt}));R(ga)},[v,R]),E=he=>{const ct=String(he||"").trim(),xe=he.trim().replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ");return!xe||xe==="ai"||ct.toLowerCase().startsWith("ai-profile-")?"AI Agent":`AI Agent - ${xe.split(" ").map(tt=>tt.charAt(0).toUpperCase()+tt.slice(1)).join(" ")}`},c=lS(O,k),Y=cm(k),ye=ud(k,c),Ie=Oe.useMemo(()=>new Map(c.map(he=>[String(he.value),he])),[c]),qe=Ie.get(String(k||"unassigned")),Ke=Ze?.assigneeActor?.color||qe?.color,Ne=Oe.useMemo(()=>{const he=[Ze?.assigneeActor,Ze?.createdByActor].filter(Boolean);return new Map(he.map(ct=>[String(ct.id),ct]))},[Ze?.assigneeActor,Ze?.createdByActor]),Vt=Oe.useMemo(()=>new Map(ge.map(he=>[he.id,um(he)||he.id])),[ge]),qt=Oe.useMemo(()=>new Map($.map(he=>[he.id,ry(he)||he.id])),[$]),Pt=Oe.useMemo(()=>Cf({activity:Ze?.activity,comments:_}),[_,Ze?.activity]),Tt=(he,ct)=>{const xe=String(ct||"").trim();if(xe){if(he==="assignee")return ud(xe,c);if(he==="workstreamId")return Vt.get(xe);if(he==="initiativeId")return qt.get(xe)}},Lt=Oe.useCallback((he,ct,xe)=>{if(xe&&xe.trim())return xe.trim();const Rt=String(he||"").trim();if(!Rt)return ct==="ai"?"AI Agent":He("taskForm.you");const tt=Ne.get(Rt);if(tt?.label)return tt.label;const Gt=Ie.get(Rt)||Ie.get(Rt.toLowerCase());return Gt?.label?Gt.label:ct==="ai"?E(Rt):ud(Rt,c)||Rt},[Ne,Ie,E,c]),Ht=Oe.useCallback(({actorId:he,actorType:ct,actorProfile:xe,fallbackKind:Rt})=>{const tt=String(he||"").trim(),Gt=tt.toLowerCase(),ga=Ne.get(tt),Ea=Ie.get(tt)||Ie.get(Gt),ma=xe||ga||Ea||null,ia=ct==="system"?"system":ct==="ai"||ma?.kind==="ai"?"agent":ct==="human"||ma?.kind==="human"?"member":Ea?.kind==="agent"?"agent":Ea?.kind==="member"?"member":Rt||(Gt===""||Gt==="user"||Gt==="human"?"member":"agent"),Mt=ia==="system"?"System":Lt(tt,ia==="agent"?"ai":"human",ma?.label||null),aa=ma?.color,Za=String(ma?.icon||(ia==="agent"?"Bot":ia==="member"?"User":"ClipboardList")),$t=tc[Za]||(ia==="agent"?am:ia==="member"?oi:dg);return{kind:ia,label:Mt,color:aa,ActorIcon:$t}},[Ne,Ie,Lt]),sa=Oe.useMemo(()=>{const he=Pt[Pt.length-1];if(!he)return null;if(he.type==="comment"){const xe=he.comment;return Lt(xe.author,xe.actor?.kind==="ai"?"ai":xe.actor?.kind==="human"?"human":null,xe.actor?.label||null)}const ct=he.event;return Lt(ct.actor,ct.actorType,ct.actorProfile?.label||null)},[Lt,Pt]),Kt=Oe.useMemo(()=>{if(!Ze?.completedAt)return null;for(const ct of Pt){if(ct.type!=="event")continue;const xe=ct.event,Rt=xe.details?.changes?.status?.to;if(Rt==="done"||Rt==="cancelled")return Lt(xe.actor,xe.actorType,xe.actorProfile?.label||null)}return sa},[Ze?.completedAt,sa,Lt,Pt]),Ka=Ze?.createdByActor?.label||Lt(Ze?.createdBy||null,Ze?.createdByActor?.kind==="ai"?"ai":Ze?.createdByActor?.kind==="human"?"human":null,Ze?.createdByActor?.label||null),Oa=sa,en=Pt.length;Oe.useLayoutEffect(()=>{if(!t)return;const he=Ct.current;if(!he)return;const ct=he.parentElement,xe=()=>{if(typeof he.scrollIntoView=="function"){he.scrollIntoView({block:"end"});return}ct&&(ct.scrollTop=ct.scrollHeight)};xe();const Rt=window.requestAnimationFrame(xe);return()=>window.cancelAnimationFrame(Rt)},[en,Ct,Ze?.id,t]);const ba=t?a.jsxs("aside",{className:at.activitySidebar,"aria-label":He("taskForm.commentsSectionTitle"),children:[a.jsxs("div",{className:at.activitySidebarHeader,children:[a.jsx("h2",{className:at.activitySidebarTitle,children:He("taskForm.commentsSectionTitle")}),a.jsx("span",{className:at.activitySidebarCount,children:en})]}),a.jsxs("div",{className:`${at.commentPanel} ${at.activitySidebarPanel}`.trim(),children:[a.jsx(Oe.Suspense,{fallback:a.jsx(ZE,{count:en}),children:a.jsx(qE,{activity:Ze?.activity,comments:_,formatFieldValue:Tt,resolveActorPresentation:Ht,onOpenTaskById:St,emptyMessage:He("taskForm.noComments"),listClassName:at.commentThread,emptyClassName:at.emptyComments,endRef:Ct})}),a.jsxs("div",{className:at.commentInputArea,children:[a.jsx("textarea",{className:at.commentInput,placeholder:He("taskForm.commentPlaceholder"),value:C,onChange:he=>D(he.target.value),onKeyDown:he=>{he.key==="Enter"&&!he.shiftKey&&(he.preventDefault(),z())},rows:4}),a.jsx("button",{type:"button",className:at.sendCommentBtn,onClick:z,disabled:!C.trim(),"aria-label":"Send comment",title:"Send comment",children:a.jsx(Pk,{size:16})})]})]})]}):null;return a.jsxs("form",{ref:Dt,onSubmit:be,className:`${p.form} ${p.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:p.field,children:[a.jsxs("div",{className:p.labelRow,children:[a.jsx("label",{className:p.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:Ke?{color:Ke}:void 0,children:Y==="agent"?a.jsx(am,{size:20}):Y==="member"?a.jsx(oi,{size:20}):a.jsx(Ji,{size:20})})]}),a.jsx("input",{type:"text",value:s,onChange:he=>je(he.target.value),placeholder:"What needs to be done?",className:p.input,required:!0,maxLength:255,autoFocus:!0})]}),a.jsxs("div",{className:p.field,children:[a.jsxs("div",{className:p.labelRow,children:[a.jsx("label",{className:p.label,children:"Description"}),a.jsx("button",{type:"button",className:p.helpLink,onClick:()=>N(!J),title:"Markdown Help",tabIndex:-1,children:a.jsx(Ji,{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:()=>N(!1),className:at.helpClose,children:a.jsx(nc,{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:`${p.textarea} ${at.descriptionSurface}`,placeholder:"What needs to be done? (Markdown supported)",value:o,onChange:he=>oe(he.target.value),onFocus:()=>te(!0),onBlur:()=>te(!1),rows:9,autoFocus:B}):a.jsx("div",{className:`${p.textarea} ${at.descriptionSurface} ${at.markdownPreview} ${at.markdownPreviewContainer}`,onClick:()=>te(!0),children:a.jsx(cy,{onTaskIdClick:St,children:o})})]}),a.jsxs("div",{className:at.compactMetaSection,children:[a.jsxs("div",{className:at.compactMetaGrid,children:[a.jsxs("div",{className:`${p.field} ${at.compactMetaField}`,children:[a.jsx("label",{id:"category-label",className:p.label,children:M?.category||"Category"}),a.jsx(id,{value:l,options:lt,onChange:he=>ce(String(he)),required:!0,ariaLabelledBy:"category-label"})]}),a.jsxs("div",{className:`${p.field} ${at.compactMetaField}`,children:[a.jsx("label",{id:"type-label",className:p.label,children:M?.type||"Type"}),a.jsx(id,{value:i,options:re,onChange:he=>Re(String(he)),ariaLabelledBy:"type-label"})]}),a.jsxs("div",{className:`${p.field} ${at.compactMetaField}`,children:[a.jsx("label",{htmlFor:"task-form-scheduled-date",className:p.label,children:He("taskForm.scheduledLabel")}),a.jsx("input",{id:"task-form-scheduled-date",type:"date",value:S,onChange:he=>U(he.target.value),className:`${p.input} ${p.taskFormDateInput}`})]}),a.jsxs("div",{className:`${p.field} ${at.compactMetaField}`,children:[a.jsx("label",{id:"assignee-label",className:p.label,children:"Assigned To"}),a.jsx(id,{value:k||"unassigned",options:c,onChange:he=>De(String(he)),ariaLabelledBy:"assignee-label"})]}),a.jsx("div",{className:at.compactMetaField,children:a.jsx(_p,{label:M?.priority||"Priority",options:X,value:d,onChange:Pe,type:"priority",showSelectedLabel:!1})}),a.jsxs("div",{className:`${p.field} ${at.compactMetaField}`,children:[a.jsx("label",{htmlFor:"task-form-due-date",className:p.label,children:He("taskForm.dueLabel")}),a.jsx("input",{id:"task-form-due-date",type:"date",value:h,onChange:he=>I(he.target.value),className:`${p.input} ${p.taskFormDateInput}`}),Ft&&a.jsx("span",{className:`${at.taskFormDateWarning} ${at.compactMetaFieldHint}`,children:He("taskForm.dueBeforeScheduled")}),Nt&&a.jsx("span",{className:`${at.taskFormDateError} ${at.compactMetaFieldHint}`,children:He("taskForm.overdue")})]}),y&&a.jsx("div",{className:at.compactMetaField,children:a.jsx(_p,{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:Ce,type:"general"})})]}),!t&&a.jsxs("div",{className:at.createWorkstreamRow,children:[a.jsx("label",{className:p.label,children:"Attach to workstream"}),a.jsxs("div",{className:p.pathInputGroup,children:[Qe?a.jsx("input",{type:"text",className:p.input,value:g,onChange:he=>b(he.target.value),placeholder:"Type a workstream name or reference","aria-label":"Attach to workstream"}):a.jsx(id,{value:g,options:Ve,onChange:he=>b(String(he)),placeholder:"Select workstream...",ariaLabel:"Attach to workstream",className:at.createWorkstreamDropdown}),a.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:()=>{if(Qe){yt(!1),bt||b("");return}yt(!0)},"aria-label":Qe?"Use workstream dropdown":"Enter workstream by name",title:Qe?"Use workstream dropdown":"Enter workstream by name",children:a.jsx(ao,{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 ct=se[he.id],xe=Array.isArray(ct)?ct.map(tt=>String(tt)):ct!=null&&ct!==""?[String(ct)]:[],Rt=he.options.filter(tt=>tt.status!=="retired"||xe.includes(String(tt.value)));return a.jsxs("div",{className:p.field,children:[a.jsx("label",{className:p.label,children:he.label}),he.description&&a.jsx("div",{className:`${at.settingsHint} tf-text-helper`,children:he.description}),he.widgetType==="level"?a.jsx(_p,{label:he.label,options:Rt.map(tt=>({...tt,label:tt.status==="retired"?`${tt.label} (Retired)`:tt.label})),value:se[he.id]||"",onChange:tt=>A(he.id,tt),type:"general",hideLabel:!0}):he.multiSelect?a.jsx("div",{className:`${p.dropdownList} ${at.softSectionSurface}`,children:Rt.map(tt=>{const Gt=String(tt.value),ga=xe.includes(Gt);return a.jsxs("button",{type:"button",className:`${at.specialistChip} ${ga?at.specialistChipActive:""}`,onClick:()=>{const Ea=ga?xe.filter(ma=>ma!==Gt):[...xe,Gt];A(he.id,Ea)},title:ga?"Click to remove":"Click to add",children:[ga&&a.jsx(to,{size:12}),tt.status==="retired"?`${tt.label} (Retired)`:tt.label]},Gt)})}):a.jsxs("div",{className:p.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(Ea=>String(Ea.value)===String(se[he.id])),Gt=tt?.icon&&bs[tt.icon]?bs[tt.icon]:Ji,ga=tt?.color||"var(--text-secondary)";return a.jsx("div",{className:p.fieldIcon,style:{color:Nn(ga)},children:a.jsx(Gt,{size:16})})})(),a.jsxs("select",{value:se[he.id]||"",onChange:tt=>A(he.id,tt.target.value),className:`${p.select} ${p.field_dynamic}`,required:he.isRequired,children:[a.jsxs("option",{value:"",children:["Select ",he.label,"..."]}),Rt.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:p.specialistSection,children:[a.jsxs("div",{className:p.toggleHeading,onClick:()=>G(!me),title:me?"Hide checklist":"Show checklist",children:[a.jsxs("label",{className:p.label,children:["Checklist"," ",v.length>0&&`(${Fe}/${v.length})`]}),me?a.jsx(nl,{size:14}):a.jsx(Xc,{size:14})]}),me&&a.jsxs("div",{className:`${p.dropdownList} ${at.stackedList} ${at.stackedListSpaced}`,children:[a.jsxs("div",{className:p.pathInputGroup,children:[a.jsx("input",{type:"text",className:p.input,placeholder:"Add checklist item",value:et,onChange:he=>Ge(he.target.value),onKeyDown:he=>{he.key==="Enter"&&(he.preventDefault(),Et())}}),a.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:Et,disabled:!et.trim(),children:"Add"})]}),v.length>0?a.jsx(yg,{sensors:Ue,collisionDetection:ov,onDragEnd:vt,children:a.jsx(kg,{items:v.map(he=>he.id),strategy:vg,children:v.map((he,ct)=>a.jsx(YE,{id:he.id||`checklist-${ct}`,item:he,onToggle:()=>{const xe=new Date().toISOString();R(v.map((Rt,tt)=>tt===ct?{...Rt,isCompleted:!Rt.isCompleted,updatedAt:xe}:Rt))},onRemove:()=>R(v.filter((xe,Rt)=>Rt!==ct).map((xe,Rt)=>({...xe,order:Rt})))},he.id||`checklist-${ct}`))})}):a.jsx("div",{className:`${at.settingsHint} tf-text-helper`,children:"No checklist items yet."})]})]})]}),a.jsxs("div",{children:[a.jsx(Oe.Suspense,{fallback:null,children:a.jsx(KE,{taskId:t,taskReferenceLabel:ut,workspaceId:W,apiBaseUrl:V,contextFiles:x,onAddContextFile:ie,onRemoveContextFile:ee,onUpdateContextCaption:Q})}),a.jsx("div",{className:`${at.taskFormLifecycle} ${at.taskFormMetaDivider}`,children:a.jsx("div",{className:at.taskFormMetaGrid,children:Ze&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:at.taskFormDateRow,children:[a.jsx("span",{className:at.taskFormDateLabel,children:He("taskForm.createdLabel")}),a.jsxs("span",{className:at.taskFormMetaStack,children:[a.jsx("span",{className:at.taskFormDateValue,children:Ye||He("taskForm.emptyValue")}),a.jsx("span",{className:at.taskFormMetaActor,children:Ka?`by ${Ka}`:He("taskForm.emptyValue")})]})]}),a.jsxs("div",{className:at.taskFormDateRow,children:[a.jsx("span",{className:at.taskFormDateLabel,children:He("taskForm.updatedLabel")}),a.jsxs("span",{className:at.taskFormMetaStack,children:[a.jsx("span",{className:at.taskFormDateValue,children:jt||He("taskForm.emptyValue")}),a.jsx("span",{className:at.taskFormMetaActor,children:Oa?`by ${Oa}`:He("taskForm.emptyValue")})]})]}),a.jsxs("div",{className:at.taskFormDateRow,children:[a.jsx("span",{className:at.taskFormDateLabel,children:He("taskForm.completedLabel")}),a.jsxs("span",{className:at.taskFormMetaStack,children:[a.jsx("span",{className:at.taskFormDateValue,children:kt||He("taskForm.emptyValue")}),a.jsx("span",{className:at.taskFormMetaActor,children:Kt?`by ${Kt}`:He("taskForm.emptyValue")})]})]})]})})})]})]}),ba,a.jsxs("div",{className:at.keyboardHint,children:["Press ",a.jsx("kbd",{children:navigator.platform.includes("Mac")?"⌥":"Alt"})," to toggle"]})]})]})}function Zi({ariaLabel:e,children:t,disabled:n=!1,onClick:s,title:o}){return a.jsx("button",{type:"button",className:`${p.taskIdBadge} ${p.taskHierarchyActionBtn}`,onClick:s,disabled:n,title:o,"aria-label":e,children:t})}function Ay({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:_,handleToggleReview:C,handleToggleComplete:x,handleToggleCancel:W,handleSetStatus:V,handleArchiveTask:B,handleUnarchiveTask:J,handleRestoreDeletedTask:me,handlePermanentlyDeleteDeletedTask:ve}){const[se,A]=Oe.useState(!1),K=y??(e&&m.find(oe=>oe.id===e)||null),ue=!!K?.isArchived,pe=!!K?.isDeleted,X=Ng(K),M=X.label||(X.isProvisional?"Pending":""),O=X.isProvisional,de=!!X.label,ge=k?um(k)||k.id:"",$=S?ns(S)||S.id:"";Oe.useEffect(()=>{k&&A(!1)},[k?.id]);const _e=Oe.useCallback(()=>{h.trim()&&v?.()},[v,h]),je=Oe.useCallback(()=>{A(!1),g?.(""),v?.(null)},[v,g]);return a.jsx("div",{className:p.stickyActionHeader,children:e?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:p.taskHierarchyHeader,children:[a.jsxs("div",{className:p.taskHierarchyBadgeRow,children:[k?a.jsx(a.Fragment,{children:a.jsx(Zi,{onClick:je,disabled:t||ue||pe,title:"Remove from workstream",ariaLabel:"Remove from workstream",children:a.jsx(Zu,{size:13})})}):null,S?a.jsxs("span",{className:p.taskHierarchySegment,children:[a.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),a.jsx(Qu,{copied:d===$,onClick:oe=>i(oe,$),disabled:t,title:"Copy initiative reference",label:$})]}):null,k?a.jsxs("span",{className:p.taskHierarchySegment,children:[a.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),a.jsx(Qu,{copied:d===ge,onClick:oe=>i(oe,ge),disabled:t,title:"Copy workstream reference",label:ge})]}):a.jsx(a.Fragment,{children:a.jsx(Zi,{onClick:()=>{g?.(""),A(oe=>!oe)},disabled:t||ue||pe,title:"Attach to workstream",ariaLabel:"Attach to workstream",children:a.jsx(nm,{size:13})})}),M?a.jsxs("span",{className:p.taskHierarchySegment,children:[a.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),a.jsx(Qu,{copied:de&&d===X.label,onClick:oe=>i(oe,X.label),disabled:t||!de,title:de?He("actionHeader.copyTaskIdTitle"):"Task reference pending sync",label:M})]}):null,O?a.jsx("span",{className:p.taskHierarchyMeta,title:"Temporary local reference until cloud sync assigns the final task number.",children:"Pending sync"}):null]}),se&&!k?a.jsxs("div",{className:p.taskHierarchyEditor,children:[a.jsx("input",{type:"text",className:`${p.input} ${p.taskHierarchyInput}`,value:h,onChange:oe=>g?.(oe.target.value),placeholder:"WS-123","aria-label":"Attach workstream reference",onKeyDown:oe=>{oe.key==="Enter"&&(oe.preventDefault(),_e()),oe.key==="Escape"&&(oe.preventDefault(),g?.(""),A(!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(to,{size:14})}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:()=>{g?.(""),A(!1)},disabled:t,title:"Cancel workstream attach","aria-label":"Cancel workstream attach",children:a.jsx(nc,{size:14})})]}):null]}),a.jsx("div",{className:p.taskSaveStatusCenter,children:a.jsx("div",{className:`${p.taskSaveStatus} ${n==="error"?p.taskSaveStatusError:""}`,"aria-live":"polite",children:n==="saving"?a.jsxs(a.Fragment,{children:[a.jsx(mr,{size:14,className:p.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:p.editActionsGroup,children:pe&&K?.deletedRecordId?a.jsxs(a.Fragment,{children:[me&&a.jsx("button",{type:"button",className:p.actionBtn,onClick:()=>me(K.deletedRecordId||""),disabled:t,title:"Restore deleted task",children:a.jsx(gd,{size:16})}),ve&&a.jsx("button",{type:"button",className:`${p.actionBtn} ${p.deleteBtn}`,onClick:()=>ve(K.deletedRecordId||""),disabled:t,title:"Permanently delete deleted task",children:a.jsx(_m,{size:16})})]}):a.jsx(gy,{task:K,disabled:t,statusDisabled:t||ue,archiveActionMode:ue?"unarchive":"auto",onSetStatus:(oe,ce)=>{if(V){V(oe,ce);return}if(ce==="in-progress"){_(oe);return}if(ce==="review"){C(oe);return}if(ce==="done"){x(oe);return}ce==="cancelled"&&W(oe)},onArchiveTask:B,onUnarchiveTask:oe=>J?.(oe.id)})})]}):a.jsxs(a.Fragment,{children:[a.jsxs("button",{type:"button",onClick:l,disabled:t,className:p.secondaryHeaderBtn,title:He("actionHeader.clearFormTitle"),children:[a.jsx(gd,{size:16}),He("actionHeader.clear")]}),a.jsxs("button",{type:"button",onClick:oe=>o(oe),disabled:t||!s.trim(),className:p.primaryUpdateBtn,title:He("actionHeader.addTaskTitle"),children:[t?a.jsx(mr,{size:16,className:p.spinner}):a.jsx(ao,{size:16}),He("actionHeader.addTask")]})]})})}const JE="_topNoticeLayer_1m6a1_1",QE="_topNotice_1m6a1_1",XE="_topNoticeMessage_1m6a1_32",eD="_topNoticeSuccess_1m6a1_38",tD="_topNoticeError_1m6a1_44",aD="_topNoticeInfo_1m6a1_50",nD="_topNoticeDismiss_1m6a1_56",Vi={topNoticeLayer:JE,topNotice:QE,topNoticeMessage:XE,topNoticeSuccess:eD,topNoticeError:tD,topNoticeInfo:aD,topNoticeDismiss:nD};function xy({notice:e,onDismiss:t}){if(!e)return null;const n=e.tone==="error"?Vi.topNoticeError:e.tone==="success"?Vi.topNoticeSuccess:Vi.topNoticeInfo,s=e.tone==="error"?"alert":"status";return a.jsx("div",{className:Vi.topNoticeLayer,children:a.jsxs("div",{className:`${Vi.topNotice} ${n}`,role:s,"aria-live":e.tone==="error"?"assertive":"polite",children:[e.tone==="error"?a.jsx(yd,{size:14}):e.tone==="success"?a.jsx(to,{size:14}):a.jsx(Ek,{size:14}),a.jsx("span",{className:Vi.topNoticeMessage,children:e.message}),t&&a.jsx("button",{type:"button",className:Vi.topNoticeDismiss,onClick:t,"aria-label":"Dismiss notice",title:"Dismiss notice",children:a.jsx(nc,{size:14})})]})})}const rD=Oe.lazy(()=>_s(()=>import("./TaskSettings-4PbrcOqD.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings})));function sD(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:_,setSettingsSection:C,projectRoot:x,projectName:W,mcpScriptPath:V,serverHostRoot:B,showFolderBrowser:J,setShowFolderBrowser:me,folders:ve,files:se,currentBrowsePath:A,fetchFolders:K,browserTarget:ue,setBrowserTarget:pe,handleSelectPath:X,handleAddPath:M,handleRemovePath:O,tasks:de,loadingTasks:ge,archivedTasks:$,deletedTasks:_e,activeCategories:je,activeTypes:oe,priorities:ce,taxonomyDisplayLabels:Re,approaches:Pe,taxonomies:Ce,searchQuery:De,setSearchQuery:U,filterCategories:I,setFilterCategories:b,filterTypes:R,setFilterTypes:D,filterPriorities:te,setFilterPriorities:N,filterStatus:G,setFilterStatus:be,filterAssignees:z,setFilterAssignees:ie,assigneeOptions:ee,filterTaxonomies:Q,setFilterTaxonomies:q,sortBy:Se,setSortBy:we,sortOrder:Te,toggleSortOrder:Ee,showArchive:nt,setShowArchive:gt,taskScope:dt,setTaskScope:St,clearFilters:Ze,filteredTasks:Ct,filteredArchive:ut,groupedTasks:Xe,collapsedCategories:lt,setCollapsedCategories:re,handleEdit:it,handleDelete:Ye,handleCopyId:jt,handleToggleComplete:kt,handleToggleCancel:It,handleToggleInProgress:Ft,handleToggleReview:Nt,handleArchiveTask:Fe,handleBulkArchive:et,handleUnarchive:Ge,handleRestoreDeletedTask:Qe,handlePermanentlyDeleteDeletedTask:yt,handleEmptyDeletedTasks:ot,fetchArchive:ae,editingTaskId:Ve,loading:bt,error:Ot,title:Dt,setTitle:Ue,description:Et,setDescription:vt,checklistItems:E,setChecklistItems:c,category:Y,setCategory:ye,type:Ie,setType:qe,priority:Ke,setPriority:Ne,complexity:Vt,setComplexity:qt,manualComplexityEnabled:Pt,checklistDropdownEnabled:Tt,showTaskCardStatusLabel:Lt,approach:Ht,setApproach:sa,assignee:Kt,setAssignee:Ka,scheduledDate:Oa,setScheduledDate:en,dueDate:ba,setDueDate:he,workstreamInput:ct,setWorkstreamInput:xe,formTaxonomies:Rt,setFormTaxonomies:tt,comments:Gt,newCommentText:ga,setNewCommentText:Ea,attachments:ma,setAttachments:ia,setAttachmentsDirty:Mt,descriptionFocused:aa,setDescriptionFocused:Za,showMarkdownHelp:$t,setShowMarkdownHelp:Qn,showChecklist:_a,setShowChecklist:Qt,showComments:Or,setShowComments:ja,handleSubmit:tn,resetForm:Aa,handleAddComment:Jt,handleSetWorkstreamForCurrentTask:Na,handleOpenTaskById:ca,autoSaveState:vn,unsavedModalOpen:dn,setUnsavedModalOpen:Xn,pendingNavigation:pa,handleNavigation:Cr,handleClose:$r,scheduleWarningPrompt:Sn,confirmScheduleWarning:xa,cancelScheduleWarning:Ar,uiNotice:wn,clearNotice:Pn,taskReturnTrail:an,clearReturnToParentTask:Ia,returnToPreviousTask:Ur,copiedId:_t,recentlyChangedTaskIds:bn,tasksScrollRef:un,setTasksScrollPos:_n,currentTask:$a,currentTaskWorkstream:Mn,currentTaskInitiative:va,exportEnvironment:Ua,setExportEnvironment:Cn,exportWorkflowsPath:la,setExportWorkflowsPath:En,exportResult:Xt,exportingResource:za,availableWorkflows:Ca,onExportWorkflows:er,availableEnvironments:tr,handleUpdateCategory:Da,handleRemoveCategory:na,handleSaveCategory:fa,handleUpdateCategoryIcon:mn,handleUpdateCategoryColor:nn,handleSaveType:pr,handleRemoveType:fr,handleUpdateTaxonomies:ea,handleUpdatePriorities:ss,pathValidation:Ha,validatePaths:ar,getCategoryPaths:os,commentsEndRef:pn,currentWorkspaceId:zn,settingsModel:zr,onHeaderMouseDown:An,isDragging:Ga}=e,xr=r.useRef(null),[Pa,Cs]=Oe.useState(0);r.useLayoutEffect(()=>{if(t==="tasks"&&un.current&&Pa>0){const Je=setTimeout(()=>{un.current&&(un.current.scrollTop=Pa)},50);return()=>clearTimeout(Je)}},[t,Pa,de]);const rn=Je=>{we(Je)},Ir=()=>{Cr(()=>{if(t==="add"||t==="settings"){if(t==="add"&&Ur())return;t==="add"&&an.length>0&&Ia(),t==="add"&&Aa(),n("tasks")}else e.onClose?e.onClose():$r()})},hr=()=>{Xn(!1),pa?(t==="add"&&Aa(),pa()):n("tasks")},Hr=async()=>{await tn({preventDefault:()=>{}}),Xn(!1),pa&&pa()},fn=(Je,Ut)=>{tt(La=>({...La,[Je]:Ut})),Je==="approach"&&typeof Ut=="string"&&sa(Ut)},gr=r.useCallback(Je=>{Aa(),ye(Je),Cr(()=>{n("add")})},[Aa,ye,n,Cr]),xn=Oe.useMemo(()=>_e.map(Je=>({...Je.taskSnapshot,isDeleted:!0,deletedRecordId:Je.id})),[_e]),Dn=Oe.useMemo(()=>new globalThis.Map(_e.map(Je=>[Je.taskId,Je])),[_e]),nr=Oe.useMemo(()=>{const Je=Rm(De),Ut={categories:je,types:oe,priorities:ce,assigneeOptions:ee,taxonomies:Ce},La=je.every(Bt=>I.includes(Bt.value)),da=oe.every(Bt=>R.includes(Bt.value)),Va=Array.from(new Set(te.map(Bt=>Number(Bt)).filter(Bt=>Number.isFinite(Bt)))),As=ce.map(Bt=>Number(Bt.value)).filter(Bt=>Number.isFinite(Bt)).every(Bt=>Va.includes(Bt)),Vr=["task","in-progress","review","done","cancelled","on-hold"].every(Bt=>G.includes(Bt)),Gn=ee.length>0&&ee.every(Bt=>z.includes(Bt.value)),In=Cd(Ce,xn);return xn.filter(Bt=>{const Ln=pm(Bt,Je,Ut),Ba=La||I.includes(Bt.category),rr=As||Va.includes(sm(Bt.priority)),Tr=da||R.includes(Bt.type||Fr),sr=Vr||G.includes(Bt.status),or=Gn||z.includes(Bt.assignee||"unassigned"),xs=Object.entries(Q).every(([qr,hn])=>{const Bn=In.find(Be=>Be.id===qr);if(!Bn||wf(Bn,xn).every(Be=>hn.includes(Be.value)))return!0;const F=Bt.taxonomies?.[qr];return F?Array.isArray(F)?F.some(Be=>hn.includes(Be)):hn.includes(F):hn.includes("")});return Ln&&Ba&&rr&&Tr&&sr&&or&&xs}).sort((Bt,Ln)=>fm(Bt,Ln,Se,Te,Ce))},[je,oe,$,ee,xn,z,I,te,G,Q,R,ce,De,Se,Te,Ce,de]),is=Oe.useMemo(()=>{const Je={};return nr.forEach(Ut=>{const da=je.find(Va=>Va.value===Ut.category||Va.label===Ut.category)?.label||Ut.category||"General";Je[da]||(Je[da]=[]),Je[da].push(Ut)}),Je},[je,nr]),Gr=dt==="archived"?ut.length:dt==="deleted"?nr.length:Ct.length;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{ref:xr,className:`${xt.modal} ${p.coreModal} ${t==="settings"?xt.settingsViewModal:""}`,"data-theme":l,children:[a.jsxs("div",{className:"tf-modal-header",onMouseDown:An,style:{cursor:An?Ga?"grabbing":"grab":"default"},children:[a.jsxs("div",{className:`tf-modal-title ${ta.headerTitleWidget}`,children:["Taskforce",W&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:p.projectSlash,children:"/"}),a.jsx("span",{className:p.projectName,style:{fontSize:"14px",padding:"1px 6px"},children:W})]}),a.jsx("span",{className:p.taskCountBadge,title:`${dt.charAt(0).toUpperCase()+dt.slice(1)} tasks`,children:Gr})]}),a.jsxs("div",{className:xt.headerActions,children:[t==="tasks"&&a.jsx(a.Fragment,{children:a.jsx("button",{className:"tf-control-icon",onClick:()=>{Cr(()=>{Aa(),n("add")})},title:"Add New Task",children:a.jsx(ao,{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(tf,{size:18})}),a.jsx("button",{className:"tf-control-icon",onClick:Ir,title:t==="tasks"?"Close":"Back to Tasks",children:t==="tasks"?a.jsx(nc,{size:20}):a.jsx(Dk,{size:20})})]})]}),a.jsx(xy,{notice:wn,onDismiss:Pn}),t==="add"&&a.jsx(Ay,{editingTaskId:Ve,loading:bt,autoSaveState:vn,title:Dt,currentTask:$a,currentTaskWorkstream:Mn,currentTaskInitiative:va,workstreamInput:ct,onWorkstreamInputChange:xe,onSetWorkstreamForCurrentTask:Na,handleSubmit:tn,resetForm:Aa,handleCopyId:jt,copiedId:_t,tasks:de,handleToggleInProgress:Ft,handleToggleReview:Nt,handleToggleComplete:kt,handleToggleCancel:It,handleArchiveTask:Fe,handleUnarchiveTask:Je=>{if($a?.isDeleted){const Ut=Dn.get(Je);Ut&&Qe(Ut.id);return}Ge(Je)},handleRestoreDeletedTask:Je=>{Qe(Je)},handlePermanentlyDeleteDeletedTask:Je=>{yt(Je)}}),t==="tasks"&&a.jsx(_y,{ref:un,tasks:de,archivedTasks:$,categories:je,types:oe,priorities:ce,taxonomyDisplayLabels:Re,taxonomies:Ce,searchQuery:De,filterCategories:I,filterTypes:R,filterPriorities:te,filterStatus:G,filterAssignees:z,assigneeOptions:ee,filterTaxonomies:Q,sortBy:Se,sortOrder:Te,showArchive:nt,taskScope:dt,collapsedCategories:lt,loadingTasks:ge,filteredTasks:Ct,filteredArchive:ut,groupedTasks:Xe,filteredDeletedTasks:nr,groupedDeletedTasks:is,copiedId:_t,recentlyChangedTaskIds:bn,showTaskCardStatusLabel:Lt,workstreams:e.workstreams,initiatives:e.initiatives,onSearchChange:U,onFilterCategoriesChange:Je=>b(Je),onFilterTypesChange:Je=>D(Je),onFilterPrioritiesChange:N,onFilterStatusChange:be,onFilterAssigneesChange:Je=>ie(Je),onTaxonomyFilterChange:(Je,Ut)=>q(La=>({...La,[Je]:Ut})),onSortByChange:rn,onSortOrderChange:Ee,onShowArchiveChange:gt,onTaskScopeChange:St,onClearFilters:Ze,onToggleCategory:Je=>re(Ut=>({...Ut,[Je]:!Ut[Je]})),onEditTask:it,onOpenTaskById:ca,onCopyId:jt,onToggleInProgress:Ft,onToggleReview:Nt,onToggleComplete:kt,onToggleCancel:It,onArchiveTask:Fe,onBulkArchive:et,onUnarchive:Je=>{const Ut=Dn.get(Je);if(Ut){Qe(Ut.id);return}Ge(Je)},onDelete:Je=>{const Ut=Dn.get(Je);if(Ut){yt(Ut.id);return}Ye(Je)},onDeleteAllDeleted:()=>{ot()},onFetchArchive:ae,onAddTaskToCategory:gr,supplementalTasks:xn}),t==="add"&&a.jsx(Cy,{editingTaskId:Ve,error:Ot,title:Dt,description:Et,checklistItems:E,category:Y,type:Ie,priority:Ke,complexity:Vt,manualComplexityEnabled:Pt,approach:Ht,assignee:Kt,scheduledDate:Oa,dueDate:ba,workstreamInput:ct,formTaxonomies:Rt,onTaxonomyChange:fn,taxonomies:Ce,comments:Gt,newCommentText:ga,contextFiles:ma,currentWorkspaceId:zn,apiBaseUrl:"",descriptionFocused:aa,showMarkdownHelp:$t,showChecklist:_a,checklistEnabled:Tt,showComments:Or,categories:je,types:oe,priorities:ce,taxonomyDisplayLabels:Re,assigneeOptions:ee,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:_t,onTitleChange:Ue,onDescriptionChange:vt,onChecklistItemsChange:c,onCategoryChange:ye,onTypeChange:qe,onPriorityChange:Ne,onComplexityChange:qt,onApproachChange:Je=>{sa(Je),tt(Ut=>({...Ut,approach:Je}))},onAssigneeChange:Ka,onScheduledDateChange:en,onDueDateChange:he,onWorkstreamInputChange:xe,onNewCommentTextChange:Ea,onDescriptionFocusedChange:Za,onShowMarkdownHelpChange:Qn,onShowChecklistChange:Qt,onShowCommentsChange:ja,onOpenSettings:Je=>{Cr(()=>{C(Je),n("settings")})},onSubmit:tn,commentsEndRef:pn,onAddComment:()=>Jt(ga),onOpenTaskById:ca,onAddContextFile:Je=>{Mt(!0),ia(Ut=>[...Ut,Je])},onRemoveContextFile:async Je=>{Mt(!0),ia(Ut=>Ut.filter((La,da)=>da!==Je))},onUpdateContextCaption:(Je,Ut)=>{Mt(!0),ia(La=>La.map((da,Va)=>Va!==Je?da:typeof da=="string"?{path:da,caption:Ut,timestamp:new Date().toISOString()}:{...da,caption:Ut}))},onCopyId:jt,onToggleInProgress:Ft,onToggleReview:Nt,onToggleComplete:kt,onToggleCancel:It,onArchiveTask:Fe,onUnarchive:Je=>{if($a?.isDeleted){const Ut=Dn.get(Je);Ut&&Qe(Ut.id);return}Ge(Je)},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:p.spinner})}),children:a.jsx(rD,{settingsModel:zr,onSectionChange:C})})]}),J&&Yi.createPortal(a.jsx("div",{className:Ma.overlay,children:a.jsxs("div",{className:Ma.browser,children:[a.jsxs("div",{className:Ma.header,children:[a.jsxs("div",{className:Ma.pathInfo,children:[a.jsx(jo,{size:14}),a.jsx("span",{children:A||"Project Root"})]}),a.jsxs("div",{className:Ma.actions,children:[A&&a.jsx("button",{className:p.helpLink,onClick:()=>{const Je=A.split("/").filter(Boolean);Je.pop(),K(Je.length?Je.join("/")+"/":"")},children:"Back"}),a.jsx("button",{className:p.helpLink,onClick:()=>me(!1),children:"Close"})]})]}),a.jsxs("div",{className:Ma.list,children:[ue&&typeof ue=="object"&&a.jsxs("div",{className:`${Ma.item} ${Ma.itemCurrent}`,onClick:()=>X(A),children:[a.jsx(to,{size:14})," Select Current: ./",A||"(root)"]}),ve.map(Je=>a.jsxs("div",{className:Ma.item,onClick:()=>K(A+Je+"/"),children:[a.jsx(jo,{size:14})," ",Je,"/"]},Je)),se.map(Je=>a.jsxs("div",{className:`${Ma.item} ${Ma.itemFile}`,onClick:()=>X(A+Je),children:[a.jsx(Ep,{size:14})," ",Je]},Je)),ve.length===0&&se.length===0&&a.jsx("div",{className:`${Ma.item} ${Ma.empty}`,children:"No items found"})]})]})}),document.body),dn&&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(yd,{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:p.cancelBtn,onClick:()=>Xn(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),a.jsx("button",{className:p.destructiveBtn,onClick:hr,title:"Discard unsaved changes and leave",children:"Discard"}),a.jsxs("button",{className:p.submitBtn,onClick:Hr,disabled:bt,title:"Save changes and leave",children:[bt?a.jsx(mr,{size:16,className:p.spinner}):a.jsx(ug,{size:16}),"Save"]})]})]})}),Sn&&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(yd,{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: ",Sn.dueDate," · Scheduled: ",Sn.scheduledDate]})]}),a.jsxs("div",{className:`${xt.formActions} ${xt.unsavedActions}`,children:[a.jsx("button",{className:p.cancelBtn,onClick:Ar,children:"Go Back"}),a.jsx("button",{className:p.submitBtn,onClick:xa,children:"Save Anyway"})]})]})})]})}const oD="_accountMenuWrap_1mocf_1",iD="_avatarBtn_1mocf_5",cD="_avatarBadge_1mocf_9",lD="_avatarImage_1mocf_24",dD="_avatarIcon_1mocf_30",uD="_accountMenu_1mocf_1",mD="_accountMenuItem_1mocf_48",pD="_accountMenuItemActive_1mocf_68",fD="_accountMenuSection_1mocf_73",hD="_accountMenuSectionLabel_1mocf_79",gD="_accountMenuMeta_1mocf_88",yD="_accountMenuHint_1mocf_93",kD="_accountIdentityEmail_1mocf_99",vD="_accountIdentityBlock_1mocf_104",SD="_accountIdentityMetaLine_1mocf_109",wD="_accountIdentityMetaAction_1mocf_116",bD="_accountIdentityMetaValue_1mocf_125",_D="_accountIdentityMetaLabel_1mocf_130",CD="_accountMenuError_1mocf_159",AD="_accountHubCard_1mocf_165",xD="_profileAvatarEditor_1mocf_172",ID="_profileEditLayout_1mocf_178",TD="_profileFieldStack_1mocf_185",RD="_profileFieldLabel_1mocf_191",ht={accountMenuWrap:oD,avatarBtn:iD,avatarBadge:cD,avatarImage:lD,avatarIcon:dD,accountMenu:uD,accountMenuItem:mD,accountMenuItemActive:pD,accountMenuSection:fD,accountMenuSectionLabel:hD,accountMenuMeta:gD,accountMenuHint:yD,accountIdentityEmail:kD,accountIdentityBlock:vD,accountIdentityMetaLine:SD,accountIdentityMetaAction:wD,accountIdentityMetaValue:bD,accountIdentityMetaLabel:_D,accountMenuError:CD,accountHubCard:AD,profileAvatarEditor:xD,profileEditLayout:ID,profileFieldStack:TD,profileFieldLabel:RD},jD="_authBlockedBanner_1virb_1",ND="_loginView_1virb_10",PD="_loginCard_1virb_20",MD="_loginCloseBtn_1virb_34",ED="_loginLogo_1virb_56",DD="_authBrandRow_1virb_62",LD="_setupHeaderRow_1virb_68",BD="_runtimeIconBadge_1virb_75",WD="_loginTitle_1virb_94",FD="_loginTitleAccent_1virb_105",OD="_loginSubtitle_1virb_109",$D="_loginError_1virb_115",UD="_loginField_1virb_121",zD="_loginFieldLabel_1virb_126",HD="_loginInput_1virb_133",GD="_loginPrimaryBtn_1virb_149",VD="_authPrimaryActions_1virb_154",qD="_registerConsent_1virb_159",KD="_registerConsentLink_1virb_167",ZD="_authModeSwitch_1virb_177",YD="_authModeSwitchLink_1virb_184",JD="_authModeLinks_1virb_199",QD="_authSecondaryActions_1virb_207",XD="_authModeLink_1virb_199",eL="_optionGrid_1virb_236",tL="_optionGroup_1virb_242",aL="_optionRow_1virb_247",nL="_inlineHint_1virb_254",rL="_actionRowEnd_1virb_260",sL="_oauthProviders_1virb_267",oL="_oauthDivider_1virb_274",iL="_oauthButtons_1virb_290",cL="_oauthButton_1virb_290",fe={authBlockedBanner:jD,loginView:ND,loginCard:PD,loginCloseBtn:MD,loginLogo:ED,authBrandRow:DD,setupHeaderRow:LD,runtimeIconBadge:BD,loginTitle:WD,loginTitleAccent:FD,loginSubtitle:OD,loginError:$D,loginField:UD,loginFieldLabel:zD,loginInput:HD,loginPrimaryBtn:GD,authPrimaryActions:VD,registerConsent:qD,registerConsentLink:KD,authModeSwitch:ZD,authModeSwitchLink:YD,authModeLinks:JD,authSecondaryActions:QD,authModeLink:XD,optionGrid:eL,optionGroup:tL,optionRow:aL,inlineHint:nL,actionRowEnd:rL,oauthProviders:sL,oauthDivider:oL,oauthButtons:iL,oauthButton:cL};function lL(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 _=y.current.getBoundingClientRect();m(_.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,_=g.clientY-l.y;_<-d&&(_=-d),n({x:v,y:_})}},[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 Fs({isOpen:e,onClose:t,title:n,children:s,footer:o,size:l="md",theme:i=rm,className:d,headerActions:m,draggable:y=!1,isSettings:k=!1,closeOnOverlayClick:S=!0}){const h=r.useRef(null),{position:g,isDragging:v,handleMouseDown:_,modalRef:C}=lL();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 x={sm:xt.modalSizeSm,md:xt.modalSizeMd,mdWide:xt.modalSizeMdWide,lg:xt.modalSizeLg,xl:xt.modalSizeXl,full:xt.modalSizeFull};return Yi.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:C,className:`tf-surface-modal tf-modal-shell ${xt.modal} tf-scrollbar-scope ${x[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?_: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(nc,{size:20})})]})]}),a.jsx("div",{className:xt.modalContent,children:s}),o&&a.jsx("div",{className:`${xt.formActions} ${xt.modalFooter}`,children:o})]})}),document.body)}const dL="_modalBody_1t87j_1",uL="_mutedText_1t87j_5",mL="_sectionText_1t87j_10",pL="_sectionTextSpaced_1t87j_15",fL="_sectionTextTop_1t87j_20",hL="_errorText_1t87j_25",gL="_inlineFieldLabel_1t87j_29",yL="_wrapRow_1t87j_35",kL="_actionRowEnd_1t87j_42",vL="_modalActionsEnd_1t87j_50",SL="_helpIntro_1t87j_56",wL="_supportEmailRow_1t87j_61",bL="_supportEmailAddress_1t87j_68",_L="_supportEmailBtn_1t87j_80",CL="_supportPanel_1t87j_86",AL="_supportPanelHeader_1t87j_92",xL="_supportRouteList_1t87j_104",IL="_supportRouteBtn_1t87j_110",TL="_memberRow_1t87j_114",RL="_memberTitle_1t87j_120",jL="_memberActions_1t87j_124",NL="_selectRole_1t87j_131",PL="_selectPermission_1t87j_135",ML="_inviteRow_1t87j_139",EL="_listHeading_1t87j_143",DL="_auditList_1t87j_148",LL="_auditPager_1t87j_154",BL="_labelFixed_1t87j_161",pt={modalBody:dL,mutedText:uL,sectionText:mL,sectionTextSpaced:pL,sectionTextTop:fL,errorText:hL,inlineFieldLabel:gL,wrapRow:yL,actionRowEnd:kL,modalActionsEnd:vL,helpIntro:SL,supportEmailRow:wL,supportEmailAddress:bL,supportEmailBtn:_L,supportPanel:CL,supportPanelHeader:AL,supportRouteList:xL,supportRouteBtn:IL,memberRow:TL,memberTitle:RL,memberActions:jL,selectRole:NL,selectPermission:PL,inviteRow:ML,listHeading:EL,auditList:DL,auditPager:LL,labelFixed:BL};function WL({isOpen:e,theme:t,onClose:n,onConfirm:s}){return a.jsx(Fs,{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:p.cancelBtn,onClick:n,children:"Cancel"}),a.jsx("button",{type:"button",className:p.submitBtn,onClick:s,children:"Start Setup"})]}),children:a.jsx("div",{className:`${xt.form} ${pt.modalBody}`,children:a.jsx("p",{className:pt.sectionText,children:"Create and configure a new workspace."})})})}const FL=new Set(["active","trialing","grace"]),Lh={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."},Hu={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 ac(e){return String(e||"").trim()}function Iy(e){return ac(e).toLowerCase()}function OL(e){return ac(e).toLowerCase()}function $L(e){return!!(ac(e?.stripeCustomerId)||ac(e?.stripeSubscriptionId))}function UL(e){const t=ac(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 zL(e){return FL.has(Iy(e))}function qp(e,t){const n=Iy(e?.entitlementState),s=OL(e?.gate||t),o=ac(e?.billingConflictCode).toUpperCase(),l=ac(e?.message),i=zL(n),d=$L(e);return o==="CHECKOUT_SESSION_EXPIRED"?{entitlementState:n||null,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:Lh.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:Lh.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:UL(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||Hu.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||Hu.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:Hu.misconfigured,primaryAction:"none",primaryLabel:null,showManageBilling:!1,markCurrentPlan:!1}:s==="missing_entitlement"?{entitlementState:n||null,gate:s,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:Hu.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 Kp=12,HL=new Set(["12345678","123456789","1234567890","admin123","changeme","letmein","letmein123","password","password1","password12","password123","password1234","qwerty","qwerty123","welcome","welcome123"]),GL=e=>String(e||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"");function VL(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 Ty(){return[`Use at least ${Kp} characters.`,"Avoid common passwords or obvious patterns.","Do not include your email or display name."]}function Ry(e,t){const n=String(e||"");if(!n)return{ok:!1,code:"PASSWORD_REQUIRED",message:"Password is required."};if(n.length<Kp)return{ok:!1,code:"PASSWORD_TOO_SHORT",message:`Password must be at least ${Kp} characters.`};const s=GL(n);return HL.has(s)?{ok:!1,code:"PASSWORD_TOO_COMMON",message:"Choose a less common password."}:VL(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 qL({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:_,canManageWorkspaceSync:C,workspaceCloudSyncEnabled:x,syncStatusLabel:W,workspaceSyncError:V,syncControlBusy:B,cloudAuthEnabled:J,availableAuthProviders:me,onFetchLoginMethods:ve,onUnlinkLoginMethod:se,onAddPassword:A,onLinkProvider:K,onClose:ue,onOpenWorkspaceAudit:pe,onBillingIntervalChange:X,onRefreshBilling:M,onUpdateInterval:O,onManageBilling:de,onStartCheckout:ge,onToggleWorkspaceSync:$,onOpenHelp:_e}){const je=qp(g),oe=Ty(),ce=je.message,Re=je.primaryLabel||"Start Checkout",Pe=String(g?.planName||g?.planId||"n/a").trim()||"n/a",Ce=()=>{if(je.primaryAction==="manage_billing"){de();return}ge()},[De,U]=r.useState([]),[I,b]=r.useState(!1),[R,D]=r.useState(null),[te,N]=r.useState(null),[G,be]=r.useState(null),[z,ie]=r.useState(!1),[ee,Q]=r.useState(""),[q,Se]=r.useState(!1),[we,Te]=r.useState(null),[Ee,nt]=r.useState(!1);r.useEffect(()=>{!e||!o||!J||(b(!0),D(null),ve().then(Xe=>{b(!1),Xe.success&&Xe.methods?U(Xe.methods):D(Xe.error||"Failed to load login methods.")}))},[e,o,J,ve]);const gt=async Xe=>{N(Xe),be(null);const lt=await se(Xe);N(null),lt.success?U(re=>re.filter(it=>it.provider!==Xe)):be(lt.error||"Unlink failed.")},dt=async()=>{const Xe=Ry(ee);if(!Xe.ok){Te(Xe.message||"Password does not meet the password policy.");return}Se(!0),Te(null);const lt=await A(ee);if(Se(!1),!lt.success)Te(lt.error||"Failed to add password.");else{nt(!0),Q(""),ie(!1);const re=await ve();re.success&&re.methods&&U(re.methods)}},St={password:"Email & Password",google:"Google",github:"GitHub",apple:"Apple"},Ze=new Set(De.map(Xe=>Xe.provider)),Ct=Ze.has("password"),ut=me.filter(Xe=>Xe!=="password"&&!Ze.has(Xe));return a.jsx(Fs,{isOpen:e,onClose:ue,title:"Account Hub",size:"md",theme:t,draggable:!0,children:a.jsxs("div",{className:`${xt.form} ${pt.modalBody}`,children:[a.jsx("p",{className:pt.mutedText,children:"Manage sign in, profile, and workspace controls from one place."}),a.jsxs("div",{className:ht.accountHubCard,children:[a.jsx("strong",{children:"Authentication"}),a.jsx("p",{className:pt.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:pt.sectionTextSpaced,children:o?l?a.jsxs(a.Fragment,{children:["Signed in as ",a.jsx("span",{className:ht.accountIdentityEmail,children:i})]}):"Signed in":"Signed in as: not signed in"}),n==="cloud"&&s&&!o&&a.jsx("p",{className:pt.sectionTextTop,children:"Use the `/login` screen to sign in."})]}),o&&J&&a.jsxs("div",{className:ht.accountHubCard,children:[a.jsx("strong",{children:"Login Methods"}),I&&a.jsx("p",{className:pt.sectionText,children:"Loading..."}),R&&a.jsx("p",{className:`${fe.loginError} ${pt.errorText}`,children:R}),G&&a.jsx("p",{className:`${fe.loginError} ${pt.errorText}`,children:G}),Ee&&a.jsx("p",{className:pt.sectionText,style:{color:"var(--color-success, #4ade80)"},children:"Password login added."}),!I&&De.length>0&&a.jsx("div",{style:{marginTop:8,display:"grid",gap:6},children:De.map(Xe=>a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,flexWrap:"wrap"},children:[a.jsxs("span",{className:pt.sectionText,children:[a.jsx("strong",{children:St[Xe.provider]||Xe.provider}),Xe.providerEmail?a.jsxs(a.Fragment,{children:[" · ",a.jsx("span",{className:ht.accountMenuMeta,children:Xe.providerEmail})]}):null]}),De.length>1&&a.jsx("button",{className:p.cancelBtn,style:{fontSize:11,padding:"2px 8px"},disabled:te===Xe.provider,onClick:()=>gt(Xe.provider),children:te===Xe.provider?"Removing…":"Remove"})]},Xe.provider))}),!I&&!Ct&&!z&&a.jsx("div",{className:pt.actionRowEnd,children:a.jsx("button",{className:p.cancelBtn,onClick:()=>{ie(!0),nt(!1),Te(null)},children:"Add Password Login"})}),z&&a.jsxs("div",{style:{marginTop:10,display:"grid",gap:6},children:[a.jsxs("label",{className:ht.accountMenuMeta,style:{display:"block"},children:["New password",a.jsx("input",{type:"password",className:p.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:ht.accountMenuMeta,style:{margin:0},children:oe.join(" ")}),we&&a.jsx("p",{className:`${fe.loginError} ${pt.errorText}`,children:we}),a.jsxs("div",{className:pt.actionRowEnd,children:[a.jsx("button",{className:p.cancelBtn,onClick:()=>{ie(!1),Q(""),Te(null)},disabled:q,children:"Cancel"}),a.jsx("button",{className:p.submitBtn,onClick:dt,disabled:q||!ee,children:q?"Saving…":"Save Password"})]})]}),!I&&ut.length>0&&a.jsxs("div",{style:{marginTop:10},children:[a.jsx("p",{className:ht.accountMenuMeta,style:{marginBottom:6},children:"Link another account:"}),a.jsx("div",{className:fe.oauthButtons,children:ut.map(Xe=>a.jsx("button",{className:fe.oauthButton,onClick:()=>K(Xe),children:St[Xe]||Xe},Xe))})]})]}),a.jsxs("div",{className:ht.accountHubCard,children:[a.jsx("strong",{children:"Profile & Account"}),a.jsx("p",{className:pt.sectionText,children:"Profile editing and account preferences will live here."})]}),a.jsxs("div",{className:ht.accountHubCard,children:[a.jsx("strong",{children:"Billing"}),o?n!=="cloud"?a.jsx("p",{className:pt.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:pt.sectionTextSpaced,children:"Loading billing status..."}),m&&a.jsx("p",{className:`${fe.loginError} ${pt.errorText}`,children:m}),y&&a.jsx("p",{className:`${fe.loginError} ${pt.errorText}`,children:y}),k&&a.jsx("p",{className:pt.errorText,children:k}),ce&&a.jsx("p",{className:pt.sectionText,children:ce}),a.jsxs("p",{className:pt.sectionTextSpaced,children:["Plan: ",a.jsx("code",{children:Pe})," · ","Entitlement: ",a.jsx("code",{children:String(g?.entitlementState||"n/a")})]}),a.jsxs("p",{className:pt.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:pt.wrapRow,children:a.jsxs("label",{className:`${ht.accountMenuMeta} ${pt.inlineFieldLabel}`,children:["Interval",a.jsxs("select",{className:p.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:pt.actionRowEnd,children:[a.jsx("button",{className:p.cancelBtn,onClick:M,disabled:S||d,children:"Refresh Billing"}),a.jsx("button",{className:p.cancelBtn,onClick:O,disabled:S||!g?.stripeSubscriptionId,children:"Update Interval"}),a.jsx("button",{className:p.cancelBtn,onClick:de,disabled:S||!g?.stripeCustomerId,children:"Manage Billing"}),a.jsx("button",{className:p.submitBtn,onClick:Ce,disabled:S||je.primaryAction==="manage_billing"&&!g?.stripeCustomerId,children:S?"Working...":Re})]})]}):a.jsx("p",{className:pt.sectionText,children:"Sign in to manage subscription billing."})]}),a.jsxs("div",{className:ht.accountHubCard,children:[a.jsx("strong",{children:"Workspace Audit Log"}),a.jsx("p",{className:pt.sectionText,children:"Audit entries are workspace-scoped for the active workspace, not global account history."}),a.jsxs("p",{className:pt.sectionText,children:["Active workspace: ",a.jsx("code",{children:v})]}),a.jsx("div",{className:pt.actionRowEnd,children:a.jsx("button",{className:p.cancelBtn,onClick:pe,disabled:!_,children:"Open Workspace Audit"})})]}),a.jsxs("div",{className:ht.accountHubCard,children:[a.jsx("strong",{children:"Workspace Cloud Sync"}),a.jsx("p",{className:pt.sectionText,children:C?x?`Enabled · ${W}`:"Disabled":"Sign in to cloud account to enable workspace sync."}),V&&a.jsx("p",{className:`${fe.loginError} ${pt.errorText}`,children:V}),a.jsx("div",{className:pt.actionRowEnd,children:a.jsx("button",{className:p.cancelBtn,disabled:!C||B,onClick:()=>$(!x),children:x?"Disable Sync":"Enable Sync"})})]}),a.jsxs("div",{className:`${xt.formActions} ${pt.modalActionsEnd}`,children:[a.jsx("button",{className:p.cancelBtn,onClick:_e,children:"Help & Support"}),a.jsx("button",{className:p.submitBtn,onClick:ue,children:"Close"})]})]})})}var Bh=(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)}},KL=(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)},ZL=e=>!!e.match(/^\s*data:([a-z]+\/[a-z]+(;[a-z-]+=[a-z-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=\-._~:@/?%\s]*\s*$/i),jy=(e,t)=>new Promise((n,s)=>{let o=new Image;o.addEventListener("load",()=>n(o)),o.addEventListener("error",s),!ZL(e)&&t&&(o.crossOrigin=t),o.src=e}),YL=e=>new Promise((t,n)=>{let s=new FileReader;s.addEventListener("load",o=>{try{if(!o?.target?.result)throw Error("No image data");t(jy(o.target.result))}catch(l){n(l)}}),s.readAsDataURL(e)}),JL=typeof File<"u",Wh=e=>Math.PI/180*e,Fh={x:.5,y:.5},QL=class{constructor(e){this.imageState=Fh,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(JL&&e instanceof File)t=await YL(e);else if(typeof e=="string")t=await jy(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=Fh}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(),Bh(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(),Bh(e,s+.5,o+.5,i-s*2-1,l-o*2-1,t),e.stroke()),this.config.showGrid&&KL(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(Wh(k)),h=Math.sin(Wh(k)),g=m+o*S+l*h,v=y+-o*h+l*S,_=1/this.config.scale*this.getXScale(),C=1/this.config.scale*this.getYScale();return{x:g/i+_/2,y:v/d+C/2}}},Oh=()=>{},XL=()=>{let e=!1;try{let t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",Oh,t),window.removeEventListener("test",Oh,t)}catch{e=!1}return e},Ny=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:_,backgroundColor:C,crossOrigin:x,onLoadStart:W,onLoadFailure:V,onLoadSuccess:B,onImageReady:J,onImageChange:me,onMouseUp:ve,onMouseMove:se,onPositionChange:A,borderColor:K,style:ue}=e,pe=r.useRef(null),X=r.useRef(new QL({width:i,height:d,border:o,borderRadius:l,scale:n,rotate:s,color:m,backgroundColor:C,borderColor:K,showGrid:y,gridColor:k,disableBoundaryChecks:S,disableHiDPIScaling:h,disableCanvasRotation:g,crossOrigin:x})),M=r.useRef(!1),O=r.useRef(void 0),de=r.useRef(void 0),[ge,$]=r.useState(!1),[_e,je]=r.useState(!1),[oe,ce]=r.useState(X.current.getImageState()),Re=r.useRef(ve);Re.current=ve;let Pe=r.useRef(se);Pe.current=se;let Ce=r.useRef(A);Ce.current=A,r.useEffect(()=>{X.current.updateConfig({width:i,height:d,border:o,borderRadius:l,scale:n,rotate:s,color:m,backgroundColor:C,borderColor:K,showGrid:y,gridColor:k,disableBoundaryChecks:S,disableHiDPIScaling:h,disableCanvasRotation:g,crossOrigin:x})},[i,d,o,l,n,s,m,C,K,y,k,S,h,g,x]);let De=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},[]),U=r.useCallback(()=>{let ie=De().getContext("2d");if(!ie)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return ie},[De]),I=r.useCallback(async ie=>{je(!0),W?.();try{let ee=await X.current.loadImage(ie);M.current=!1,$(!1),ce(ee),J?.(),B?.(ee)}catch{V?.()}finally{je(!1)}},[W,J,B,V]),b=r.useCallback(()=>{let ie=De();U().clearRect(0,0,ie.width,ie.height),X.current.clearImage(),ce(X.current.getImageState())},[De,U]),R=r.useCallback(()=>{let ie=U(),ee=De();ie.clearRect(0,0,ee.width,ee.height),X.current.paint(ie),X.current.paintImage(ie,oe,o)},[U,De,oe,o,i,d,l,n,s,m,C,K,y,k,S,h,g,x]),D=r.useCallback(ie=>{ie.preventDefault(),M.current=!0,O.current=void 0,de.current=void 0,$(!0)},[]),te=r.useCallback(()=>{M.current=!0,O.current=void 0,de.current=void 0,$(!0)},[]);r.useImperativeHandle(t,()=>({getImage:()=>X.current.getImage(),getImageScaledToCanvas:()=>X.current.getImageScaledToCanvas(),getCroppingRect:()=>X.current.getCroppingRect()}),[]),r.useEffect(()=>{let ie=U();v&&I(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,Ee=O.current,nt=de.current;if(O.current=we,de.current=Te,Ee!==void 0&&nt!==void 0){let gt=X.current.getImageState();if(gt.width&>.height){let dt=X.current.calculateDragPosition(we,Te,Ee,nt);Ce.current?.(dt);let St={...gt,...dt};X.current.setImageState(St),ce(St)}}Pe.current?.(Se)},Q=()=>{M.current&&(M.current=!1,$(!1),Re.current?.())},q=XL()?{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?I(v):!v&&oe.x!==.5&&oe.y!==.5&&b()},[v,i,d,C]),r.useEffect(()=>{R()},[R]),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,Ee=.03+Math.sin(Te*2.5)*.02+.02;ee.save(),ee.clearRect(0,0,ie.width,ie.height),ee.fillStyle=`rgba(255,255,255,${Ee})`,ee.fillRect(0,0,ie.width,ie.height),ee.restore(),Q=requestAnimationFrame(Se)};return Q=requestAnimationFrame(Se),()=>cancelAnimationFrame(Q)},[_e]);let N=r.useRef({image:v,width:i,height:d,position:_,scale:n,rotate:s,imageX:oe.x,imageY:oe.y});r.useEffect(()=>{let ie=N.current;(ie.image!==v||ie.width!==i||ie.height!==d||ie.position!==_||ie.scale!==n||ie.rotate!==s||ie.imageX!==oe.x||ie.imageY!==oe.y)&&(me?.(),N.current={image:v,width:i,height:d,position:_,scale:n,rotate:s,imageX:oe.x,imageY:oe.y})},[v,i,d,_,n,s,oe.x,oe.y,me]);let G=X.current.getDimensions(),be=X.current.getPixelRatio(),z={width:G.canvas.width,height:G.canvas.height,cursor:ge?"grabbing":"grab",touchAction:"none",maxWidth:"none",maxHeight:"none"};return Oe.createElement("canvas",{width:G.canvas.width*be,height:G.canvas.height*be,onMouseDown:D,onTouchStart:te,style:{...z,...ue},ref:pe})});Ny.displayName="AvatarEditor";const eB="_avatarManagerBody_1bfwv_1",tB="_editorPanel_1bfwv_7",aB="_editorFrame_1bfwv_13",nB="_gifPreviewImage_1bfwv_21",rB="_emptyPreview_1bfwv_28",sB="_controlPanel_1bfwv_41",oB="_zoomField_1bfwv_47",iB="_zoomSlider_1bfwv_52",cB="_actionGrid_1bfwv_57",lB="_fileInput_1bfwv_63",dB="_messageStack_1bfwv_67",Bs={avatarManagerBody:eB,editorPanel:tB,editorFrame:aB,gifPreviewImage:nB,emptyPreview:rB,controlPanel:sB,zoomField:oB,zoomSlider:iB,actionGrid:cB,fileInput:lB,messageStack:dB},Cp=512,uB=48,Gu=512;function $h(e,t,n){return new Promise(s=>{e.toBlob(s,t,n)})}function mB(e,t){const n=String(e).trim()||"avatar",s=n.lastIndexOf(".");return s<=0?`${n}${t}`:`${n.slice(0,s)}${t}`}async function pB(e,t){const n=e.getImageScaledToCanvas(),s=document.createElement("canvas");s.width=Gu,s.height=Gu;const o=s.getContext("2d");if(!o)throw new Error("Image editing requires a 2D canvas context.");o.drawImage(n,0,0,Gu,Gu);const i=await $h(s,"image/webp",.9)||await $h(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],mB(t,m),{type:d,lastModified:Date.now()})}function fB({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:_}){const C=r.useRef(null),x=r.useRef(null),[W,V]=r.useState(null),[B,J]=r.useState(""),[me,ve]=r.useState(1.1),[se,A]=r.useState(null),[K,ue]=r.useState(null);r.useEffect(()=>{e||(V(null),J(""),ve(1.1),A(null),ue(null))},[e]),r.useEffect(()=>{if(!W){J("");return}const oe=URL.createObjectURL(W);return J(oe),()=>URL.revokeObjectURL(oe)},[W]);const pe=B||o||s,X=W?.name||"avatar",M=String(l||"").trim().charAt(0).toUpperCase(),O=se||k,de=K||S,ge=r.useCallback(oe=>{if(A(null),ue(null),!!oe){if(!oe.type.startsWith("image/")){A("Profile photo must be an image file.");return}oe.type==="image/gif"&&ue("Animated GIFs will upload without repositioning."),V(oe),ve(1.1)}},[]),$=r.useCallback(async()=>{A(null);const oe=C.current;if(W?.type==="image/gif"){await g(W)&&h();return}if(!oe||!pe){A("Choose a profile photo first.");return}try{const ce=await pB(oe,X);await g(ce,W)&&h()}catch(ce){A(ce instanceof Error?ce.message:"Unable to prepare profile photo.")}},[pe,g,h,W,X]),_e=W?.type==="image/gif"||!!pe,je=r.useMemo(()=>a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:p.secondaryButton,onClick:h,disabled:d,children:"Cancel"}),a.jsx("button",{type:"button",className:p.primaryUpdateBtn,onClick:()=>{$()},disabled:d||!_e,children:d?"Applying...":"Apply Photo"})]}),[d,_e,$,h]);return a.jsx(Fs,{isOpen:e,onClose:h,title:n,size:"md",theme:t,draggable:!0,footer:je,children:a.jsxs("div",{className:Bs.avatarManagerBody,children:[a.jsxs("div",{className:Bs.editorPanel,children:[a.jsx("div",{className:`tf-surface-inset ${Bs.editorFrame}`,children:W?.type==="image/gif"&&B?a.jsx("img",{src:B,alt:"",className:Bs.gifPreviewImage}):pe?a.jsx(Ny,{ref:C,image:pe,width:Cp,height:Cp,border:uB,borderRadius:Cp/2,scale:me,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:Bs.emptyPreview,"aria-hidden":"true",children:M})}),a.jsxs("div",{className:Bs.controlPanel,children:[a.jsx("input",{ref:x,type:"file","aria-label":"Choose profile photo",accept:i,className:Bs.fileInput,onChange:oe=>ge(oe.target.files?.[0]||null),disabled:d}),a.jsxs("div",{className:Bs.actionGrid,children:[a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>x.current?.click(),disabled:d,children:[a.jsx(Lk,{size:16}),"Choose"]}),m&&_&&a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:_,disabled:d,children:[a.jsx(gd,{size:16}),"Discard"]}),y&&v&&a.jsxs("button",{type:"button",className:"tf-button-destructive tf-button-compact",onClick:v,disabled:d,children:[a.jsx(_m,{size:16}),"Remove"]})]}),a.jsxs("label",{className:`tf-field-stack ${Bs.zoomField}`,children:[a.jsx("span",{className:"tf-field-label",children:"Zoom"}),a.jsx("input",{type:"range",min:"1",max:"3",step:"0.01",value:me,onChange:oe=>ve(Number(oe.target.value)),className:Bs.zoomSlider,disabled:d||!pe||W?.type==="image/gif"})]})]})]}),(O||de)&&a.jsxs("div",{className:Bs.messageStack,children:[O&&a.jsx("p",{className:"tf-text-error",children:O}),de&&!O&&a.jsx("p",{className:"tf-text-helper",children:de})]})]})})}const hB="_editableAvatarButton_1ga39_1",gB="_editableAvatarImage_1ga39_47",yB="_editableAvatarFallback_1ga39_54",kB="_editableAvatarBadge_1ga39_65",Vu={editableAvatarButton:hB,editableAvatarImage:gB,editableAvatarFallback:yB,editableAvatarBadge:kB};function vB({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,_=i??o,C=typeof d=="number"?`${d}px`:d,x=typeof m=="number"?`${m}px`:m;return a.jsxs("button",{type:"button",className:`${Vu.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":`${_}px`,...C?{"--editable-avatar-radius":C}:{},...x?{"--editable-avatar-badge-size":x}:{},...s?{"--editable-avatar-accent":s}:{}},children:[g?a.jsx("img",{src:g,alt:"",className:Vu.editableAvatarImage}):a.jsx("span",{className:Vu.editableAvatarFallback,children:n}),a.jsx("span",{className:Vu.editableAvatarBadge,"aria-hidden":"true",children:a.jsx(Bk,{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(Fs,{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:p.secondaryButton,onClick:n,disabled:m||y,children:"Cancel"}),a.jsx("button",{type:"button",className:p.primaryUpdateBtn,onClick:s,disabled:m||y||!o.trim(),children:m?"Saving...":"Save Profile"})]}),children:a.jsxs("div",{className:`${xt.form} ${pt.modalBody}`,children:[a.jsxs("div",{className:ht.profileEditLayout,children:[a.jsx("div",{className:ht.profileAvatarEditor,children:a.jsx(vB,{label:"Edit profile photo",imageUrl:i,fallback:d,disabled:m||y,onClick:g})}),a.jsxs("div",{className:ht.profileFieldStack,children:[a.jsxs("label",{className:ht.profileFieldLabel,children:[a.jsx("span",{children:"Display name"}),a.jsx("input",{className:p.input,type:"text",value:o,onChange:v=>h(v.target.value),placeholder:"Display name",disabled:m})]}),a.jsxs("label",{className:ht.profileFieldLabel,children:[a.jsx("span",{children:"Email"}),a.jsx("input",{className:p.input,type:"email",value:l,readOnly:!0,disabled:!0})]})]})]}),k&&a.jsx("p",{className:`${fe.loginError} ${pt.errorText}`,children:k}),S&&!k&&a.jsx("p",{className:pt.errorText,children:S})]})})}const Zp="support@taskforcehq.ai";function qu(e){return String(e||"").trim()}function wB(e={}){const t=qu(e.workspaceName),n=qu(e.workspaceId),s=qu(e.accountLabel),o=qu(e.runtimeMode),l=[t?`Workspace: ${t}`:"",n?`Workspace ID: ${n}`:"",s?`Account: ${s}`:"",o?`Runtime: ${o}`:""].filter(Boolean),i=["Hi Taskforce team,","","I need help with:","",l.length>0?"Context:":"",...l,(l.length>0,""),"What happened:",""].filter((m,y,k)=>m!==""||k[y-1]!==""),d=new URLSearchParams({subject:"Taskforce support request",body:i.join(`
|
|
4
|
+
`)});return`mailto:${Zp}?${d.toString()}`}function bB({isOpen:e,theme:t,onClose:n,onOpenSettings:s,onOpenAccountHub:o,supportMailtoHref:l}){const[i,d]=r.useState("idle"),m=async()=>{try{await navigator.clipboard.writeText(Zp),d("copied"),window.setTimeout(()=>d("idle"),1600)}catch{d("failed"),window.setTimeout(()=>d("idle"),2200)}};return a.jsx(Fs,{isOpen:e,onClose:n,title:"Help & Support",size:"md",theme:t,draggable:!0,children:a.jsxs("div",{className:`${xt.form} ${pt.modalBody}`,children:[a.jsxs("div",{className:pt.helpIntro,children:[a.jsx("p",{className:"tf-text-body",children:"Need a hand with Taskforce? Send us what you were trying to do, what happened, and any workspace context that would help us reproduce it."}),a.jsxs("div",{className:pt.supportEmailRow,children:[a.jsx("code",{className:pt.supportEmailAddress,children:Zp}),a.jsxs("button",{className:`${p.submitBtn} ${pt.supportEmailBtn}`,onClick:()=>{m()},type:"button",children:[i==="copied"?a.jsx(to,{size:16}):a.jsx(ef,{size:16}),i==="copied"?"Copied":i==="failed"?"Copy Failed":"Copy Email"]})]}),a.jsxs("a",{className:`${p.cancelBtn} ${pt.supportEmailBtn}`,href:l,children:[a.jsx(mg,{size:16}),"Open Email App"]})]}),a.jsxs("div",{className:`${pt.supportPanel} tf-surface-panel`,children:[a.jsxs("div",{className:pt.supportPanelHeader,children:[a.jsx(Wk,{size:16}),a.jsxs("div",{children:[a.jsx("h3",{className:"tf-heading-card",children:"Before you email"}),a.jsx("p",{className:"tf-text-secondary",children:"These are the fastest places to check for common workspace, account, and setup issues."})]})]}),a.jsxs("div",{className:pt.supportRouteList,children:[a.jsxs("button",{className:`${p.cancelBtn} ${pt.supportRouteBtn}`,onClick:s,children:[a.jsx(tf,{size:15}),"Open Settings"]}),o&&a.jsxs("button",{className:`${p.cancelBtn} ${pt.supportRouteBtn}`,onClick:o,children:[a.jsx(Fk,{size:15}),"Open Account Hub"]})]})]}),a.jsx("div",{className:`${xt.formActions} ${pt.modalActionsEnd}`,children:a.jsx("button",{className:p.cancelBtn,onClick:n,children:"Close"})})]})})}function _B({prompt:e,theme:t,onClose:n,onConfirm:s}){return a.jsx(Fs,{isOpen:!!e,onClose:n,title:"Date Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:a.jsxs("div",{className:`${p.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:p.formActions,children:[a.jsx("button",{className:p.cancelBtn,onClick:n,children:"Go Back"}),a.jsx("button",{className:p.submitBtn,onClick:s,children:"Save Anyway"})]})]})})}function CB({isOpen:e,theme:t,onClose:n,onConfirm:s}){return a.jsx(Fs,{isOpen:e,onClose:n,title:"Cloud Sync Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:a.jsxs("div",{className:`${p.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:p.formActions,children:[a.jsx("button",{className:p.cancelBtn,onClick:n,children:"Go Back"}),a.jsx("button",{className:p.submitBtn,onClick:s,children:"Enable Sync Anyway"})]})]})})}const AB="_syncStatusModal_4pd1g_1",xB="_syncStatusTop_4pd1g_6",IB="_syncStatusMetaHeader_4pd1g_15",TB="_syncStatusHeaderInfo_4pd1g_22",RB="_syncToggle_4pd1g_43",jB="_syncStatusBadge_4pd1g_47",NB="_syncToggleControl_4pd1g_75",PB="_syncToggleControlEnabled_4pd1g_91",MB="_syncToggleControlDisabled_4pd1g_98",EB="_syncToggleControlBusy_4pd1g_102",DB="_syncToggleControlBlocked_4pd1g_107",LB="_syncToggleInput_4pd1g_112",BB="_syncToggleState_4pd1g_125",WB="_syncToggleStateOn_4pd1g_136",FB="_syncToggleStateOff_4pd1g_141",OB="_syncToggleThumb_4pd1g_146",$B="_syncStatusSummaryValue_4pd1g_173",UB="_syncStatusSummaryCompact_4pd1g_180",zB="_syncStatusRepairBanner_4pd1g_190",HB="_syncStatusRepairHeader_4pd1g_200",GB="_syncStatusRepairBadge_4pd1g_207",VB="_syncStatusRepairMeta_4pd1g_216",qB="_syncStatusRepairText_4pd1g_223",KB="_syncStatusLabel_4pd1g_257",ZB="_syncStatusSectionHeader_4pd1g_265",YB="_syncStatusCompactGrid_4pd1g_278",JB="_syncStatusCompactItem_4pd1g_284",QB="_syncStatusValue_4pd1g_295",XB="_syncStatusValueError_4pd1g_325",eW="_syncStatusActions_4pd1g_329",tW="_syncStatusPanel_4pd1g_336",aW="_syncStatusPanelHeader_4pd1g_346",nW="_syncStatusPanelMeta_4pd1g_353",rW="_syncStatusEventsList_4pd1g_375",sW="_syncStatusEventItem_4pd1g_384",oW="_syncStatusEventItemError_4pd1g_391",iW="_syncStatusEventItemMuted_4pd1g_396",cW="_syncStatusEventLine_4pd1g_401",lW="_syncStatusSecondaryActions_4pd1g_411",dW="_syncStatusPrimaryActions_4pd1g_425",uW="_syncStatusPrimaryActionSlot_4pd1g_432",mW="_syncStatusActionPlaceholder_4pd1g_440",st={syncStatusModal:AB,syncStatusTop:xB,syncStatusMetaHeader:IB,syncStatusHeaderInfo:TB,syncToggle:RB,syncStatusBadge:jB,syncToggleControl:NB,syncToggleControlEnabled:PB,syncToggleControlDisabled:MB,syncToggleControlBusy:EB,syncToggleControlBlocked:DB,syncToggleInput:LB,syncToggleState:BB,syncToggleStateOn:WB,syncToggleStateOff:FB,syncToggleThumb:OB,syncStatusSummaryValue:$B,syncStatusSummaryCompact:UB,syncStatusRepairBanner:zB,syncStatusRepairHeader:HB,syncStatusRepairBadge:GB,syncStatusRepairMeta:VB,syncStatusRepairText:qB,syncStatusLabel:KB,syncStatusSectionHeader:ZB,syncStatusCompactGrid:YB,syncStatusCompactItem:JB,syncStatusValue:QB,syncStatusValueError:XB,syncStatusActions:eW,syncStatusPanel:tW,syncStatusPanelHeader:aW,syncStatusPanelMeta:nW,syncStatusEventsList:rW,syncStatusEventItem:sW,syncStatusEventItemError:oW,syncStatusEventItemMuted:iW,syncStatusEventLine:cW,syncStatusSecondaryActions:lW,syncStatusPrimaryActions:dW,syncStatusPrimaryActionSlot:uW,syncStatusActionPlaceholder:mW};function pW({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:_,syncLastError:C,workspaceSyncDiagnostics:x,activeReferenceMismatchSummaries:W,syncDiagnosticsSummary:V,syncEventRows:B,syncEventsListRef:J,workspaceSyncRepairQueued:me,workspaceSyncBusy:ve,workspaceSyncCopied:se,runtimeMode:A,isAuthenticated:K,onClose:ue,onToggleWorkspaceSync:pe,onRepairSync:X,onCopyReport:M,onOpenLogin:O,onRetrySync:de}){return a.jsx(Fs,{isOpen:e,onClose:ue,title:"Sync Manager",size:"mdWide",theme:t,draggable:!0,children:a.jsxs("div",{className:`${xt.form} ${st.syncStatusModal}`,style:{gap:"10px"},children:[a.jsxs("div",{className:st.syncStatusTop,children:[a.jsx("div",{className:st.syncStatusHeaderInfo,children:a.jsxs("div",{className:st.syncStatusMetaHeader,children:[a.jsx("div",{className:st.syncStatusBadge,style:{borderColor:s.border,background:s.background,color:s.color},children:s.label}),a.jsxs("span",{className:st.syncStatusLabel,children:["Workspace: ",a.jsx("code",{children:n})]})]})}),a.jsx("label",{className:st.syncToggle,children:a.jsxs("span",{className:[st.syncToggleControl,o?st.syncToggleControlEnabled:st.syncToggleControlDisabled,l?st.syncToggleControlBusy:"",i?"":st.syncToggleControlBlocked].filter(Boolean).join(" "),children:[a.jsx("input",{className:st.syncToggleInput,type:"checkbox",role:"switch","aria-label":"Enable Sync",checked:o,disabled:!i||l,onChange:ge=>pe(ge.target.checked)}),a.jsx("span",{className:`${st.syncToggleState} ${st.syncToggleStateOn}`,children:"On"}),a.jsx("span",{className:`${st.syncToggleState} ${st.syncToggleStateOff}`,children:"Off"}),a.jsx("span",{className:st.syncToggleThumb})]})})]}),a.jsxs("div",{className:st.syncStatusSummaryCompact,children:[a.jsx("span",{className:st.syncStatusLabel,children:"Health"}),a.jsx("span",{className:st.syncStatusSummaryValue,children:d})]}),a.jsxs("div",{className:st.syncStatusSummaryCompact,children:[a.jsx("span",{className:st.syncStatusLabel,children:"Next Step"}),a.jsx("span",{className:st.syncStatusSummaryValue,children:m})]}),y&&a.jsxs("div",{className:st.syncStatusRepairBanner,children:[a.jsxs("div",{className:st.syncStatusRepairHeader,children:[a.jsxs("div",{className:st.syncStatusRepairBadge,children:[a.jsx(mr,{size:13,className:p.spinner}),a.jsx("span",{children:"Repair In Progress"})]}),a.jsx("span",{className:st.syncStatusRepairMeta,children:"Advanced recovery mode"})]}),a.jsx("span",{className:st.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:st.syncStatusSectionHeader,children:a.jsx("span",{className:st.syncStatusLabel,children:"Current Session"})}),a.jsxs("div",{className:st.syncStatusCompactGrid,children:[a.jsxs("div",{className:st.syncStatusCompactItem,children:[a.jsx("span",{className:st.syncStatusLabel,children:"Stage"}),a.jsx("span",{className:st.syncStatusValue,children:S})]}),a.jsxs("div",{className:st.syncStatusCompactItem,children:[a.jsx("span",{className:st.syncStatusLabel,children:"Local Changes"}),a.jsx("span",{className:st.syncStatusValue,children:h})]}),a.jsxs("div",{className:st.syncStatusCompactItem,children:[a.jsx("span",{className:st.syncStatusLabel,children:"Last Successful"}),a.jsx("span",{className:st.syncStatusValue,children:g})]})]}),a.jsx("div",{className:st.syncStatusSectionHeader,children:a.jsx("span",{className:st.syncStatusLabel,children:"Activity"})}),a.jsxs("div",{className:st.syncStatusCompactGrid,children:[a.jsxs("div",{className:st.syncStatusCompactItem,children:[a.jsx("span",{className:st.syncStatusLabel,children:"Last Pull"}),a.jsx("span",{className:st.syncStatusValue,children:v})]}),a.jsxs("div",{className:st.syncStatusCompactItem,children:[a.jsx("span",{className:st.syncStatusLabel,children:"Last Push"}),a.jsx("span",{className:st.syncStatusValue,children:_})]})]}),C!=="None"&&a.jsxs("div",{className:st.syncStatusPanel,style:{background:"rgba(239, 68, 68, 0.05)",borderColor:"rgba(239, 68, 68, 0.2)"},children:[a.jsxs("div",{className:st.syncStatusSectionHeader,style:{marginTop:0},children:[a.jsx(yd,{size:12,color:"#fda4af"}),a.jsxs("span",{className:st.syncStatusLabel,style:{color:"#fda4af"},children:["Last Error (",x.lastErrorAt?new Date(x.lastErrorAt).toLocaleTimeString():"Recent",")"]})]}),a.jsx("span",{className:`${st.syncStatusValue} ${st.syncStatusValueError}`,children:C})]}),k>0&&a.jsxs("div",{className:st.syncStatusPanel,style:{background:"rgba(250, 204, 21, 0.08)",borderColor:"rgba(250, 204, 21, 0.22)"},children:[a.jsxs("div",{className:st.syncStatusPanelHeader,children:[a.jsx("span",{className:st.syncStatusLabel,style:{color:"#fde68a"},children:"Identifier Integrity"}),a.jsxs("span",{className:st.syncStatusPanelMeta,children:[k," mismatch",k===1?"":"es"," detected"]})]}),a.jsx("span",{className:st.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:st.syncStatusValue,style:{fontSize:"12px",wordBreak:"break-all"},children:ge.pathLabel}),ge.refsLabel?a.jsx("span",{className:st.syncStatusPanelMeta,children:ge.refsLabel}):null]},ge.key))})]}),a.jsxs("div",{className:st.syncStatusPanel,children:[a.jsxs("div",{className:st.syncStatusPanelHeader,children:[a.jsx("span",{className:st.syncStatusLabel,children:"Local Sync Diagnostics"}),a.jsx("span",{className:st.syncStatusPanelMeta,style:{fontSize:"10px"},children:"AI profiles & metadata"})]}),a.jsx("div",{className:st.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:st.syncStatusLabel,style:{fontSize:"9px",textTransform:"capitalize"},children:ge.label}),a.jsx("span",{className:st.syncStatusValue,style:{fontSize:"11px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:ge.value})]},ge.label))})]}),a.jsxs("div",{className:st.syncStatusPanel,children:[a.jsx("div",{className:st.syncStatusPanelHeader,children:a.jsx("span",{className:st.syncStatusLabel,children:"Recent Events"})}),a.jsx("div",{ref:J,className:st.syncStatusEventsList,style:{height:"120px"},children:B.map(ge=>a.jsx("div",{className:[st.syncStatusEventItem,ge.tone==="error"?st.syncStatusEventItemError:"",ge.tone==="muted"?st.syncStatusEventItemMuted:""].filter(Boolean).join(" "),style:{padding:"6px 8px",borderRadius:"6px"},children:a.jsx("span",{className:st.syncStatusEventLine,style:{fontSize:"11px"},children:ge.text})},ge.key))})]}),a.jsxs("div",{className:`${xt.formActions} ${st.syncStatusActions}`,children:[a.jsxs("div",{className:st.syncStatusSecondaryActions,children:[a.jsx("button",{className:p.cancelBtn,onClick:X,disabled:y,title:y?"Repair is running now.":me?"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:p.spinner}),a.jsx("span",{style:{marginLeft:"6px"},children:"Repairing..."})]}):me?"Repair Queued":"Repair"}),a.jsxs("button",{className:p.cancelBtn,onClick:M,title:"Copy the current sync manager report for support or AI troubleshooting.",children:[a.jsx(ef,{size:14}),a.jsx("span",{style:{marginLeft:"6px"},children:se?"Copied":"Copy Report"})]})]}),a.jsxs("div",{className:st.syncStatusPrimaryActions,children:[a.jsx("div",{className:st.syncStatusPrimaryActionSlot,children:A==="local"&&!K?a.jsx("button",{className:p.submitBtn,onClick:O,children:"Sign In / Register"}):a.jsx("div",{className:st.syncStatusActionPlaceholder,"aria-hidden":"true"})}),a.jsx("div",{className:st.syncStatusPrimaryActionSlot,children:a.jsx("button",{className:p.submitBtn,onClick:de,disabled:ve,children:ve?a.jsxs(a.Fragment,{children:[a.jsx(mr,{size:14,className:p.spinner}),"Syncing..."]}):a.jsxs(a.Fragment,{children:[a.jsx(Ok,{size:14}),"Sync"]})})})]})]})]})})}function fW({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:_,teamAuditPage:C,teamAuditPages:x,teamAuditHasMore:W,onClose:V,onOpenMembersTab:B,onOpenInvitesTab:J,onOpenAuditTab:me,onMemberRoleChange:ve,onMemberPermissionChange:se,onToggleMemberDisabled:A,onRevokeInvite:K,onRemoveMember:ue,onInviteEmailChange:pe,onInviteRoleChange:X,onInvitePermissionModeChange:M,onSubmitInvite:O,onLoadAuditPrevious:de,onLoadAuditNext:ge}){return a.jsx(Fs,{isOpen:e,onClose:V,title:"Team Management",size:"md",theme:t,draggable:!0,children:a.jsxs("div",{className:`${xt.form} ${pt.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:`${p.settingsTabs} tf-scrollbar tf-scrollbar--track-transparent tf-scrollbar--compact`,children:[a.jsx("button",{className:`${p.settingsTabBtn} ${o==="members"?p.settingsTabBtnActive:""}`,onClick:B,children:"Members"}),a.jsx("button",{className:`${p.settingsTabBtn} ${o==="invites"?p.settingsTabBtnActive:""}`,onClick:J,children:"Invites"}),a.jsx("button",{className:`${p.settingsTabBtn} ${o==="audit"?p.settingsTabBtnActive:""}`,onClick:me,children:"Audit Log"})]}),o==="members"&&a.jsxs("div",{className:ht.accountHubCard,children:[l&&a.jsx("p",{className:pt.mutedText,children:"Loading members..."}),!l&&i.length===0&&a.jsx("p",{className:pt.mutedText,children:"No users found."}),!l&&i.map($=>a.jsxs("div",{className:pt.memberRow,children:[a.jsx("div",{className:pt.memberTitle,children:$.displayName||$.email}),a.jsxs("div",{className:ht.accountMenuMeta,children:[$.email," · ",$.status,$.disabled?" · deactivated":""]}),a.jsxs("div",{className:pt.memberActions,children:[a.jsxs("select",{className:`${p.input} ${pt.selectRole}`,value:$.role,onChange:_e=>ve($.userId,_e.target.value),disabled:d===$.userId,children:[a.jsx("option",{value:"owner",children:"Owner"}),a.jsx("option",{value:"admin",children:"Admin"}),a.jsx("option",{value:"member",children:"Member"})]}),$.role==="member"&&a.jsxs("select",{className:`${p.input} ${pt.selectPermission}`,value:$.permissionMode,onChange:_e=>se($.userId,_e.target.value),disabled:d===$.userId,children:[a.jsx("option",{value:"read-write",children:"Read / Write"}),a.jsx("option",{value:"read-only",children:"Read Only"})]}),a.jsx("button",{className:p.cancelBtn,disabled:d===$.userId,onClick:()=>A($.userId,!$.disabled),children:$.disabled?"Reactivate":"Deactivate"}),$.status==="invited"&&a.jsx("button",{className:p.cancelBtn,disabled:d===$.userId,onClick:()=>K($.userId),children:"Revoke Invite"}),a.jsx("button",{className:p.cancelBtn,disabled:d===$.userId,onClick:()=>ue($.userId),children:"Remove"})]})]},$.userId))]}),o==="invites"&&a.jsxs("div",{className:ht.accountHubCard,children:[m&&a.jsx("p",{className:pt.sectionText,children:m}),a.jsxs("div",{className:p.pathInputGroup,children:[a.jsx("label",{className:`${p.label} ${pt.labelFixed}`,children:"Email"}),a.jsx("input",{className:p.input,value:y,onChange:$=>pe($.target.value),placeholder:"name@company.com"})]}),a.jsxs("div",{className:p.pathInputGroup,children:[a.jsx("label",{className:`${p.label} ${pt.labelFixed}`,children:"Role"}),a.jsxs("select",{className:`${p.input} ${pt.selectRole}`,value:k,onChange:$=>X($.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:`${p.input} ${pt.selectPermission}`,value:S,onChange:$=>M($.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:p.submitBtn,disabled:h||!y.trim()||n!=="team",onClick:O,children:h?"Sending...":"Send Invite"})]}),a.jsxs("div",{className:pt.inviteRow,children:[a.jsx("div",{className:pt.listHeading,children:"Pending Invites"}),g.length===0&&a.jsx("p",{className:pt.mutedText,children:"No pending invites."}),g.map($=>a.jsxs("div",{className:pt.memberRow,children:[a.jsx("div",{className:pt.memberTitle,children:$.displayName||$.email}),a.jsxs("div",{className:ht.accountMenuMeta,children:[$.email," · ",$.role]})]},$.userId))]})]}),o==="audit"&&a.jsxs("div",{className:ht.accountHubCard,children:[v&&a.jsx("p",{className:pt.mutedText,children:"Loading audit entries..."}),!v&&_.length===0&&a.jsx("p",{className:pt.mutedText,children:"No audit events for this workspace."}),!v&&a.jsx("div",{className:pt.auditList,children:_.map($=>a.jsxs("div",{className:pt.memberRow,children:[a.jsx("div",{className:ht.accountMenuMeta,children:new Date($.createdAt).toLocaleString()}),a.jsx("div",{className:pt.memberTitle,children:$.action}),a.jsxs("div",{className:ht.accountMenuMeta,children:[$.actorUserId," (",$.actorRole,")"]})]},$.id))}),a.jsxs("div",{className:pt.auditPager,children:[a.jsx("button",{className:p.cancelBtn,disabled:v||C===0,onClick:de,children:"Previous"}),a.jsxs("span",{className:ht.accountMenuMeta,children:["Page ",C+1," of ",x]}),a.jsx("button",{className:p.cancelBtn,disabled:v||!W||C+1>=x,onClick:ge,children:"Next"})]})]}),a.jsx("div",{className:`${xt.formActions} ${pt.modalActionsEnd}`,children:a.jsx("button",{className:p.cancelBtn,onClick:V,children:"Close"})})]})})}const Py=e=>{const t=e.status||"task";return t==="done"||t==="cancelled"?"completed":t},hW=(e,t,n)=>{if(Py(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)},gW=({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)},My=(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},Af=e=>Array.from(e.entries()).map(([t,n])=>({taskId:t,updates:n})),Ey=({sourceColumnId:e,targetColumnId:t,sourceTasks:n,updates:s})=>!e||e===t?s:My(n,s),yW=({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=Ey({sourceColumnId:t,targetColumnId:"backlog",sourceTasks:s,updates:i}),Af(i)},kW=({activeTask:e,targetTasks:t,insertAt:n})=>{const s=[...t];return s.splice(n,0,e),Af(My(s))},vW=({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=Ey({sourceColumnId:t,targetColumnId:n,sourceTasks:o,updates:y}),Af(y)},SW=({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=gW({targetTasks:s,overTaskId:l,isBelowOverItem:i});if(n==="expired")return t!=="expired"?null:{kind:"updates",updates:kW({activeTask:e,targetTasks:s,insertAt:h})};if(n==="backlog")return{kind:"updates",updates:yW({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:vW({activeTask:e,sourceColumnId:t,targetColumnId:n,targetTasks:s,sourceTasks:o,insertAt:h,scheduledDate:g,scheduledWeekKey:m(g)}),selectedDate:g}:null},Xu="expired::";function wW({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:_,onToggleComplete:C,onToggleCancel:x,onSetStatus:W,onArchiveTask:V,onUnarchive:B,onDelete:J,allTasks:me=[],onAddTaskToColumn:ve,emptyColumnMode:se="show",filterCategories:A=[],filterTypes:K=[],filterPriorities:ue=[],filterStatus:pe=[],filterAssignees:X=[],filtersReady:M=!0,scheduleFilteredTaskIds:O,categories:de=[],compressed:ge=!1,readOnlyMode:$=null,recentlyChangedTaskIds:_e=[],scheduleDates:je,onScheduleDaySelected:oe,persistedScrollLeft:ce,onScrollLeftChange:Re,sortBy:Pe="created",sortOrder:Ce="desc",planningDropTargets:De=null,onAssignTaskToWorkstream:U,onAssignWorkstreamToInitiative:I,showTaskCardStatusLabel:b=!0,workstreams:R=[],initiatives:D=[]}){const[te,N]=r.useState(null),[G,be]=r.useState(!1),[z,ie]=r.useState(!1),ee=r.useMemo(()=>new Set(_e),[_e]),Q=r.useMemo(()=>new Map(R.map(E=>[E.id,E])),[R]),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(Xu)?E.slice(Xu.length):E,[]),Ee=r.useCallback(E=>we.has(Te(E)),[we,Te]),nt=r.useMemo(()=>new Set(O||[]),[O]),gt=r.useRef(null),dt=r.useCallback(E=>{const c=E?.data?.current||{},Y=String(E?.id||"");let ye=String(c.taskId||""),Ie=String(c.workstreamId||"");!ye&&Y&&Ee(Y)&&(ye=Te(Y)),!Ie&&Y.startsWith("planning-workstream:")&&(Ie=Y.slice(20));let qe=String(c.type||"");return qe||(ye?qe="task-card":Ie&&(qe="planning-workstream")),{activeId:Y,type:qe,taskId:ye,workstreamId:Ie}},[Te,Ee]),St=gg(Dp(Sg,{activationConstraint:{distance:10}}),Dp(dv,{coordinateGetter:lv})),Ze=Py,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}`},[]),ut=r.useMemo(()=>{const E=ye=>{const Ie=ye.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!Ie)return null;const qe=new Date(Date.UTC(Number(Ie[1]),Number(Ie[2])-1,Number(Ie[3]))),Ke=qe.getUTCDay()||7;qe.setUTCDate(qe.getUTCDate()+4-Ke);const Ne=new Date(Date.UTC(qe.getUTCFullYear(),0,1)),Vt=Math.ceil(((qe.getTime()-Ne.getTime())/864e5+1)/7);return`${qe.getUTCFullYear()}-W${String(Vt).padStart(2,"0")}`};return{dates:{...(()=>{const ye=new Date,Ie=ye.getDay(),qe=Ie===0?-6:1-Ie,Ke=new Date(ye);Ke.setDate(ye.getDate()+qe);const Ne=Pt=>{const Tt=Pt.getFullYear(),Lt=String(Pt.getMonth()+1).padStart(2,"0"),Ht=String(Pt.getDate()).padStart(2,"0");return`${Tt}-${Lt}-${Ht}`},Vt={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return["mon","tue","wed","thu","fri","sat","sun"].forEach((Pt,Tt)=>{const Lt=new Date(Ke);Lt.setDate(Ke.getDate()+Tt),Vt[Pt]=Ne(Lt)}),Vt})(),...je||{}},parseToIsoWeekKey:E}},[je]),Xe=E=>{const c=E.scheduledDate||null;return c?new Map([[ut.dates.mon,"mon"],[ut.dates.tue,"tue"],[ut.dates.wed,"wed"],[ut.dates.thu,"thu"],[ut.dates.fri,"fri"],[ut.dates.sat,"sat"],[ut.dates.sun,"sun"]]).get(c)||"__offweek":"backlog"},lt=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 qe=n==="status"?Ze(Ie):Ie[n],Ke=String(qe??"");if(!Ke||E.has(Ke)||c.has(Ke))return null;if(n==="category"){const Ne=de.find(Vt=>Vt.value===Ke||Vt.label===Ke);return{value:Ke,label:Ne?.label||Ke,icon:Ne?.icon||"Folder",color:Ne?.color}}if(n==="type"){const Ne=i?.find(Vt=>Vt.value===Ke||Vt.label===Ke);return{value:Ke,label:Ne?.label||Ke,icon:Ne?.icon||"CheckSquare",color:Ne?.color}}if(n==="priority"){const Ne=d?.find(Vt=>Number(Vt.value)===Number(Ke));return{value:Number.isFinite(Number(Ke))?Number(Ke):Ke,label:Ne?.label||Ke,icon:Ne?.icon||"Flag",color:Ne?.color}}if(n==="complexity")return{value:Number.isFinite(Number(Ke))?Number(Ke):Ke,label:Ke,icon:"Gauge"};if(n==="status")return{value:Ke,label:Ke,icon:"Circle"};if(n==="assignee"){const Ne=y.find(Vt=>Vt.value===Ke);return{value:Ke,label:Ne?.label||Ke,icon:Ne?.icon==="HelpCircle"?"Circle":Ne?.icon,color:Ne?.color}}return{value:Ke,label:Ke}};for(const Ie of e){const qe=ye(Ie);qe&&(Y.push(qe),E.add(String(qe.value)),c.add(qe.label))}return Y},[y,de,n,t,d,e,i]),re=r.useMemo(()=>[...t,...lt],[lt,t]),it=r.useMemo(()=>{const E=new Map;for(const c of re)E.set(String(c.value),c),E.has(c.label)||E.set(c.label,c);return E},[re]),Ye=r.useMemo(()=>{const E={};return re.forEach(Y=>{E[String(Y.value)]=0}),(me.length>0?me:e).forEach(Y=>{let ye="";if(n==="status")ye=Ze(Y);else if(n==="schedule")ye=Xe(Y);else{const qe=Y[n];ye=String(qe??"")}const Ie=it.get(ye);if(Ie&&E[String(Ie.value)]++,n==="schedule"){const qe=Y.status==="done"||Y.status==="cancelled";Y.scheduledDate&&!qe&&Y.scheduledDate<Ct&&it.has("expired")&&(E.expired=(E.expired||0)+1)}}),E},[me,e,re,n,it,Ct]),jt=r.useMemo(()=>{const E={};if(re.forEach(c=>{E[String(c.value)]=[]}),e.forEach(c=>{let Y="";if(n==="status")Y=Ze(c);else if(n==="schedule")Y=Xe(c);else{const Ie=c[n];Y=String(Ie??"")}const ye=it.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 qe=typeof ye.orderInDay=="number"?ye.orderInDay:Number.MAX_SAFE_INTEGER,Ke=typeof Ie.orderInDay=="number"?Ie.orderInDay:Number.MAX_SAFE_INTEGER;return qe!==Ke?qe-Ke:String(ye.createdAt||"").localeCompare(String(Ie.createdAt||""))},Y=(ye,Ie)=>fm(ye,Ie,Pe,Ce,l);Object.keys(E).forEach(ye=>{if(ye==="backlog"||ye==="expired"){E[ye].sort(Y);return}E[ye].sort(c)})}return E},[e,me,re,n,it,nt,Ct,Pe,Ce]),kt=te?Te(te):null,It=kt?e.find(E=>E.id===kt):null,Ft=r.useRef(null),Nt=r.useRef(null),Fe=r.useRef({pointerId:null,startX:0,startY:0,startScrollLeft:0,didPan:!1}),et=r.useRef(-1),Ge=(E,c)=>M?n==="category"?!A.includes(String(E)):n==="type"?!K.includes(String(E)):n==="priority"?!ue.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,Qe=r.useMemo(()=>{let ye=0;return re.forEach((Ie,qe)=>{const Ke=jt[String(Ie.value)]||[],Ne=Ge(Ie.value,Ie.label),Vt=n!=="schedule"&&se==="hide"&&Ke.length===0;if(Ne||Vt)return;const qt=se==="collapse"&&Ke.length===0;ye+=qt?72:320,ye+=4}),ye},[re,jt,se,n,A,K,ue,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=Nt.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))},qe=()=>{!c||Y||(ye=!0,c.scrollLeft=E.scrollLeft,yt(E.scrollLeft),setTimeout(()=>ye=!1,0))};return c.addEventListener("scroll",Ie),E.addEventListener("scroll",qe),()=>{c.removeEventListener("scroll",Ie),E.removeEventListener("scroll",qe)}},[yt]);const ot=r.useRef(!1);r.useEffect(()=>{if(ot.current)return;if(typeof ce!="number"||!Number.isFinite(ce)){ot.current=!0;return}const E=Ft.current,c=Nt.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,ot.current=!0},[ce,Qe]),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)}},[Qe,re.length,jt]),r.useEffect(()=>{const E=Y=>{const ye=Fe.current;if(ye.pointerId===null||ye.pointerId!==Y.pointerId)return;const Ie=Y.clientX-ye.startX,qe=Y.clientY-ye.startY;if(!ye.didPan){if(Math.abs(Ie)<7||Math.abs(Ie)<Math.abs(qe))return;ye.didPan=!0,be(!0),document.body.style.userSelect="none"}const Ke=ye.startScrollLeft-Ie;Ft.current&&(Ft.current.scrollLeft=Ke),Nt.current&&(Nt.current.scrollLeft=Ke),Y.preventDefault()},c=()=>{const Y=Fe.current;Y.pointerId!==null&&(Y.pointerId=null,Y.didPan=!1,G&&(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=""}},[G]);const ae=E=>{!z||E.target?.closest('button, a, input, select, textarea, [role="button"], [data-no-header-pan="true"]')||(Fe.current.pointerId=E.pointerId,Fe.current.startX=E.clientX,Fe.current.startY=E.clientY,Fe.current.startScrollLeft=Ft.current?.scrollLeft||0,Fe.current.didPan=!1)},Ve=E=>{N(E.active.id)},bt=E=>{const c=dt(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,N(null);const ye=dt(c),Ie=ye.type,qe=String(Y?.data?.current?.type||""),Ke=ye.taskId,Ne=ye.workstreamId,Vt=String(Y?.data?.current?.workstreamId||""),qt=String(Y?.data?.current?.initiativeId||"");if(Ie==="task-card"&&qe==="planning-workstream-target"&&Ke&&Vt){U?.(Ke,Vt);return}if(Ie==="planning-workstream"){if(qe==="planning-initiative-target"&&Ne&&qt){I?.(Ne,qt);return}return}const Pt=String(c.id),Tt=Y?String(Y.id):null,Lt=Te(Pt);Tt&&Te(Tt);const Ht=e.find(he=>he.id===Lt);if(!Ht||!Tt)return;const sa=Dt(Pt),Ka=String(c?.data?.current?.sortable?.containerId||"")||sa,en=String(Y?.data?.current?.sortable?.containerId||"")||Dt(Tt);if(!en)return;const ba=it.get(en)||re.find(he=>String(he.value)===en||he.label===en);if(ba){if(n==="schedule"){const xe=String(ba.value),Rt=Tt&&Ee(Tt)?Te(Tt):null,tt=Y?.rect,ga=c.rect.current.translated||c.rect.current.initial,Ea=!!(tt&&ga&&ga.top+ga.height/2>tt.top+tt.height/2),ma=(jt[xe]||[]).filter(aa=>aa.id!==Lt),ia=(jt[String(Ka)]||[]).filter(aa=>aa.id!==Lt),Mt=SW({activeTask:Ht,sourceColumnId:Ka,targetColumnId:xe,targetTasks:ma,sourceTasks:ia,overTaskId:Rt,isBelowOverItem:Ea,scheduleDates:ut.dates,parseToIsoWeekKey:ut.parseToIsoWeekKey,todayDate:Ct});if(!Mt)return;if(Mt.kind==="blocked"){window.alert(Mt.reason);return}Mt.updates.forEach(({taskId:aa,updates:Za})=>k(aa,Za)),Mt.selectedDate&&oe?.(Mt.selectedDate);return}let he=ba.value;if(n==="status"){const xe=String(he),Rt=hW(Ht,xe,new Date().toISOString());Rt&&k(Ht.id,Rt);return}(n==="priority"||n==="complexity")&&(he=Number(he));const ct=Ht[n];if(String(ct??"")!==String(he??"")){const xe={[n]:he};k(Ht.id,xe)}}},Dt=E=>{if(it.has(E)){const ye=it.get(E);return ye?String(ye.value):E}if(n==="schedule"&&E.startsWith(Xu))return"expired";const c=Te(E),Y=e.find(ye=>ye.id===c);if(Y){let ye="";n==="status"?ye=Ze(Y):n==="schedule"?ye=Xe(Y):ye=String(Y[n]??"");const Ie=it.get(ye);return Ie?String(Ie.value):null}return null},Ue={sideEffects:uv({styles:{active:{opacity:"0"}}})},Et=E=>{try{const c=cv(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 Ee(qt)&&qt!==te});if(Ie.length===0){const qt=c.filter(Lt=>{const Ht=String(Lt.id);return!Ee(Ht)}).find(Lt=>!!Dt(String(Lt.id)))||null,Pt=qt?Dt(String(qt.id)):null,Tt=(E.droppableContainers||[]).filter(Lt=>{const Ht=String(Lt.id);return!Ee(Ht)||Ht===te?!1:Pt?Dt(Ht)===Pt:!0});if(Tt.length>0){const Lt=Jf({...E,droppableContainers:Tt});if(Lt.length>0)return[Lt[0]]}return qt?[qt]:[c[0]]}const qe=Ie;let Ke=qe[0],Ne=Number.POSITIVE_INFINITY;for(const Vt of qe){const qt=E.droppableRects?.get(Vt.id);if(!qt)continue;const Pt=qt.left+qt.width/2,Tt=qt.top+qt.height/2,Lt=ye.x-Pt,Ht=ye.y-Tt,sa=Lt*Lt+Ht*Ht;sa<Ne&&(Ne=sa,Ke=Vt)}return[Ke]}return Jf(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:_,onToggleComplete:C,onToggleCancel:x,onSetStatus:W,onArchiveTask:V,onUnarchive:B,onDelete:J,onOpenTaskById:h,categories:de,readOnlyMode:$,changedTaskIdSet:ee,resolveTaskHierarchy:Se,groupBy:n,showStatusLabel:b};return a.jsxs(yg,{sensors:St,collisionDetection:Et,onDragStart:Ve,onDragOver:bt,onDragEnd:Ot,onDragCancel:E=>{gt.current=null,N(null)},children:[De,a.jsxs("div",{className:p.kanbanWrapper,children:[a.jsx("div",{ref:Nt,className:`${p.kanbanTopScroll} tf-scrollbar`,children:a.jsx("div",{className:p.kanbanTopScrollSpacer,style:{width:`${Qe}px`}})}),a.jsx("div",{className:p.kanbanContainer,ref:Ft,children:re.map(E=>{const c=jt[String(E.value)]||[],Y=Ge(E.value,E.label),ye=n!=="schedule"&&se==="hide"&&c.length===0,Ie=n==="schedule",qe=Ie&&re.some(Ht=>String(Ht.value)==="backlog"),Ke=Ie&&String(E.value)==="backlog",Ne=Ie&&String(E.value)==="expired",Vt=jt.backlog||[],Pt=se==="collapse"&&Vt.length===0?72:320,Tt=Ke?0:Ne?qe?Pt+4:0:void 0,Lt=Ke?6:Ne?5:void 0;return Y||ye?null:a.jsx(bW,{id:String(E.value),title:E.label,color:E.color,icon:E.icon,tasks:c,activeId:te,activeTaskId:kt,totalCount:Ye[String(E.value)],onAddTask:()=>ve?.(n,E.value),onTaskClick:S,commonCardProps:vt,collapseEmpty:se==="collapse",compressed:ge,onHeaderPointerDown:ae,isHeaderPanning:G,headerPanEnabled:z,stickyLeft:Tt,stickyZIndex:Lt,isPast:!!E.isPast,isSelected:!!E.isSelected,isWeekend:!!E.isWeekend,disableSorting:!1,scheduleDate:n==="schedule"?ut.dates[String(E.value)]:void 0,onScheduleDaySelected:oe},String(E.value))})})]}),Yi.createPortal(a.jsx(iv,{dropAnimation:Ue,children:It?(()=>{const{taskWorkstream:E,taskInitiative:c}=Se(It);return a.jsx(bd,{task:It,taskWorkstream:E,taskInitiative:c,isOverlay:!0,...vt,isArchived:It.isArchived,categories:de,compressed:ge,isRecentlyChanged:ee.has(It.id)})})():null}),document.body)]})}function bW({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:_=!1,stickyLeft:C,stickyZIndex:x,isPast:W=!1,isSelected:V=!1,isWeekend:B=!1,disableSorting:J=!1,scheduleDate:me,onScheduleDaySelected:ve}){const{setNodeRef:se}=rf({id:e,data:{type:"Column"}}),A=S&&o.length===0,K=i?o.filter(O=>O.id!==i):o,ue=typeof C=="number",pe=r.useRef(null),X=O=>e==="expired"?`${Xu}${O}`:O,M=O=>{if(!me||!ve)return;const de=O.target;de&&(de.closest('[data-task-card="true"]')||de.closest(`.${p.kanbanCardWrapper}`)||ve(me))};return a.jsxs("div",{ref:se,className:`${p.kanbanColumn} ${A?p.kanbanColumnCollapsed:""} ${ue?p.kanbanColumnSticky:""} ${W?p.kanbanColumnPast:""} ${V?p.kanbanColumnSelectedDay:""} ${B?p.kanbanColumnWeekend:""}`,style:ue?{left:`${C}px`,zIndex:x??4}:void 0,onClick:M,children:[a.jsxs("div",{className:`${p.kanbanHeader} ${_?p.kanbanHeaderDraggable:""} ${v?p.kanbanHeaderPanning:""}`,style:{borderTopColor:Nn(n)||"var(--color-purple)"},onPointerDown:g,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0,overflow:"hidden"},children:[(()=>{const O=s&&tc[s]?tc[s]:jo,de=Nn(n)||"var(--color-purple)";return a.jsx(O,{size:16,style:{color:de}})})(),!A&&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:[(!A||d>0)&&a.jsx("span",{className:p.kanbanCount,children:A?d:`${o.length} / ${d}`}),!k.readOnlyMode&&a.jsx("button",{className:"tf-control-icon tf-control-icon-compact",onClick:O=>{O.stopPropagation(),m()},title:`Add task to ${t}`,"aria-label":`Add task to ${t}`,"data-no-header-pan":"true",children:a.jsx(ao,{size:14})})]})]}),a.jsx("div",{className:p.kanbanDroppable,children:a.jsx("div",{className:`${p.kanbanDroppableScroll} ${p.appScrollbar} tf-scrollbar`,ref:pe,children:J?K.map(O=>a.jsx("div",{className:p.kanbanCardWrapper,children:(()=>{const{taskWorkstream:de,taskInitiative:ge}=k.resolveTaskHierarchy?.(O)||{};return a.jsx(bd,{task:O,taskWorkstream:de,taskInitiative:ge,onClick:y,...k,isArchived:O.isArchived,readOnlyMode:k.readOnlyMode||null,compressed:h,isRecentlyChanged:!1})})()},O.id)):a.jsx(kg,{id:e,items:K.map(O=>X(O.id)),strategy:vg,children:K.map(O=>a.jsx(_W,{sortableId:X(O.id),task:O,onClick:y,commonCardProps:k,compressed:h,isRecentlyChanged:k.changedTaskIdSet?.has(O.id)},X(O.id)))})})})]})}function _W({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}=wg({id:e,disabled:i,data:{type:"task-card",taskId:t.id}}),g={transform:nf.Transform.toString(k),transition:S,opacity:h?0:1,pointerEvents:h?"none":"auto"},v=s?.groupBy==="schedule",_=!v&&l;return a.jsx("div",{ref:y,style:g,...i?{}:d,...i?{}:m,className:`${p.kanbanCardWrapper} ${_?p.kanbanCardWrapperRaised:""}`,children:(()=>{const{taskWorkstream:C,taskInitiative:x}=s.resolveTaskHierarchy?.(t)||{};return a.jsx(bd,{task:t,taskWorkstream:C,taskInitiative:x,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 AW(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 xW(e){const t=e.runtimeMode==="local"&&e.isAuthenticated;if(t){const n=AW(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 Sm(e,t){return e==="deleted"?!1:e==="archived"?t:!t}function IW(e,t,n){const s=t.filter(d=>Sm(n,!!d.isArchived)),o=n==="deleted"?[]:e.filter(d=>Sm(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 Dy(e){return typeof e.occurredAt=="string"&&e.occurredAt.trim().length>0?e.occurredAt:"unknown-time"}function TW(e){return typeof e.eventType=="string"&&e.eventType.trim().length>0?e.eventType.trim():"sync"}function RW(e){const t=Im(e.details),n=t?t.source:null;return typeof n=="string"?n.trim():""}function Uh(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 zh(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 jW(e){const t=Dy(e),n=Im(e.details),s=RW(e);return s==="retry.blocked"?`${t} manual retry blocked: ${Uh(n?.reason)} during ${zh(n?.phase)}`:s==="repair.started"?`${t} manual repair started: ${zh(n?.repairPhase)} selected`:s==="repair.blocked"?`${t} manual repair blocked: ${Uh(n?.reason)}`:null}function al(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(),yw(e.details),String(t)].join("|")}function NW(e,t,n=15){const s=new Map;for(const[o,l]of e.entries())s.set(al(l,o),l);for(const[o,l]of t.entries())s.set(al(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 PW(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(al(e[n],n)!==al(t[n],n))return!1;return!0}function Ly(e){const t=jW(e);if(t)return t;const n=Dy(e),s=TW(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 Yp(e){if(!e)return"Never";const t=new Date(e);return Number.isNaN(t.getTime())?"Never":t.toLocaleString()}function MW(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 By(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 EW(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:Yp(e.aiProfileSnapshotLastFetchAt)},{label:"AI snapshot fetch error",value:e.aiProfileSnapshotLastFetchError||"None"},{label:"AI snapshot skip reason",value:e.aiProfileSnapshotLastSkipReason||"None"}]}function DW({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:al(s,o),text:Ly(s),tone:s.status==="error"?"error":"default"}))}function Wy(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 LW(e){return Wy(e).length}function BW(e){return Wy(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:al(t,n),pathLabel:y,refsLabel:k}})}function WW({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: ${Yp(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: ${Yp(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(_=>Ly(_));return[...g,"","Recent sync events",...v.length>0?v:["No recent sync events recorded."]].join(`
|
|
5
|
+
`)}const Hh="/api/taskforce/account/profile-summary",FW=9e4,qc=new Map;function Ku(){return typeof performance<"u"?performance.now():Date.now()}function Fy(e,t){const n=String(e||"").trim();if(!n)return"";const s=String(t||"").trim();return s?`${n}::${s}`:n}function Gh(e,t){qc.delete(Fy(e,t?.identityKey))}async function OW(e,t){const n=String(e||"").trim(),s=Fy(e,t?.identityKey);if(!s||!n)return null;const o=t?.force===!0,l=Date.now(),i=qc.get(s);if(!o&&i?.payload!==void 0&&l-i.fetchedAt<FW)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=Ku(),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 qc.set(s,{payload:S,fetchedAt:Date.now(),promise:null}),zt("account_profile_summary_loaded",{url:n,cacheKey:s,durationMs:Math.round(Ku()-d),fromCache:!1}),S})().catch(y=>{const k=i?.payload??null;if(k)return qc.set(s,{payload:k,fetchedAt:i?.fetchedAt??Date.now(),promise:null}),zt("account_profile_summary_failed",{url:n,cacheKey:s,durationMs:Math.round(Ku()-d),error:y instanceof Error?y.message:String(y||"Unknown error"),returnedStale:!0}),k;throw qc.delete(s),zt("account_profile_summary_failed",{url:n,cacheKey:s,durationMs:Math.round(Ku()-d),error:y instanceof Error?y.message:String(y||"Unknown error"),returnedStale:!1}),y});return qc.set(s,{payload:i?.payload??null,fetchedAt:i?.fetchedAt??0,promise:m}),m}const $W=1024,UW=5*1024*1024,zW=[.9,.82,.74,.66,.58],HW=[.9,.82,.74,.66,.58],GW=[1,.85,.7,.55,.4],VW=new Set(["image/png","image/jpeg","image/webp"]);function qW(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 KW(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 ZW(e){const t=qW(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 YW={loadImage:KW,renderToBlob:ZW};function Vh(e,t){return e==="image/png"?".png":e==="image/jpeg"?".jpg":e==="image/webp"?".webp":(t.includes(".")?t.slice(t.lastIndexOf(".")):"")||".img"}function qh(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 JW(e){const t=e==="image/jpeg"?"image/jpeg":"image/webp";return Array.from(new Set([t,"image/webp","image/jpeg"]))}function QW(e){return e==="image/webp"?zW:e==="image/jpeg"?HW:[void 0]}async function XW(e,t,n=YW){const s=Number.isFinite(t?.maxBytes)&&(t?.maxBytes||0)>0?Math.floor(t?.maxBytes):UW,o=Number.isFinite(t?.maxDimension)&&(t?.maxDimension||0)>0?Math.floor(t?.maxDimension):$W;if(e.size<=s)return{file:e,optimized:!1,exceededLimit:!1};if(!VW.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 GW){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 JW(e.type))for(const _ of QW(v)){const C=await n.renderToBlob({image:l,width:h,height:g,type:v,quality:_});if((!m||C.size<m.size)&&(m=C),C.size<=s)return{file:new File([C],qh(e.name,Vh(C.type||v,e.name)),{type:C.type||v,lastModified:e.lastModified}),optimized:!0,exceededLimit:!1}}}if(!m)return{file:e,optimized:!1,exceededLimit:!0};const y=new File([m],qh(e.name,Vh(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 Jp="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg2IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1IDg3LjY1ODkyMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMSIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICAgIGlkPSJkZWZzMSIgLz48ZwogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMwLjk2ODgxLC04NzIuMDY2NjgpIj48ZwogICAgICAgaWQ9ImcxLTctMS02LTItMS05IgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aAogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIKICAgICAgICAgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiCiAgICAgICAgIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJUIiAvPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmVuZDtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6ZW5kO2ZpbGw6I2ZmOGEwMDtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZmOGEwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIgogICAgICAgICBkPSJtIDE1My41Mzg4OCwxNjQuNTI2NiBoIC0zLjUwNjc0IHYgLTEzLjYzNzMzIGggMTAuODEyNDUgdiAyLjcyNzQ2IGggLTcuMzA1NzEgdiAzLjIxNDUyIGggNS43NDcxNiB2IDIuNzI3NDYgaCAtNS43NDcxNiB6IgogICAgICAgICBpZD0idGV4dDEtOS04LTQtMy03LTItNyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",Oy="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg5IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1OCA4Ny42NTg5MjMiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnMKICAgICBpZD0iZGVmczEiIC8+PGcKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcKICAgICAgIGlkPSJnMS03LTEtNi0yLTEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCg0Ljk4MTU0NzksMCwwLDQuOTg1NTgyMiwtNjkwLjYwODc4LDQ2LjUyNDE0OCkiPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTQ5LjQ0MDY2LDE2MS4xOTUwNSBoIC0zLjUwNjc0IHYgLTEwLjkwOTg2IGggLTQuMDkxMiB2IC0yLjcyNzQ3IGggMTEuNjg5MTQgdiAyLjcyNzQ3IGggLTQuMDkxMiB6IgogICAgICAgICBpZD0idGV4dDEtNC0zLTMtMS0wIgogICAgICAgICB0cmFuc2Zvcm09InNrZXdYKC0xNSkiCiAgICAgICAgIGFyaWEtbGFiZWw9IlQiIC8+PHBhdGgKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiCiAgICAgICAgIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",Kh="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjEwMDAiPjxzdHlsZT4KICAgICNsaWdodC1pY29uIHsKICAgICAgZGlzcGxheTogaW5saW5lOwogICAgfQogICAgI2RhcmstaWNvbiB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAjbGlnaHQtaWNvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAjZGFyay1pY29uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICAgIH0KICAgIH0KICA8L3N0eWxlPjxnIGlkPSJsaWdodC1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODkyNTA0ODkwMzI3LDAsMCwyLjcyNzE4OTI1MDQ4OTAzMjcsMCw0OC4yMjgzNzgzMTg2MzgxOSkiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzNjYuNjc3ODkiIGhlaWdodD0iMzMxLjMwOTMzIiB2aWV3Qm94PSIwIDAgOTcuMDE2ODU4IDg3LjY1ODkyMyIgaWQ9InN2ZzEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzIGlkPSJkZWZzMSI+PC9kZWZzPjxnIGlkPSJsYXllcjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcgaWQ9ImcxLTctMS02LTItMSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTY5MC42MDg3OCw0Ni41MjQxNDgpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIiBkPSJtIDE0OS40NDA2NiwxNjEuMTk1MDUgaCAtMy41MDY3NCB2IC0xMC45MDk4NiBoIC00LjA5MTIgdiAtMi43Mjc0NyBoIDExLjY4OTE0IHYgMi43Mjc0NyBoIC00LjA5MTIgeiIgaWQ9InRleHQxLTQtMy0zLTEtMCIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJGIj48L3BhdGg+PC9nPjwvZz48L3N2Zz48L2c+PC9nPjwvc3ZnPjwvZz48ZyBpZD0iZGFyay1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODk0NzM2MTU4ODcsMCwwLDIuNzI3MTg5NDczNjE1ODg3LDAsNDguMjI4MzQxMzU2NjMzOTA1KSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2Ni42Nzc4NiIgaGVpZ2h0PSIzMzEuMzA5MzMiIHZpZXdCb3g9IjAgMCA5Ny4wMTY4NSA4Ny42NTg5MjMiIGlkPSJzdmcxIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcyBpZD0iZGVmczEiPjwvZGVmcz48ZyBpZD0ibGF5ZXIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzAuOTY4ODEsLTg3Mi4wNjY2OCkiPjxnIGlkPSJnMS03LTEtNi0yLTEtOSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMi03IiB0cmFuc2Zvcm09InNrZXdYKC0xNSkiIGFyaWEtbGFiZWw9IkYiPjwvcGF0aD48L2c+PC9nPjwvc3ZnPjwvZz48L2c+PC9zdmc+PC9nPjwvc3ZnPg==";function e4({projectName:e,currentWorkspaceId:t,brandLabel:n="TaskForce",brandHomeLabel:s="Go to Kanban",onBrandClick:o,runtimeMode:l="local",theme:i=rm,meta:d,actions:m}){const y=Tg(i)?Oy:Jp,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 x=navigator.clipboard;x?.writeText&&x.writeText(S).catch(()=>{})},_=x=>{x.key!=="Enter"&&x.key!==" "||(x.preventDefault(),v())},C=a.jsxs(a.Fragment,{children:[a.jsx("img",{src:y,alt:"Taskforce Logo",className:p.brandIcon,onError:x=>{const W=x.currentTarget;W.src!==Kh?W.src=Kh:W.style.display="none"}}),a.jsx("span",{children:n}),l==="cloud"&&a.jsx("span",{className:p.brandCloudSuffix,children:"HQ"})]});return a.jsxs("div",{className:`${p.header} ${ta.standaloneHeader}`,children:[a.jsxs("div",{className:`${p.headerTitle} ${ta.standaloneTitle}`,children:[o?a.jsx("button",{type:"button",className:p.brandHomeButton,onClick:o,title:s,"aria-label":s,children:C}):a.jsx("span",{className:p.brandHomeStatic,children:C}),g&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:p.projectSlash,children:"/"}),a.jsx("span",{className:p.projectName,title:S?`Workspace ID: ${S}`:void 0,role:S?"button":void 0,tabIndex:S?0:void 0,onClick:v,onMouseDown:x=>x.preventDefault(),onKeyDown:_,children:k})]}),d]}),a.jsx("div",{className:p.headerActions,style:{gap:"16px"},children:m})]})}function t4({value:e,placeholder:t,active:n=!1,onChange:s,onClear:o,clearTitle:l}){return a.jsxs("div",{className:p.searchContainer,style:{width:"240px"},children:[a.jsx($k,{size:16,className:p.searchIcon}),a.jsx("input",{type:"text",className:`${p.searchInput} ${n?p.searchActive:""}`,placeholder:t,value:e,onChange:i=>s(i.target.value)}),e&&o&&a.jsx("button",{className:p.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:p.groupByContainer,style:l?{width:l}:void 0,children:[a.jsx("span",{className:p.groupByLabel,children:e}),a.jsx("select",{className:`${p.select} ${p.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 Ap({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 Yh(){return a.jsx("div",{className:p.headerDivider})}function a4({icon:e,label:t,onClick:n,disabled:s=!1}){return a.jsxs("button",{className:p.primaryUpdateBtn,onClick:n,disabled:s,children:[e," ",t]})}function xf({children:e}){return a.jsx("div",{className:p.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 n4(){return a.jsx(xf,{children:a.jsx("div",{"aria-hidden":"true",style:{minHeight:"32px",flex:1}})})}function r4({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:_=[],selectedInitiativeId:C="",setSelectedInitiativeId:x=()=>{},workstreamFilterOptions:W=[],selectedWorkstreamId:V="",setSelectedWorkstreamId:B=()=>{},taskScope:J,setTaskScope:me,showArchive:ve,setShowArchive:se,fetchArchive:A,onDeleteAllDeleted:K,clearFilters:ue}){return a.jsxs(a.Fragment,{children:[a.jsx(vy,{}),a.jsx(Ki,{label:s?.category||He("standalone.categoryLabel"),options:e,selected:o,onChange:pe=>l(pe),variant:"value"}),a.jsx(Ki,{label:s?.type||He("standalone.typeLabel"),options:t,selected:i,onChange:pe=>d(pe),variant:"value"}),a.jsx(Ki,{label:s?.priority||He("standalone.priorityLabel"),options:n,selected:m,onChange:pe=>y(pe),variant:"value"}),a.jsx(Ki,{label:He("standalone.statusLabel"),options:eo,selected:k,onChange:pe=>S(pe),variant:"value"}),a.jsx(Ki,{label:He("standalone.assigneeLabel"),options:v,selected:h,onChange:pe=>g(pe),variant:"value"}),a.jsx("div",{className:p.headerDivider,style:{height:"16px",margin:"0 8px"}}),a.jsx(Mh,{label:"Initiative",options:_,selected:C,onChange:x,allLabel:"All Initiatives",title:"Filter by initiative"}),a.jsx(Mh,{label:"Workstream",options:W,selected:V,onChange:B,allLabel:"All Workstreams",title:"Filter by workstream"}),a.jsx(wy,{scope:J,onScopeChange:pe=>{me(pe),pe==="archived"?(se(!0),A()):ve&&se(!1)},className:p.groupByContainer,labelClassName:p.groupByLabel}),a.jsx("div",{style:{flex:1}}),J==="deleted"&&K&&a.jsx(by,{onClick:K,className:`${p.bulkArchiveBtn} ${p.taskToolbarAction} ${p.bulkDeleteBtn}`,title:"Empty trash",children:"Empty Trash"}),a.jsx(Sy,{onClick:ue})]})}function s4(e){return a.jsx(xf,{children:a.jsx(r4,{...e})})}const em=[{value:"implementation-plan",label:"Plans"},{value:"review",label:"Reviews"},{value:"walkthrough",label:"Walkthroughs"},{value:"planning",label:"Planning"},{value:"other",label:"Other"}],tm=[{value:"attached",label:"Attached"},{value:"unattached",label:"Unattached"}];function o4({typeFilters:e,setTypeFilters:t,attachmentFilters:n,setAttachmentFilters:s,clearFilters:o}){return a.jsxs(xf,{children:[a.jsx(vy,{}),a.jsx(Ki,{label:"Attachment",options:tm,selected:n,onChange:l=>s(l),variant:"value"}),a.jsx(Ki,{label:"Type",options:em,selected:e,onChange:l=>t(l),variant:"value"}),a.jsx("div",{style:{flex:1}}),a.jsx(Sy,{onClick:o})]})}const i4="_drawerBody_ljth8_1",c4="_paneShell_ljth8_9",l4="_collapsedPaneShell_ljth8_18",d4="_collapsedPaneHeader_ljth8_27",u4="_collapsedPaneLabel_ljth8_39",m4="_treePane_ljth8_49",p4="_treePaneSplit_ljth8_59",f4="_detailPane_ljth8_63",h4="_paneHeader_ljth8_73",g4="_paneHeaderLabel_ljth8_87",y4="_paneContent_ljth8_96",k4="_sectionTitle_ljth8_105",v4="_sectionHeaderRow_ljth8_113",S4="_headerActionGroup_ljth8_120",w4="_toggleActive_ljth8_127",b4="_sectionGroup_ljth8_133",_4="_treeList_ljth8_158",C4="_treeChildren_ljth8_164",A4="_treeRow_ljth8_172",x4="_treeRowDetailOpen_ljth8_184",I4="_treeRowDropReady_ljth8_190",T4="_treeRowDropActive_ljth8_194",R4="_treeRowDropMode_ljth8_200",j4="_treeChevron_ljth8_200",N4="_rowButton_ljth8_201",P4="_detailsButton_ljth8_202",M4="_treeRowDragging_ljth8_206",E4="_treeChevronPlaceholder_ljth8_230",D4="_rowContent_ljth8_252",L4="_rowTopRow_ljth8_262",B4="_referenceBadgeButton_ljth8_271",W4="_referenceBadgeStatic_ljth8_277",F4="_rowTitle_ljth8_298",O4="_rowMeta_ljth8_312",$4="_detailsButtonActive_ljth8_340",U4="_emptyPanel_ljth8_347",z4="_emptyPanelTitle_ljth8_356",H4="_emptyPanelText_ljth8_362",G4="_sectionNote_ljth8_368",V4="_detailHero_ljth8_375",q4="_detailReferenceRow_ljth8_382",K4="_detailTitle_ljth8_389",Z4="_detailDescription_ljth8_396",Y4="_detailActionRow_ljth8_407",J4="_metricGrid_ljth8_414",Q4="_metricCard_ljth8_421",X4="_editorCard_ljth8_426",eF="_editorField_ljth8_433",tF="_editorLabel_ljth8_439",aF="_editorHint_ljth8_445",nF="_editorActions_ljth8_450",rF="_metricValue_ljth8_456",sF="_metricLabel_ljth8_463",oF="_progressTrack_ljth8_470",iF="_progressFill_ljth8_478",cF="_listCard_ljth8_484",lF="_activityTimelineList_ljth8_493",dF="_activityTimelineEmpty_ljth8_502",uF="_deferredPanelFallback_ljth8_506",mF="_sectionDropReady_ljth8_532",pF="_sectionDropActive_ljth8_537",fF="_sectionDropMode_ljth8_543",hF="_attachReferenceRow_ljth8_547",gF="_attachReferenceInput_ljth8_554",yF="_listItem_ljth8_559",kF="_listItemButton_ljth8_568",vF="_detailCardButton_ljth8_577",SF="_listItemText_ljth8_582",wF="_listItemTitle_ljth8_597",bF="_listItemMeta_ljth8_611",_F="_detailChildCard_ljth8_616",CF="_detailChildCardArchived_ljth8_628",AF="_detailChildCardTopRow_ljth8_633",xF="_detailChildReferenceRow_ljth8_642",IF="_taskStatusIcon_ljth8_649",Ae={drawerBody:i4,paneShell:c4,collapsedPaneShell:l4,collapsedPaneHeader:d4,collapsedPaneLabel:u4,treePane:m4,treePaneSplit:p4,detailPane:f4,paneHeader:h4,paneHeaderLabel:g4,paneContent:y4,sectionTitle:k4,sectionHeaderRow:v4,headerActionGroup:S4,toggleActive:w4,sectionGroup:b4,treeList:_4,treeChildren:C4,treeRow:A4,treeRowDetailOpen:x4,treeRowDropReady:I4,treeRowDropActive:T4,treeRowDropMode:R4,treeChevron:j4,rowButton:N4,detailsButton:P4,treeRowDragging:M4,treeChevronPlaceholder:E4,rowContent:D4,rowTopRow:L4,referenceBadgeButton:B4,referenceBadgeStatic:W4,rowTitle:F4,rowMeta:O4,detailsButtonActive:$4,emptyPanel:U4,emptyPanelTitle:z4,emptyPanelText:H4,sectionNote:G4,detailHero:V4,detailReferenceRow:q4,detailTitle:K4,detailDescription:Z4,detailActionRow:Y4,metricGrid:J4,metricCard:Q4,editorCard:X4,editorField:eF,editorLabel:tF,editorHint:aF,editorActions:nF,metricValue:rF,metricLabel:sF,progressTrack:oF,progressFill:iF,listCard:cF,activityTimelineList:lF,activityTimelineEmpty:dF,deferredPanelFallback:uF,sectionDropReady:mF,sectionDropActive:pF,sectionDropMode:fF,attachReferenceRow:hF,attachReferenceInput:gF,listItem:yF,listItemButton:kF,detailCardButton:vF,listItemText:SF,listItemTitle:wF,listItemMeta:bF,detailChildCard:_F,detailChildCardArchived:CF,detailChildCardTopRow:AF,detailChildReferenceRow:xF,taskStatusIcon:IF},TF="_header_c26na_1",RF="_title_c26na_31",jF="_icon_c26na_40",xp={header:TF,title:RF,icon:jF};function NF({label:e,count:t,showZeroCount:n=!1,expanded:s,expandedTitle:o,collapsedTitle:l,onToggle:i,className:d=""}){const m=typeof t=="number"&&(n||t>0),y=s?nl:Xc;return a.jsxs("button",{type:"button",className:`${xp.header} ${d}`.trim(),onClick:i,"aria-expanded":s,title:s?o:l,children:[a.jsxs("span",{className:xp.title,children:[e,m?` (${t})`:""]}),a.jsx(y,{className:xp.icon,size:14,"aria-hidden":"true"})]})}const PF=Oe.lazy(()=>_s(()=>import("./EntityActivityTimeline-B2aXkxiE.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),MF=Oe.lazy(()=>_s(()=>import("./ContextAttachmentManager-B3hESx6y.js"),__vite__mapDeps([8,1,9,2,3,4,5])).then(e=>({default:e.ContextAttachmentManager}))),cd=332,Xs=392,Ip=56;function $y(e,t,n,s,o){return(e?Ip:cd)+(t?n?Ip:Xs:0)+(s?o?Ip:Xs:0)}function EF(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 Tp(e){return e?e.split(/[-_\s]+/g).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" "):"No status"}function ld({label:e,entityType:t,interactive:n=!0}){const[s,o]=Oe.useState(!1),l=Oe.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(ly,{copied:s,label:e,onClick:l,title:`Copy ${t} reference`,ariaLabel:s?`Copied ${t} reference`:`Copy ${t} reference`,className:Ae.referenceBadgeButton,children:e}):a.jsx("span",{className:`${p.taskIdBadge} ${Ae.referenceBadgeStatic}`.trim(),children:a.jsx("span",{children:e})})}function Rp({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}=bg(),g=String(h?.data?.current?.type||""),v=t==="workstream"&&g==="task-card",_=t==="initiative"&&g==="planning-workstream",C=t==="workstream"?"planning-workstream-target":"planning-initiative-target",{setNodeRef:x,isOver:W}=rf({id:`${C}:${e}`,data:t==="workstream"?{type:C,workstreamId:e}:{type:C,initiativeId:e}}),V=t==="workstream",{attributes:B,listeners:J,setNodeRef:me,transform:ve,isDragging:se}=mv({id:`planning-workstream:${e}`,data:{type:"planning-workstream",workstreamId:e},disabled:!V}),A=V&&ve?{transform:nf.Translate.toString(ve)}:void 0,K=v||_;return a.jsxs("div",{ref:x,style:A,className:`${Ae.treeRow} ${i?Ae.treeRowDetailOpen:""} ${K?Ae.treeRowDropReady:""} ${W?Ae.treeRowDropActive:""} ${se?Ae.treeRowDragging:""} ${K?Ae.treeRowDropMode:""}`,children:[d?a.jsx("button",{type:"button",className:Ae.treeChevron,onClick:y,title:m?"Collapse workstreams":"Expand workstreams",children:m?a.jsx(nl,{size:15}):a.jsx(Xc,{size:15})}):a.jsx("span",{className:`${Ae.treeChevron} ${Ae.treeChevronPlaceholder}`,"aria-hidden":"true"}),a.jsxs("div",{className:Ae.rowContent,children:[a.jsxs("div",{className:Ae.rowTopRow,children:[n?a.jsx(ld,{label:n,entityType:t}):a.jsx("span",{"aria-hidden":"true"}),a.jsx("button",{type:"button",className:`${Ae.detailsButton} ${l?Ae.detailsButtonActive:""}`,onClick:k,title:l?"Clear board scope":"Scope board to this item",children:a.jsx(fg,{size:14})})]}),a.jsxs("button",{type:"button",ref:V?me:void 0,className:Ae.rowButton,onClick:S,...V?B:{},...V?J:{},children:[a.jsx("span",{className:Ae.rowTitle,children:s}),a.jsx("span",{className:Ae.rowMeta,children:o})]})]})]})}function jp({label:e,onExpand:t}){return a.jsx("div",{className:`${Ae.paneShell} ${Ae.collapsedPaneShell}`.trim(),children:a.jsxs("div",{className:Ae.collapsedPaneHeader,children:[a.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:`Expand ${e}`,children:a.jsx(Xc,{size:16})}),a.jsx("span",{className:Ae.collapsedPaneLabel,children:e})]})})}function Jh(){return a.jsxs("div",{className:Ae.deferredPanelFallback,"aria-hidden":"true",children:[a.jsx("span",{}),a.jsx("span",{}),a.jsx("span",{})]})}function DF({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[_,C]=Oe.useState(!1),x=Oe.useCallback(B=>{if(!_)return B.workstreams;const J=new Set(B.workstreams.map(ve=>ve.id)),me=(B.allWorkstreams||[]).filter(ve=>!!ve.isArchived&&!J.has(ve.id));return[...B.workstreams,...me]},[_]),W=Oe.useMemo(()=>{if(!_)return t;const B=new Set(t.map(me=>me.id)),J=n.filter(me=>!!me.isArchived&&!B.has(me.id));return[...t,...J]},[n,_,t]),V=Oe.useMemo(()=>{const B=e.reduce((me,ve)=>me+(ve.allWorkstreams||[]).filter(se=>!!se.isArchived).length,0),J=n.filter(me=>!!me.isArchived).length;return B+J},[n,e]);return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:Ae.sectionGroup,children:[a.jsxs("div",{className:Ae.sectionHeaderRow,children:[a.jsx("div",{className:Ae.sectionTitle,children:"Initiatives"}),a.jsxs("div",{className:Ae.headerActionGroup,children:[V>0?a.jsx("button",{type:"button",className:`tf-control-icon ${_?Ae.toggleActive:""}`.trim(),title:_?"Hide archived workstreams in tray":"Show archived workstreams in tray","aria-label":_?"Hide archived workstreams in tray":"Show archived workstreams in tray","aria-pressed":_,onClick:()=>C(B=>!B),children:_?a.jsx(af,{size:15}):a.jsx(pg,{size:15})}):null,a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create initiative","aria-label":"Create initiative",onClick:m,children:a.jsx(ao,{size:15})})]})]}),a.jsx("div",{className:Ae.treeList,children:e.length===0?a.jsxs("div",{className:Ae.emptyPanel,children:[a.jsx("div",{className:Ae.emptyPanelTitle,children:"No initiatives yet"}),a.jsxs("div",{className:Ae.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),me=x(B),ve=B.workstreamCount||0,se=me.filter(ue=>!!ue.isArchived).length,K=`${_&&se>0?`${ve} workstreams + ${se} archived`:`${ve} workstreams`} • ${B.taskCount} tasks${B.isArchived?" • archived":""}`;return a.jsxs("div",{children:[a.jsx(Rp,{rowId:B.id,rowType:"initiative",referenceLabel:ns(B),title:B.title,meta:K,active:s===B.id&&!o,detailOpen:i?.type==="initiative"&&i.item.id===B.id,canExpand:me.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&&me.length>0&&a.jsx("div",{className:Ae.treeChildren,children:me.map(ue=>a.jsx(Rp,{rowId:ue.id,rowType:"workstream",referenceLabel:Po(ue),title:ue.title,meta:`${ue.taskCount} tasks • ${ue.progressPercent}% complete${ue.isArchived?" • archived":""}`,active:o===ue.id,detailOpen:i?.type==="workstream"&&i.item.id===ue.id||d?.kind==="detail"&&d.detail.item.id===ue.id,onToggleScope:()=>h(ue.id,B.id),onToggleDetails:()=>{if(d?.kind==="detail"&&d.detail.item.id===ue.id){v("");return}if(i?.type==="workstream"&&i.item.id===ue.id){v("");return}v(ue.id)}},ue.id))})]},B.id)})})]}),a.jsxs("div",{className:Ae.sectionGroup,children:[a.jsxs("div",{className:Ae.sectionHeaderRow,children:[a.jsx("div",{className:Ae.sectionTitle,children:"Workstreams"}),a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream","aria-label":"Create workstream",onClick:y,children:a.jsx(ao,{size:15})})]}),a.jsx("div",{className:Ae.treeList,children:W.length===0?a.jsxs("div",{className:Ae.emptyPanel,children:[a.jsx("div",{className:Ae.emptyPanelTitle,children:"No standalone workstreams yet"}),a.jsxs("div",{className:Ae.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(Rp,{rowId:B.id,rowType:"workstream",referenceLabel:Po(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 Qh({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:_,parentInitiative:C=null,assigneeOptions:x}){const[W,V]=Oe.useState(""),[B,J]=Oe.useState(!1),[me,ve]=Oe.useState(!0),{active:se}=bg(),A=String(se?.data?.current?.type||""),K=e.type==="workstream"&&A==="task-card",ue=e.type==="initiative"&&A==="planning-workstream",pe=e.type==="initiative"?"planning-initiative-target":"planning-workstream-target",{setNodeRef:X,isOver:M}=rf({id:`${pe}:detail:${e.item.id}`,data:e.type==="initiative"?{type:pe,initiativeId:e.item.id}:{type:pe,workstreamId:e.item.id}}),O=e.type==="initiative"?"Workstreams":"Tasks",de=Oe.useMemo(()=>{if(e.type!=="initiative")return[];const N=new Set(e.item.workstreams.map(be=>be.id)),G=(e.item.allWorkstreams||[]).filter(be=>!!be.isArchived&&!N.has(be.id));return[...e.item.workstreams,...G]},[e.item,e.type]),ge=Oe.useMemo(()=>e.type!=="workstream"?[]:e.item.tasks||[],[e.item,e.type]),$=e.type==="initiative"?de.filter(N=>!!N.isArchived).length:ge.filter(N=>!!N.isArchived).length,_e=B?de:de.filter(N=>!N.isArchived),je=B?ge:ge.filter(N=>!N.isArchived),oe=e.type==="initiative"?"Initiative":"Workstream",ce=e.type==="initiative"?ns(e.item):Po(e.item);Oe.useEffect(()=>{V(""),J(!1),ve(!0)},[e.item.id,e.type]);const Re=Oe.useCallback(()=>{const N=W.trim();N&&(e.type==="initiative"?h?.(e.item.id,N):S?.(e.item.id,N),V(""))},[W,e.item.id,e.type,S,h]),Pe=e.type==="initiative"?"Attach workstream to initiative":"Attach task to workstream",Ce=e.type==="initiative"?"archived workstreams":"archived tasks",De=e.type==="workstream"&&C?ns(C):"",U=Oe.useMemo(()=>{const N=new Map;for(const G of x){const be=String(G.value||"").trim();be&&(N.set(be,G),N.set(be.toLowerCase(),G))}return N},[x]),I=Oe.useCallback((N,G,be)=>{if(be&&be.trim())return be.trim();const z=String(N||"").trim();if(!z)return G==="ai"?"AI Agent":"You";const ie=U.get(z)||U.get(z.toLowerCase());return ie?.label?ie.label:z},[U]),b=Oe.useCallback(N=>{const G=String(N.actorId||"").trim(),be=U.get(G)||U.get(G.toLowerCase()),z=N.actorProfile||be||null,ie=N.actorType==="system"?"system":N.actorType==="ai"||z?.kind==="ai"||be?.kind==="agent"?"agent":N.actorType==="human"||z?.kind==="human"||be?.kind==="member"?"member":N.fallbackKind||"member",ee=String(z&&"icon"in z&&z.icon?z.icon:ie==="agent"?"Bot":ie==="member"?"User":"ClipboardList"),Q=tc[ee]||(ie==="agent"?am:ie==="member"?oi:dg);return{kind:ie,label:ie==="system"?"System":I(G,ie==="agent"?"ai":"human",z&&"label"in z&&z.label||null),color:z&&"color"in z&&z.color||void 0,ActorIcon:Q}},[U,I]),R=Oe.useCallback((N,G)=>{const be=String(G||"").trim();if(be){if(N==="ownerId")return U.get(be)?.label||U.get(be.toLowerCase())?.label||be;if(N==="initiativeId"&&C&&be===C.id)return ns(C)||C.title}},[U,C]),te=Oe.useMemo(()=>ky({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:Ae.detailHero,children:[ce?a.jsxs("div",{className:Ae.detailReferenceRow,children:[e.type==="workstream"?a.jsxs(a.Fragment,{children:[a.jsx(Zi,{onClick:N=>{if(N.stopPropagation(),De){k?.(e.item.id,null);return}s()},title:De?"Remove from initiative":"Attach to initiative",ariaLabel:De?"Remove from initiative":"Attach to initiative",children:De?a.jsx(Zu,{size:13}):a.jsx(nm,{size:13})}),a.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),De?a.jsxs(a.Fragment,{children:[a.jsx(ld,{label:De,entityType:"initiative"}),a.jsx("span",{className:p.taskHierarchyDivider,children:"/"})]}):null]}):null,a.jsx(ld,{label:ce,entityType:e.type})]}):null,a.jsx("h3",{className:Ae.detailTitle,children:e.item.title}),a.jsx("p",{className:Ae.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:Ae.progressTrack,"aria-label":`${e.item.progressPercent}% complete`,children:a.jsx("div",{className:Ae.progressFill,style:{width:`${e.item.progressPercent}%`}})}),a.jsxs("div",{className:Ae.detailActionRow,children:[a.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:s,children:a.jsxs("span",{children:["Edit ",oe]})}),e.item.isArchived?a.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:l,children:a.jsx("span",{children:"Unarchive"})}):a.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:o,children:a.jsx("span",{children:"Archive"})})]})]}),a.jsxs("div",{className:Ae.metricGrid,children:[a.jsxs("div",{className:Ae.metricCard,children:[a.jsx("span",{className:Ae.metricValue,children:e.item.taskCount}),a.jsx("span",{className:Ae.metricLabel,children:"Tasks in scope"})]}),a.jsxs("div",{className:Ae.metricCard,children:[a.jsx("span",{className:Ae.metricValue,children:e.item.completedTaskCount}),a.jsx("span",{className:Ae.metricLabel,children:"Done / terminal"})]}),a.jsxs("div",{className:Ae.metricCard,children:[a.jsx("span",{className:Ae.metricValue,children:e.item.ownerLabel||"Unassigned"}),a.jsx("span",{className:Ae.metricLabel,children:"Owner"})]}),a.jsxs("div",{className:Ae.metricCard,children:[a.jsx("span",{className:Ae.metricValue,children:(e.item.commentCount||0)+(e.item.attachmentCount||0)}),a.jsx("span",{className:Ae.metricLabel,children:"Context items"})]})]}),a.jsxs("div",{ref:X,className:`${Ae.listCard} ${K||ue?Ae.sectionDropReady:""} ${M?Ae.sectionDropActive:""} ${K||ue?Ae.sectionDropMode:""}`.trim(),children:[a.jsxs("div",{className:Ae.sectionHeaderRow,children:[a.jsx("div",{className:Ae.sectionTitle,children:O}),a.jsxs("div",{className:Ae.headerActionGroup,children:[$>0?a.jsx("button",{type:"button",className:`tf-control-icon ${B?Ae.toggleActive:""}`.trim(),title:B?`Hide ${Ce}`:`Show ${Ce}`,"aria-label":B?`Hide ${Ce}`:`Show ${Ce}`,"aria-pressed":B,onClick:()=>J(N=>!N),children:B?a.jsx(af,{size:15}):a.jsx(pg,{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(ao,{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(ao,{size:15})})]})]}),a.jsxs("div",{className:Ae.attachReferenceRow,children:[a.jsx(Zi,{onClick:N=>{N.stopPropagation(),Re()},disabled:!W.trim(),title:Pe,ariaLabel:Pe,children:a.jsx(nm,{size:13})}),a.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),a.jsx("input",{type:"text",className:`${p.input} ${Ae.attachReferenceInput}`.trim(),placeholder:e.type==="initiative"?"Paste workstream reference (e.g. WS-123)":"Paste task reference (e.g. T-123)",value:W,onChange:N=>V(N.target.value),onKeyDown:N=>{N.key==="Enter"&&(N.preventDefault(),Re())}})]}),e.type==="initiative"?_e.length>0?_e.map(N=>{const G=Po(N),be=()=>n?.(N.id);return a.jsx("div",{className:`${Ae.listItemButton} ${Ae.detailCardButton}`.trim(),children:a.jsxs("div",{className:`${Ae.listItem} ${Ae.detailChildCard} ${N.isArchived?Ae.detailChildCardArchived:""}`.trim(),children:[a.jsx("div",{className:Ae.detailChildCardTopRow,children:a.jsxs("div",{className:Ae.detailChildReferenceRow,children:[a.jsx(Zi,{onClick:z=>{z.stopPropagation(),k?.(N.id,null)},title:"Remove from initiative",ariaLabel:"Remove from initiative",children:a.jsx(Zu,{size:13})}),a.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),G?a.jsx(ld,{label:G,entityType:"workstream"}):a.jsx("span",{"aria-hidden":"true"})]})}),a.jsxs("div",{role:"button",tabIndex:0,className:Ae.listItemText,onClick:be,onKeyDown:z=>{z.key!=="Enter"&&z.key!==" "||(z.preventDefault(),be())},children:[a.jsx("span",{className:Ae.listItemTitle,children:N.title}),a.jsxs("span",{className:Ae.listItemMeta,children:[N.taskCount," tasks • ",N.progressPercent,"% complete",N.isArchived?" • archived":""]})]})]})},N.id)}):a.jsxs("div",{className:Ae.emptyPanel,children:[a.jsx("div",{className:Ae.emptyPanelTitle,children:"No workstreams yet"}),a.jsx("div",{className:Ae.emptyPanelText,children:"Add the first workstream to break the initiative into clearer lanes of execution."})]}):je.length>0?[...je].sort((N,G)=>{const be=pd(N.status).value==="done",z=pd(G.status).value==="done";return be===z?0:be?1:-1}).map(N=>{const G=N.referenceNumber?`T-${N.referenceNumber}`:"",be=pd(N.status),z=tc[be.icon||"Square"],ie=Nn(be.color)||"var(--text-secondary)",ee=()=>m?.(N.id),Q=`${Tp(N.status)}${N.isArchived?" • archived":""}`;return a.jsx("div",{className:`${Ae.listItemButton} ${Ae.detailCardButton}`.trim(),children:a.jsxs("div",{className:`${Ae.listItem} ${Ae.detailChildCard} ${N.isArchived?Ae.detailChildCardArchived:""}`.trim(),children:[a.jsxs("div",{className:Ae.detailChildCardTopRow,children:[a.jsxs("div",{className:Ae.detailChildReferenceRow,children:[a.jsx(Zi,{onClick:q=>{q.stopPropagation(),y?.(N.id,e.item.id)},title:"Remove from workstream",ariaLabel:"Remove from workstream",children:a.jsx(Zu,{size:13})}),a.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),G?a.jsx(ld,{label:G,entityType:"task"}):a.jsx("span",{"aria-hidden":"true"})]}),a.jsx("span",{className:Ae.taskStatusIcon,style:{color:ie},"aria-label":be.shortLabel||Tp(N.status),title:be.shortLabel||Tp(N.status),children:z?a.jsx(z,{size:18,strokeWidth:2.4}):null})]}),a.jsxs("div",{role:"button",tabIndex:0,className:Ae.listItemText,onClick:ee,onKeyDown:q=>{q.key!=="Enter"&&q.key!==" "||(q.preventDefault(),ee())},children:[a.jsx("span",{className:Ae.listItemTitle,children:N.title}),a.jsx("span",{className:Ae.listItemMeta,children:Q})]})]})},N.id)}):a.jsxs("div",{className:Ae.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:Ae.listCard,children:a.jsx(Oe.Suspense,{fallback:a.jsx(Jh,{}),children:a.jsx(MF,{ownerType:e.type,ownerId:e.item.id,ownerReferenceLabel:ce,workspaceId:t,attachments:e.item.attachments||[],onAddAttachment:N=>g?.(e.type,e.item.id,N),onRemoveAttachment:N=>v?.(e.type,e.item.id,N),onUpdateAttachmentCaption:(N,G)=>_?.(e.type,e.item.id,N,G)})})}),a.jsxs("div",{className:Ae.listCard,children:[a.jsx(NF,{label:"Recent Activity",count:te,showZeroCount:!0,expanded:me,expandedTitle:"Hide recent activity",collapsedTitle:"Show recent activity",onToggle:()=>ve(N=>!N)}),me?a.jsx(Oe.Suspense,{fallback:a.jsx(Jh,{}),children:a.jsx(PF,{activity:e.item.activity,comments:e.item.comments,formatFieldValue:R,resolveActorPresentation:b,onOpenTaskById:m,emptyMessage:`No ${e.type} activity yet.`,listClassName:Ae.activityTimelineList,emptyClassName:Ae.activityTimelineEmpty})}):null]})]})}function Xh({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 _=e.entityType==="initiative"?"Initiative":"Workstream",C=g?e.mode==="create"?`Creating ${_}...`:`Saving ${_}...`:e.mode==="create"?`Create ${_}`:`Save ${_}`,x=Oe.useMemo(()=>EF(l,s),[l,s]),W=Oe.useCallback(B=>{B.preventDefault(),h()},[h]),V=Oe.useCallback(()=>{e.mode!=="edit"||e.entityType!=="workstream"||v?.(e.targetId)},[e,v]);return a.jsxs("form",{className:Ae.editorCard,onSubmit:W,children:[a.jsxs("div",{className:Ae.editorField,children:[a.jsx("label",{className:Ae.editorLabel,children:"Title"}),a.jsx("input",{className:p.input,disabled:g,value:t,onChange:B=>d(B.target.value),placeholder:e.entityType==="initiative"?"Q3 Product Launch":"Content Production"})]}),a.jsxs("div",{className:Ae.editorField,children:[a.jsx("label",{className:Ae.editorLabel,children:"Description"}),a.jsx("textarea",{className:p.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:Ae.editorField,children:[a.jsx("label",{className:Ae.editorLabel,children:"Initiative"}),i&&a.jsxs("div",{className:Ae.editorHint,children:["Current: ",i.title]}),a.jsxs("div",{className:Ae.attachReferenceRow,children:[e.mode==="edit"&&a.jsxs(a.Fragment,{children:[a.jsx(Zi,{onClick:B=>{B.stopPropagation(),V()},disabled:g||!o.trim(),title:"Attach workstream to initiative",ariaLabel:"Attach workstream to initiative",children:a.jsx(nm,{size:13})}),a.jsx("span",{className:p.taskHierarchyDivider,children:"/"})]}),a.jsx("input",{type:"text",className:`${p.input} ${Ae.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:Ae.editorField,children:[a.jsx("label",{className:Ae.editorLabel,children:"Owner"}),a.jsxs("select",{className:`${p.select} ${p.groupBySelect}`,disabled:g,value:s,onChange:B=>y(B.target.value),children:[a.jsx("option",{value:"",children:"Unassigned"}),x.map(B=>a.jsx("option",{value:B.value,children:B.label},B.value))]})]}),a.jsxs("div",{className:Ae.editorActions,children:[a.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:S,disabled:g,children:"Cancel"}),a.jsx("button",{type:"submit",className:p.primaryUpdateBtn,disabled:g,children:C})]})]})}function LF({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:_,draftOwner:C,draftInitiativeId:x,onChangeDraftTitle:W,onChangeDraftDescription:V,onChangeDraftOwner:B,onChangeDraftInitiativeId:J,onCollapseTreePane:me,onExpandTreePane:ve,onCollapsePrimaryPane:se,onExpandPrimaryPane:A,onCollapseSecondaryPane:K,onExpandSecondaryPane:ue,onBackFromSecondary:pe,treeCollapsed:X,primaryCollapsed:M,secondaryCollapsed:O,onCancelEditor:de,onSubmitEditor:ge,isSubmittingEditor:$,onCreateInitiative:_e,onCreateWorkstream:je,onToggleInitiative:oe,onSelectInitiative:ce,onSelectWorkstream:Re,onOpenInitiativeDetails:Pe,onOpenWorkstreamDetails:Ce,onOpenNestedWorkstreamDetails:De,onEditInitiative:U,onEditWorkstream:I,onArchiveInitiative:b,onUnarchiveInitiative:R,onArchiveWorkstream:D,onUnarchiveWorkstream:te,onCreateTaskInWorkstream:N,onCreateWorkstreamInInitiative:G,onAssignInitiativeToWorkstream:be,onOpenTaskById:z,onRemoveTaskFromWorkstream:ie,onAttachTaskToWorkstreamByReference:ee,onAttachWorkstreamToInitiativeByReference:Q,onAddPlanningContextFile:q,onRemovePlanningContextFile:Se,onUpdatePlanningContextCaption:we}){const Te=!!(m||y),Ee=!!k,nt=$y(X,Te,M,Ee,O),gt=y?y.entityType==="initiative"?y.mode==="create"?"New Initiative":"Edit Initiative":y.mode==="create"?"New Workstream":"Edit Workstream":m?.type==="initiative"?"Initiative":"Workstream",dt=k?.kind==="editor"?k.editor.mode==="create"?"New Workstream":"Edit Workstream":"Workstream",St=Oe.useCallback(Ze=>{const Ct=String(Ze.initiativeId||"").trim();return Ct&&n.find(ut=>ut.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:Ae.drawerBody,children:[X?a.jsx(jp,{label:"Planning",onExpand:ve}):a.jsxs("div",{className:`${Ae.paneShell} ${p.appScrollbar} tf-scrollbar ${Ae.treePane} ${Te&&!M?Ae.treePaneSplit:""}`.trim(),style:{flex:`0 0 ${cd}px`,width:`${cd}px`,minWidth:`${cd}px`,maxWidth:`${cd}px`},children:[a.jsxs("div",{className:Ae.paneHeader,children:[a.jsx("span",{className:Ae.paneHeaderLabel,children:"Planning"}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:me,children:a.jsx(No,{size:16})})]}),a.jsx("div",{className:Ae.paneContent,children:a.jsx(DF,{initiatives:n,standaloneWorkstreams:s,allStandaloneWorkstreams:o,activeInitiativeId:l,activeWorkstreamId:i,expandedInitiativeIds:d,detail:m,secondaryPane:k,onCreateInitiative:_e,onCreateWorkstream:je,onToggleInitiative:oe,onSelectInitiative:ce,onSelectWorkstream:Re,onOpenInitiativeDetails:Pe,onOpenWorkstreamDetails:Ce})})]}),Te&&(M?a.jsx(jp,{label:gt,onExpand:A}):a.jsxs("div",{className:`${Ae.paneShell} ${p.appScrollbar} tf-scrollbar ${Ae.detailPane}`.trim(),style:{flex:`0 0 ${Xs}px`,width:`${Xs}px`,minWidth:`${Xs}px`,maxWidth:`${Xs}px`},children:[a.jsxs("div",{className:Ae.paneHeader,children:[a.jsx("span",{className:Ae.paneHeaderLabel,children:gt}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:se,children:a.jsx(No,{size:16})})]}),a.jsx("div",{className:Ae.paneContent,children:y?a.jsx(Xh,{editor:y,draftTitle:v,draftDescription:_,draftOwner:C,draftInitiativeId:x,assigneeOptions:h,draftInitiativeSummary:g,onChangeDraftTitle:W,onChangeDraftDescription:V,onChangeDraftOwner:B,onChangeDraftInitiativeId:J,onCancel:de,onSubmit:ge,isSubmitting:$,onAssignInitiativeToWorkstream:be}):m?a.jsx(Qh,{detail:m,currentWorkspaceId:S,assigneeOptions:h,onOpenNestedWorkstreamDetails:m.type==="initiative"?De:void 0,onCreateTaskInWorkstream:m.type==="workstream"?N:void 0,onCreateWorkstreamInInitiative:m.type==="initiative"?G:void 0,onOpenTaskById:m.type==="workstream"?z: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"?U(m.item.id):I(m.item.id),onArchive:()=>m.type==="initiative"?b(m.item.id):D(m.item.id),onUnarchive:()=>m.type==="initiative"?R(m.item.id):te(m.item.id),onAddPlanningContextFile:q,onRemovePlanningContextFile:Se,onUpdatePlanningContextCaption:we}):null})]})),Ee&&(O?a.jsx(jp,{label:dt,onExpand:ue}):a.jsxs("div",{className:`${Ae.paneShell} ${p.appScrollbar} tf-scrollbar ${Ae.detailPane}`.trim(),style:{flex:`0 0 ${Xs}px`,width:`${Xs}px`,minWidth:`${Xs}px`,maxWidth:`${Xs}px`},children:[a.jsxs("div",{className:Ae.paneHeader,children:[a.jsx("span",{className:Ae.paneHeaderLabel,children:dt}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:K,children:a.jsx(No,{size:16})})]}),a.jsx("div",{className:Ae.paneContent,children:k?.kind==="editor"?a.jsx(Xh,{editor:k.editor,draftTitle:v,draftDescription:_,draftOwner:C,draftInitiativeId:x,assigneeOptions:h,draftInitiativeSummary:g,onChangeDraftTitle:W,onChangeDraftDescription:V,onChangeDraftOwner:B,onChangeDraftInitiativeId:J,onCancel:pe,onSubmit:ge,isSubmitting:$,onAssignInitiativeToWorkstream:be}):k?a.jsx(Qh,{detail:k.detail,currentWorkspaceId:S,assigneeOptions:h,onCreateTaskInWorkstream:N,onOpenTaskById:z,onRemoveTaskFromWorkstream:ie,onAssignInitiativeToWorkstream:be,onAttachTaskToWorkstreamByReference:ee,parentInitiative:St(k.detail.item),onEdit:()=>I(k.detail.item.id),onArchive:()=>D(k.detail.item.id),onUnarchive:()=>te(k.detail.item.id),onAddPlanningContextFile:q,onRemovePlanningContextFile:Se,onUpdatePlanningContextCaption:we}):null})]}))]})})}const BF={"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"}},fd="annotated_attachments.workspace_access",hd="documents.workspace_access",wm="workflows.workspace_access",bm="agents.workspace_access",eg="initiatives.workspace_access",WF=Object.entries(BF).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 FF(e){const t=String(e||"").trim();return t&&WF[t]||null}function OF(e){const t=FF(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 ad(e){return OF(e.featureKey)}const $F=["tasks","docs","annotate","workflows","agents"];function UF(e){const t=e?.featureAccess||{},n={tasks:{id:"tasks",label:"Tasks",featureKey:null,enabled:!0,fallbackModuleId:"tasks"},docs:{id:"docs",label:"Documents",featureKey:hd,enabled:t[hd]?.allowed??!0,fallbackModuleId:"tasks"},annotate:{id:"annotate",label:"Image Notes",featureKey:fd,enabled:t[fd]?.allowed??!1,fallbackModuleId:"tasks"},workflows:{id:"workflows",label:"Workflows",featureKey:wm,enabled:t[wm]?.allowed??!1,fallbackModuleId:"tasks"},agents:{id:"agents",label:"Agents",featureKey:bm,enabled:t[bm]?.allowed??!1,fallbackModuleId:"tasks"}};return $F.map(s=>n[s])}function zF(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 tg(e,t){const n=t.find(s=>s.id===e);return n?n.enabled?n.id:n.fallbackModuleId:"tasks"}const HF="_weekLabel_vet2o_1",GF="_sectionTitle_vet2o_6",VF="_calendarHeader_vet2o_11",qF="_monthLabel_vet2o_18",KF="_weekdayGrid_vet2o_23",ZF="_weekdayLabel_vet2o_30",YF="_calendarGrid_vet2o_36",JF="_calendarDay_vet2o_42",QF="_calendarDayDot_vet2o_55",XF="_jumpRow_vet2o_67",eO="_displaySection_vet2o_73",tO="_toggleLabel_vet2o_79",aO="_expiredSummary_vet2o_87",nO="_actionButton_vet2o_95",$n={weekLabel:HF,sectionTitle:GF,calendarHeader:VF,monthLabel:qF,weekdayGrid:KF,weekdayLabel:ZF,calendarGrid:YF,calendarDay:JF,calendarDayDot:QF,jumpRow:XF,displaySection:eO,toggleLabel:tO,expiredSummary:aO,actionButton:nO},ag=["mon","tue","wed","thu","fri","sat","sun"],rO={mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"};function Jc(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 dd(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 Qp(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 sO(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 Uy(e,t){const n=new Date(e);return n.setDate(e.getDate()+t),n}function oO(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 Xp=320;function iO({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:_,onMoveExpiredToSelectedWeek:C,onMoveExpiredToBacklog:x,scheduleBulkBusy:W,globalWeekStartsOn:V,resolvedLocale:B,todayDateOnly:J,scheduleBaseTasks:me,scheduleWeekStart:ve,scheduleWeekLabel:se}){const A=Oe.useMemo(()=>{const[M,O]=o.split("-"),de=Number(M),ge=Number(O);if(!Number.isInteger(de)||!Number.isInteger(ge)||ge<1||ge>12){const $=dd(n)||new Date;return new Date($.getFullYear(),$.getMonth(),1)}return new Date(de,ge-1,1)},[o,n]),K=Oe.useMemo(()=>vm(A,{month:"long",year:"numeric"},B),[A,B]),ue=Oe.useMemo(()=>{const M=Qp(A,V);return Array.from({length:42},(O,de)=>Uy(M,de))},[A,V]),pe=Oe.useMemo(()=>{const M=new Map;for(const O of me){const de=O.scheduledDate||"";if(!de)continue;const $=!(O.status==="done"||O.status==="cancelled")&&de<J,_e=M.get(de);_e?(_e.count+=1,$&&(_e.hasExpired=!0)):M.set(de,{count:1,hasExpired:$})}return M},[me,J]),X=Oe.useMemo(()=>V==="sunday"?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],[V]);return a.jsxs("aside",{className:`${p.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:`${Xp}px`,minWidth:`${Xp}px`},children:[a.jsxs("div",{className:"tf-sidebar-header",children:[a.jsxs("div",{className:"tf-sidebar-title",children:[a.jsx(Uk,{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(Xc,{size:16})})]}),a.jsxs("div",{className:$n.weekLabel,children:["Week of ",se]}),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(A);M.setMonth(A.getMonth()-1),l(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},title:"Previous month",children:a.jsx(No,{size:14})}),a.jsx("div",{className:$n.monthLabel,children:K}),a.jsx("button",{className:"tf-control-icon",onClick:()=>{const M=new Date(A);M.setMonth(A.getMonth()+1),l(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},title:"Next month",children:a.jsx(Xc,{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:ue.map(M=>{const O=Jc(M),de=M.getMonth()!==A.getMonth(),ge=Qp(M,V),$=Jc(ge)===Jc(ve),_e=O===n,je=O===J,oe=O<J,ce=pe.get(O),Re=!!ce,Pe=!!ce?.hasExpired;return a.jsxs("button",{onClick:()=>{s(O),l(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},className:$n.calendarDay,style:{"--calendar-day-border":_e?"1px solid #2563eb":je?"1px solid rgba(245, 158, 11, 0.95)":"1px solid transparent","--calendar-day-background":_e?"rgba(59,130,246,0.22)":je?"rgba(245,158,11,0.16)":$?"rgba(59,130,246,0.18)":"transparent","--calendar-day-color":de?"var(--text-helper)":"var(--text-primary)","--calendar-day-font-weight":_e||je?700:500,"--calendar-day-opacity":oe?.42:1},title:`${je?`${O} (Today)`:O}`+(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":de?.6:.95}})]},O)})}),a.jsx("div",{className:$n.jumpRow,children:a.jsx("button",{className:"tf-control-icon",onClick:()=>{const M=new Date;s(Jc(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:C,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:x,disabled:W||_.length===0,title:"Unschedule expired/overdue tasks back to backlog",children:W?"Working...":"Unschedule to backlog"})]})]})}function zy(e,t){return e&&(t==="owner"||t==="admin")}function cO(e,t,n){return zy(e,t)&&n==="team"}function lO({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=uO(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=dO(y.current),o(_=>{const C=_.length===0?v:NW(_,v,15);return PW(_,C)?_:C}),m(null))}).catch(v=>{if(h)return;const _=v instanceof Error&&v.message.trim().length>0?v.message.trim():"Unable to load recent sync events.";m(_),g&&o([])}).finally(()=>{h||g&&i(!1)}),()=>{h=!0}},[e,S,...n]),{syncRecentEvents:s,syncRecentEventsLoading:l,syncRecentEventsError:d,syncEventsListRef:y,loadRecentSyncEvents:S}}function dO(e){return e&&e.scrollTop>8?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight}:null}function uO(e,t){if(!t||!e)return null;const n=e.scrollHeight-t.scrollHeight;return e.scrollTop=t.scrollTop+Math.max(0,n),null}function mO({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:_,workspaceSyncBusy:C}){const[x,W]=r.useState(!1),[V,B]=r.useState(!1),[J,me]=r.useState(!1),ve=r.useCallback(async()=>{try{const K=h.length>0?h:await g(),ue=WW({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:n,workspaceSyncRecommendedAction:s,formattedLastSyncTime:o,formattedLastPullTime:l,formattedLastPushTime:i,workspaceSyncDiagnostics:d,workspaceSyncPendingChanges:m,syncLastError:y,syncStageLabel:By(k,x,C),referenceMismatchCount:S,syncRecentEvents:K});await navigator.clipboard.writeText(ue),me(!0),window.setTimeout(()=>{me(!1)},1800),v("Sync details copied to clipboard.","success")}catch{me(!1),v("Failed to copy sync details.","error")}},[e,l,i,o,g,v,S,y,h,t,d,k,m,s,n,C,x]),se=r.useCallback(async()=>{B(!1),W(!0);try{await _()}finally{W(!1)}},[_]),A=r.useCallback(()=>{if(!x){if(C){B(!0);return}se()}},[se,C,x]);return r.useEffect(()=>{V&&(C||x||se())},[se,C,x,V]),{workspaceSyncRepairBusy:x,workspaceSyncRepairQueued:V,workspaceSyncCopied:J,handleCopySyncDetails:ve,handleQueueOrRunRepairSync:A}}function pO({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 x=>{if(e){k(null),m(!0);try{const W=await n({enabled:x});W.success||k(W.error||(x?"Failed to enable sync.":"Failed to disable sync."))}finally{m(!1)}}},[e,n]),h=r.useCallback(async x=>{if(x&&!t){i(!0);return}await S(x)},[S,t]),g=r.useCallback(()=>{i(!1)},[]),v=r.useCallback(()=>{i(!1),S(!0)},[S]),_=r.useCallback(()=>{o(!0)},[]),C=r.useCallback(()=>{o(!1)},[]);return{showSyncStatusModal:s,showSyncEnableWarning:l,workspaceSyncToggleBusy:d,workspaceSyncError:y,syncControlBusy:d,openSyncStatusModal:_,closeSyncStatusModal:C,handleWorkspaceSyncToggle:h,cancelSyncEnableWarning:g,confirmSyncEnableWarning:v}}const ng=Oe.lazy(()=>_s(()=>import("./TaskSettings-4PbrcOqD.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings}))),fO=Oe.lazy(()=>_s(()=>import("./AnnotatedAttachmentWorkspace-EQEzsETm.js"),__vite__mapDeps([12,1,2,3,4,5,13])).then(e=>({default:e.AnnotatedAttachmentWorkspaceShell}))),hO=Oe.lazy(()=>_s(()=>import("./DocumentWorkspace-Z7bykYtA.js"),__vite__mapDeps([14,1,2,9,3,4,5,15])).then(e=>({default:e.DocumentWorkspaceShell}))),gO=Oe.lazy(()=>_s(()=>import("./WorkflowsModule-AyOzrP3y.js"),__vite__mapDeps([16,1,2,3,4,5])).then(e=>({default:e.WorkflowsModule}))),yO=Oe.lazy(()=>_s(()=>import("./AgentsModule-BZG0WHDN.js"),__vite__mapDeps([17,1,2,3,4,5])).then(e=>({default:e.AgentsModule})));Oe.lazy(()=>_s(()=>import("./InitiativesModule-CSzXelzW.js"),__vite__mapDeps([18,1,2,3,4,5])).then(e=>({default:e.InitiativesModule})));const kO=Oe.lazy(()=>_s(()=>import("./PlansPage-2vebpTBs.js"),__vite__mapDeps([19,1,2,5,3,4,20])).then(e=>({default:e.PlansPage}))),vO="image/png,image/jpeg,image/webp,image/gif",SO=5*1024*1024,wO=e=>e;function bO(e,t){const n=xm(e);if(n)return eh(n).label.toUpperCase();for(const s of t){const o=String(s||"").trim();if(!o)continue;const l=df(o);if(l)return eh(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 nd(){return typeof performance<"u"?performance.now():Date.now()}function _O(e){const s=_g(),o=Cg(),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[P,le]of Object.entries(u||{}))le==null||String(le).trim()===""?w.delete(P):w.set(P,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:_,emptyColumnMode:C,setEmptyColumnMode:x,zenMode:W,setZenMode:V,filterStatus:B,setFilterStatus:J,tasks:me,handleEdit:ve,handleSubmit:se,resetForm:A,handleUpdateTask:K,editingTaskId:ue,loading:pe,error:X,title:M,setTitle:O,description:de,setDescription:ge,checklistItems:$,setChecklistItems:_e,category:je,setCategory:oe,type:ce,setType:Re,priority:Pe,setPriority:Ce,complexity:De,setComplexity:U,setStatus:I,approach:b,setApproach:R,assignee:D,setAssignee:te,scheduledDate:N,setScheduledDate:G,dueDate:be,setDueDate:z,workstreamInput:ie,setWorkstreamInput:ee,manualComplexityEnabled:Q,checklistDropdownEnabled:q,showTaskCardStatusLabel:Se,formTaxonomies:we,setFormTaxonomies:Te,comments:Ee,newCommentText:nt,setNewCommentText:gt,attachments:dt,setAttachments:St,setAttachmentsDirty:Ze,descriptionFocused:Ct,setDescriptionFocused:ut,showMarkdownHelp:Xe,setShowMarkdownHelp:lt,showChecklist:re,setShowChecklist:it,showComments:Ye,setShowComments:jt,handleAddComment:kt,handleSetWorkstreamForCurrentTask:It,handleOpenTaskById:Ft,taxonomies:Nt,activeTypes:Fe,priorities:et,taxonomyDisplayLabels:Ge,approaches:Qe,copiedId:yt,handleCopyId:ot,handleToggleInProgress:ae,handleToggleComplete:Ve,handleToggleReview:bt,handleToggleCancel:Ot,handleArchiveTask:Dt,handleDelete:Ue,handleUnarchive:Et,handleRestoreDeletedTask:vt,handlePermanentlyDeleteDeletedTask:E,handleEmptyDeletedTasks:c,fetchTasks:Y,searchQuery:ye,setSearchQuery:Ie,filterCategories:qe,setFilterCategories:Ke,filterTypes:Ne,setFilterTypes:Vt,filterPriorities:qt,setFilterPriorities:Pt,filterAssignees:Tt,setFilterAssignees:Lt,hasInitedFilters:Ht,assigneeOptions:sa,taskScope:Kt,setTaskScope:Ka,sortBy:Oa,setSortBy:en,clearFilters:ba,settingsModel:he,configLoaded:ct,currentTheme:xe,setCurrentTheme:Rt,pathSaved:tt,saveSettings:Gt,keyShortcut:ga,setKeyShortcut:Ea,globalWeekStartsOn:ma,locale:ia,jsonBackupEnabled:Mt,setJsonBackupEnabled:aa,mcpHostRoot:Za,setMcpHostRoot:$t,settingsSection:Qn,setSettingsSection:_a,runtimeMode:Qt,workspaceSwitchingEnabled:Or,cloudAuthConfigured:ja,authRequiredForApi:tn,authBlocked:Aa,isAuthenticated:Jt,authUserId:Na,authWorkspaceId:ca,authUserEmail:vn,authUserDisplayName:dn,authUserAvatarUrl:Xn,authSessionResolved:pa,realtimeSyncEnabled:Cr,realtimeSyncFlagSource:$r,workspaceCloudSyncEnabled:Sn,workspaceSyncPhase:xa,workspaceSyncStatus:Ar,workspaceSyncSummary:wn,workspaceSyncRecommendedAction:Pn,workspaceSyncBusy:an,workspaceSyncPendingChanges:Ia,saveWorkspaceCloudSyncSettings:Ur,pushNotice:_t,userGlobalSyncStatus:bn,workspaceLastSuccessfulSyncAt:un,workspaceLastPullAt:_n,workspaceLastPushAt:$a,workspaceLastErrorAt:Mn,userGlobalSyncError:va,workspaceLastErrorMessage:Ua,retryWorkspaceCloudSync:Cn,resetWorkspaceSyncCursorAndPull:la,getWorkspaceSyncDiagnostics:En,currentWorkspaceId:Xt,currentWorkspaceRole:za,availableWorkspaces:Ca,switchWorkspace:er,updateCurrentUserProfile:tr,resolveCloudAuthUrl:Da=wO,logout:na,fetchLoginMethods:fa,unlinkLoginMethod:mn,addPasswordToAccount:nn,beginOAuthLogin:pr,beginOAuthLink:fr,availableAuthProviders:ea,projectRoot:ss,projectName:Ha,mcpScriptPath:ar,serverHostRoot:os,showFolderBrowser:pn,setShowFolderBrowser:zn,folders:zr,files:An,currentBrowsePath:Ga,fetchFolders:xr,browserTarget:Pa,setBrowserTarget:Cs,handleSelectPath:rn,handleAddPath:Ir,handleRemovePath:hr,handleUpdateCategory:Hr,handleRemoveCategory:fn,handleSaveCategory:gr,handleUpdateCategoryIcon:xn,handleUpdateCategoryColor:Dn,handleSaveType:nr,handleRemoveType:is,handleUpdateTaxonomies:Gr,handleUpdatePriorities:Je,pathValidation:Ut,exportEnvironment:La,setExportEnvironment:da,exportWorkflowsPath:Va,setExportWorkflowsPath:Ya,exportResult:As,exportingResource:Hn,availableWorkflows:Vr,onExportWorkflows:Gn,fetchWorkflows:In,availableEnvironments:Bt,initiativeTemplates:Ln,fetchInitiativeTemplates:Ba,createInitiativeFromTemplate:rr,uiNotice:Tr,clearNotice:sr,taskReturnTrail:or,clearReturnToParentTask:xs,returnToPreviousTask:qr,tasksScrollRef:hn,setTasksScrollPos:Bn,commentsEndRef:no,autoSaveState:Rr,unsavedModalOpen:F,setUnsavedModalOpen:Be,pendingNavigation:At,handleNavigation:Wt,currentTask:ua,currentTaskWorkstream:yr,currentTaskInitiative:cs,scheduleWarningPrompt:Is,confirmScheduleWarning:Ja,cancelScheduleWarning:jr}=e,Wa=ia||Dg();r.useEffect(()=>{const u=String(Ha||"").trim();document.title=u?`Taskforce - ${u}`:"Taskforce"},[Ha]);const T=()=>{Be(!1),At?(y==="add"&&A(),At()):(y==="add"&&A(),k("tasks"))},j=async()=>{await se({preventDefault:()=>{}}),Be(!1),At&&At()},[rt,Me]=r.useState(!1),[Le,ne]=r.useState(!1),[gn,Nr]=r.useState(!0),[yn,li]=r.useState(!1),[Wn,Pr]=r.useState(!0),[Kr,Eo]=r.useState(Jc(new Date)),[Do,ro]=r.useState(()=>{const u=new Date;return`${u.getFullYear()}-${String(u.getMonth()+1).padStart(2,"0")}`}),[di,Tn]=r.useState(0),[so,ui]=r.useState(!1),[mi,pi]=r.useState(!1),[Mr,Lo]=r.useState(!1),[ls,rc]=r.useState(!0),[Zr,oo]=r.useState(!0),[Ts,Rs]=r.useState(!0),[io,ds]=r.useState(!1),[fi,Sa]=r.useState(!1),[sc,Vn]=r.useState(!1),[ra,co]=r.useState(""),[Yr,lo]=r.useState(""),[Er,oc]=r.useState(new Set),[js,ir]=r.useState(null),[Os,on]=r.useState(null),[us,$s]=r.useState(null),[uo,Us]=r.useState(null),[Bo,zs]=r.useState(""),[mo,cr]=r.useState(""),[ha,sn]=r.useState(""),[qn,Jr]=r.useState(""),[hi,Hs]=r.useState(!1),ic=r.useRef({taskId:null,attachments:[]}),sl=r.useRef(new Map),cn=r.useRef(new Map),[po,Wo]=r.useState(()=>em.map(u=>u.value)),[fo,Fo]=r.useState(()=>tm.map(u=>u.value)),[Nm,ol]=r.useState(null),[Pm,il]=r.useState(null),[Kn,ms]=r.useState(null),[ho,gi]=r.useState(null),[Mm,Ad]=r.useState(0),[Oo,Em]=r.useState({}),[xd,Id]=r.useState(!1),Gs=r.useRef(!1),Td=r.useRef(""),cl=r.useRef(null),Rd=r.useRef(null),cc=r.useRef(new Set);r.useEffect(()=>{ic.current={taskId:ue||null,attachments:dt}},[ue,dt]);const ll=r.useCallback(u=>{const w=ue||null,P=ic.current,le=P.taskId===w?P.attachments:dt,ke=u(le);ic.current={taskId:w,attachments:ke},St(ke),Ze(!0),w&&K(w,{attachments:ke})},[dt,ue,K,St,Ze]),$o=r.useMemo(()=>{const u={},w=String(Xt||"").trim();return Qt==="cloud"&&w&&w!=="default"&&(u["x-taskforce-workspace-id"]=w),u},[Qt,Xt]),go=r.useMemo(()=>`${Qt}:${String(Xt||"default").trim()||"default"}`,[Qt,Xt]),lc=r.useMemo(()=>`taskforce:annotate-layout:${go}`,[go]),ps=r.useMemo(()=>`taskforce:task-origin-workspace-module:${go}`,[go]),yi=r.useMemo(()=>Qt==="cloud"?pa:ct,[pa,ct,Qt]),Uo=r.useRef(!1),ki=r.useRef(!1),Vs=r.useCallback(u=>{const w=String(u||"").trim();if(!(!w||typeof window>"u")){Uo.current=!0;try{window.sessionStorage.setItem(ps,w)}catch{}}},[ps]),kr=r.useCallback(()=>{if(Uo.current=!1,!(typeof window>"u"))try{window.sessionStorage.removeItem(ps)}catch{}},[ps]);r.useEffect(()=>{cl.current=Kn},[Kn]),r.useEffect(()=>{Rd.current=ho},[ho]);const yo=r.useMemo(()=>({[hd]:ad({featureKey:hd}),[fd]:ad({featureKey:fd}),[wm]:ad({featureKey:wm}),[bm]:ad({featureKey:bm}),[eg]:ad({featureKey:eg})}),[Qt]),Ns=r.useMemo(()=>UF({featureAccess:yo}),[yo]),oa=r.useMemo(()=>tg(v,Ns),[v,Ns]),zo=yo[hd]?.allowed??!1,dc=yo[fd]?.allowed??!1,dl="Documents is not available in this build yet.",ul="Annotate is not available in this build yet.";r.useEffect(()=>{const u=w=>{const P=w,le=P.detail?.fsPath,ke=String(P.detail?.assetId||"").trim()||null;if(!(!le&&!ke)){if(P.preventDefault(),!zo){_t(dl,"error");return}Vs(P.detail?.taskId),ol(le||null),il(ke),_("docs")}};return window.addEventListener("taskforce:open-markdown-document",u),()=>{window.removeEventListener("taskforce:open-markdown-document",u)}},[zo,dl,_t,Vs,_]),r.useEffect(()=>{oa!==v&&_(oa)},[v,oa,_]),r.useEffect(()=>{oa==="docs"&&zo||(ol(null),il(null))},[zo,oa]),r.useEffect(()=>{if(!(typeof window>"u"))try{const u=window.sessionStorage.getItem(lc);if(!u)return;const w=JSON.parse(u);w?.annotatedTarget&&typeof w.annotatedTarget=="object"&&ms(w.annotatedTarget),typeof w?.annotatedSessionId=="string"&&gi(w.annotatedSessionId.trim()||null)}catch{}},[lc]),r.useEffect(()=>{if(!ki.current&&!(oa!=="docs"&&oa!=="annotate")&&(ki.current=!0,!(Uo.current||typeof window>"u")))try{if(!String(window.sessionStorage.getItem(ps)||"").trim())return;window.sessionStorage.removeItem(ps),_("tasks")}catch{}},[oa,_,ps]),r.useEffect(()=>{ki.current=!1,Uo.current=!1},[ps]),r.useEffect(()=>{if(Td.current===go)return;Td.current=go,Id(!1);let u=!1;return(async()=>{try{const P=await fetch("/api/taskforce/ui-state?key=layout",{method:"GET",credentials:"include",headers:$o});if(!P.ok)return;const le=await P.json().catch(()=>({})),ke=le?.state&&typeof le.state=="object"?le.state:null;if(!ke||u)return;if(typeof ke.scheduleShowWeekends=="boolean"&&ne(ke.scheduleShowWeekends),typeof ke.scheduleShowBacklog=="boolean"&&Nr(ke.scheduleShowBacklog),typeof ke.scheduleOnlyExpired=="boolean"&&li(ke.scheduleOnlyExpired),typeof ke.scheduleSidebarOpen=="boolean"&&Pr(ke.scheduleSidebarOpen),typeof ke.scheduleSelectedDate=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(ke.scheduleSelectedDate)&&Eo(ke.scheduleSelectedDate),typeof ke.scheduleCalendarMonth=="string"&&/^\d{4}-\d{2}$/.test(ke.scheduleCalendarMonth)&&ro(ke.scheduleCalendarMonth),typeof ke.scheduleScrollLeft=="number"&&Number.isFinite(ke.scheduleScrollLeft)&&ke.scheduleScrollLeft>=0&&Tn(ke.scheduleScrollLeft),typeof ke.showFilters=="boolean"&&ui(ke.showFilters),Array.isArray(ke.documentTypeFilters)&&Wo(ke.documentTypeFilters),Array.isArray(ke.documentAttachmentFilters)&&Fo(ke.documentAttachmentFilters),typeof ke.planningDrawerOpen=="boolean"&&Lo(ke.planningDrawerOpen),typeof ke.documentTrayOpen=="boolean"&&rc(ke.documentTrayOpen),typeof ke.imageTrayOpen=="boolean"&&oo(ke.imageTrayOpen),typeof ke.agentTrayOpen=="boolean"&&Rs(ke.agentTrayOpen),typeof ke.planningTreeCollapsed=="boolean"&&ds(ke.planningTreeCollapsed),typeof ke.planningPrimaryCollapsed=="boolean"&&Sa(ke.planningPrimaryCollapsed),typeof ke.planningSecondaryCollapsed=="boolean"&&Vn(ke.planningSecondaryCollapsed),Array.isArray(ke.planningExpandedInitiativeIds)&&oc(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();ir(Zt?{type:ke.planningDrawerDetail.type,id:Zt}:null)}else ke.planningDrawerDetail===null&&ir(null);typeof ke.planningNestedWorkstreamDetailId=="string"?on(ke.planningNestedWorkstreamDetailId.trim()||null):ke.planningNestedWorkstreamDetailId===null&&on(null);const ft=ke.annotatedTarget;ft&&typeof ft=="object"&&(cl.current||ms(ft)),typeof ke.annotatedSessionId=="string"&&(Rd.current||gi(ke.annotatedSessionId.trim()||null))}catch{}finally{u||Id(!0)}})(),()=>{u=!0}},[go,$o]),r.useEffect(()=>{if(!xd)return;const u=window.setTimeout(async()=>{try{await mf({stateKey:"layout",workspaceId:Xt,headers:$o,patch:{scheduleShowWeekends:Le,scheduleShowBacklog:gn,scheduleOnlyExpired:yn,scheduleSidebarOpen:Wn,scheduleSelectedDate:Kr,scheduleCalendarMonth:Do,scheduleScrollLeft:di,showFilters:so,documentTypeFilters:po,documentAttachmentFilters:fo,documentTrayOpen:ls,imageTrayOpen:Zr,agentTrayOpen:Ts,planningDrawerOpen:Mr,planningTreeCollapsed:io,planningPrimaryCollapsed:fi,planningSecondaryCollapsed:sc,planningExpandedInitiativeIds:Array.from(Er),planningDrawerDetail:js,planningNestedWorkstreamDetailId:Os,annotatedTarget:Kn,annotatedSessionId:ho}})}catch{}},250);return()=>window.clearTimeout(u)},[xd,Le,gn,yn,Wn,Kr,Do,di,so,po,fo,ls,Zr,Ts,Mr,io,fi,sc,Er,js,Os,Kn,ho,$o]),r.useEffect(()=>{if(!(typeof window>"u"))try{window.sessionStorage.setItem(lc,JSON.stringify({annotatedTarget:Kn,annotatedSessionId:ho}))}catch{}},[lc,ho,Kn]),r.useEffect(()=>{h==="schedule"&&Pr(!0)},[h]);const{showArchive:ko,setShowArchive:ml,fetchArchive:pl,filteredArchive:fl}=e,vi=r.useMemo(()=>fl.map(u=>({...u,isArchived:!0})),[fl]),Fn=r.useMemo(()=>e.archivedTasks.map(u=>({...u,isArchived:!0})),[e.archivedTasks]),Ps=r.useMemo(()=>[...e.searchAgnosticTasks,...Fn],[Fn,e.searchAgnosticTasks]),jd=r.useCallback(u=>{const w=String(u||"").trim();if(!w)return"";const P=Ps.find(le=>le.id===w);return Xi(P)||""},[Ps]),Nd=r.useCallback(u=>{const w=String(u||"").trim();if(!w)return"";const P=String(Oo[w]||"").trim();if(P)return P;for(const le of Ps)for(const ke of le.attachments||[]){if(!ke||typeof ke!="object"||String(ke.assetId||"").trim()!==w)continue;const ft=py({referenceNumber:typeof ke.referenceNumber=="number"?ke.referenceNumber:null,referenceLabel:String(ke.referenceLabel||"").trim()||null});if(ft)return ft}return""},[Ps,Oo]);r.useEffect(()=>{const u=w=>{const P=w,le=Th(P.detail,Ps);if(le){if(P.preventDefault(),!dc){_t(ul,"error");return}ms(le),gi(null),Ad(ke=>ke+1),Vs(le.taskId),_("annotate")}};return window.addEventListener("taskforce:open-annotated-attachment",u),()=>{window.removeEventListener("taskforce:open-annotated-attachment",u)}},[Ps,dc,ul,_t,Vs,_]),r.useEffect(()=>{if(!Kn)return;const u=Th(Kn,Ps);u&&(u.taskReferenceLabel===Kn.taskReferenceLabel&&u.imageReferenceLabel===Kn.imageReferenceLabel||ms(u))},[Ps,Kn]),r.useEffect(()=>{const u=cl.current,w=String(u?.assetId||"").trim();if(!w)return;const P=String(Oo[w]||"").trim();P&&P!==String(u?.imageReferenceLabel||"").trim()&&ms(le=>!le||String(le.assetId||"").trim()!==w?le:{...le,imageReferenceLabel:P})},[Oo,Kn]),r.useEffect(()=>{if(!yi)return;const w=String(Kn?.assetId||"").trim();if(!w||cc.current.has(w)||String(Oo[w]||"").trim())return;let P=!1;cc.current.add(w);const le=String(Xt||"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:$o});if(!Zt.ok)return;const wa=await Zt.json().catch(()=>({})),Ss=String(wa?.target?.imageReferenceLabel||"").trim();if(!Ss||P)return;Em(Ra=>Ra[w]===Ss?Ra:{...Ra,[w]:Ss})}catch{}finally{cc.current.delete(w)}})(),()=>{P=!0}},[yi,Oo,Xt,Kn,$o]);const On=r.useMemo(()=>e.deletedTasks.map(u=>({...u.taskSnapshot,isDeleted:!0,deletedRecordId:u.id})),[e.deletedTasks]),Si=r.useMemo(()=>{const u=new Map;return e.deletedTasks.forEach(w=>{u.set(w.taskSnapshot.id,w)}),u},[e.deletedTasks]),wi=r.useMemo(()=>{const u=On,w=Rm(ye),P={categories:S,types:Fe,priorities:et,assigneeOptions:e.assigneeOptions,taxonomies:Nt},le=S.every(Ra=>qe.includes(Ra.value)),ke=Fe.every(Ra=>Ne.includes(Ra.value)),ft=new Set(qt.map(Ra=>String(Ra))),Zt=et.every(Ra=>ft.has(String(Ra.value))),wa=new Set(B.map(Ra=>String(Ra))),Ss=eo.every(Ra=>wa.has(String(Ra.value)));return u.filter(Ra=>{const op=pm(Ra,w,P),ju=le||qe.includes(Ra.category),ip=ke||Ne.includes(Ra.type||Fr),cp=Zt||ft.has(String(Ra.priority)),Nu=Ss||wa.has(String(Ra.status)),lp=Tt.length===0||Tt.includes(Ra.assignee||"unassigned");return op&&ju&&ip&&cp&&Nu&&lp})},[S,Fe,On,Tt,qe,qt,B,Ne,et,ye]),bi=r.useMemo(()=>[...e.tasks,...Fn,...On],[Fn,On,e.tasks]),uc=r.useMemo(()=>{const u=S.filter(P=>!P.disabled).map(P=>({value:P.value,label:P.label})),w=S.filter(P=>P.disabled&&bi.some(le=>le.category===P.value)).map(P=>({value:P.value,label:`${P.label} (Legacy)`}));return[...u,...w]},[S,bi]),hl=r.useMemo(()=>{const u=Fe.filter(P=>P.status!=="retired").map(P=>({value:P.value,label:P.label})),w=Fe.filter(P=>P.status==="retired"&&bi.some(le=>(le.type||Fr)===P.value)).map(P=>({value:P.value,label:`${P.label} (Retired)`}));return[...u,...w]},[Fe,bi]),qs=r.useMemo(()=>Kt==="archived"?vi:Kt==="deleted"?wi:ko?[...e.filteredTasks,...vi]:e.filteredTasks,[vi,wi,e.filteredTasks,ko,Kt]),mc=r.useMemo(()=>Kt==="open"?e.tasks.filter(u=>!u.isArchived):qs,[qs,e.tasks,Kt]),gl=r.useMemo(()=>new Set(qs.map(u=>u.id)),[qs]),_i=r.useMemo(()=>Kt==="archived"?Fn:Kt==="deleted"?On:ko?[...e.tasks,...Fn]:e.tasks,[Fn,On,e.tasks,ko,Kt]),Ci=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]),pc=r.useMemo(()=>{const u=new Map;return Ci.forEach(w=>u.set(w.id,w)),u},[Ci]),fc=r.useMemo(()=>{const u=new Map;sa.forEach(le=>{u.set(String(le.value),le.label)});const w=String(Na||"").trim(),P=String(dn||vn||"").trim();return w&&P&&u.set(w,P),u},[sa,dn,vn,Na]),wt=r.useMemo(()=>{const u=Kt==="archived"?Fn:Kt==="deleted"?On:e.tasks.filter(mt=>!mt.isArchived),w=Kt==="deleted"?On:Array.from([...e.tasks,...Fn].reduce((mt,Xa)=>mt.set(Xa.id,Xa),new Map).values()),P=(mt,Xa)=>({progressPercent:mt>0?Math.round(Xa/mt*100):0,taskCount:mt,completedTaskCount:Xa}),le=Kt==="open"&&e.planningBootstrapTaskSummaries.length>0&&(e.loadingTasks||e.tasks.length===0),ke=new Map,ft=new Map;le?e.planningBootstrapTaskSummaries.forEach(mt=>{ke.set(mt.workstreamId,mt),ft.set(mt.workstreamId,mt.tasks||[])}):(u.forEach(mt=>{const Xa=String(mt.workstreamId||"").trim();if(!Xa)return;const dr=ke.get(Xa)||{workstreamId:Xa,taskCount:0,completedTaskCount:0,tasks:[]};dr.taskCount+=1,(mt.isArchived||mt.status==="done"||mt.status==="cancelled")&&(dr.completedTaskCount+=1),ke.set(Xa,dr)}),w.forEach(mt=>{const Xa=String(mt.workstreamId||"").trim();if(!Xa)return;const dr=ft.get(Xa)||[];dr.push({id:mt.id,referenceNumber:mt.referenceNumber??null,title:mt.title,status:mt.status||null,isArchived:!!mt.isArchived}),ft.set(Xa,dr)}));const Zt=new Map,wa=new Map,Ss=new Map,Ra=new Map,op=mt=>{const Xa=ke.get(mt.id),dr=ft.get(mt.id)||Xa?.tasks||[],Pu={id:mt.id,referenceNumber:mt.referenceNumber??null,title:mt.title,description:String(mt.description||"").trim()||void 0,ownerId:mt.ownerId?String(mt.ownerId):null,ownerLabel:mt.ownerId?fc.get(String(mt.ownerId))||String(mt.ownerId):null,...P(Xa?.taskCount||0,Xa?.completedTaskCount||0),initiativeId:mt.initiativeId||null,commentCount:Array.isArray(mt.comments)?mt.comments.length:0,attachmentCount:Array.isArray(mt.attachments)?mt.attachments.length:0,attachments:Array.isArray(mt.attachments)?mt.attachments:[],isArchived:!!mt.isArchived,tasks:dr};if(Zt.set(mt.id,dr.map(Hc=>Hc.id)),mt.initiativeId){wa.set(mt.id,mt.initiativeId);const Hc=Ra.get(mt.initiativeId)||[];Hc.push(Pu),Ra.set(mt.initiativeId,Hc)}return Pu},ju=e.workstreams.map(op),ip=ju.filter(mt=>Sm(Kt,!!mt.isArchived)),cp=e.initiatives.map(mt=>{const Xa=Ra.get(mt.id)||[],dr=Xa.filter(Xl=>Sm(Kt,!!Xl.isArchived)),Pu=dr.reduce((Xl,dp)=>Xl+dp.taskCount,0),Hc=dr.reduce((Xl,dp)=>Xl+dp.completedTaskCount,0);return{id:mt.id,referenceNumber:mt.referenceNumber??null,title:mt.title,description:String(mt.description||"").trim()||void 0,ownerId:mt.ownerId?String(mt.ownerId):null,ownerLabel:mt.ownerId?fc.get(String(mt.ownerId))||String(mt.ownerId):null,...P(Pu,Hc),workstreamCount:dr.length,workstreams:dr,allWorkstreams:Xa,commentCount:Array.isArray(mt.comments)?mt.comments.length:0,attachmentCount:Array.isArray(mt.attachments)?mt.attachments.length:0,attachments:Array.isArray(mt.attachments)?mt.attachments:[],isArchived:!!mt.isArchived}}),{initiatives:Nu,standaloneWorkstreams:lp,initiativeById:Ak,workstreamById:xk}=IW(cp,ip,Kt),Ik=ju.filter(mt=>!mt.initiativeId);return Nu.forEach(mt=>{Ss.set(mt.id,mt.workstreams.flatMap(Xa=>(Xa.tasks||[]).map(dr=>dr.id)))}),{initiatives:Nu,standaloneWorkstreams:lp,allStandaloneWorkstreams:Ik,workstreamTaskIds:Zt,workstreamInitiativeIds:wa,initiativeTaskIds:Ss,workstreamById:xk,initiativeById:Ak}},[Fn,fc,On,e.initiatives,e.loadingTasks,e.planningBootstrapTaskSummaries,e.tasks,e.workstreams,Kt]),Pd=r.useMemo(()=>wt.initiatives.map(u=>{const w=ns(u);return{value:u.id,label:w||u.title}}),[wt.initiatives]),hc=r.useMemo(()=>{const w=(ra?wt.initiativeById.get(ra)?.workstreams||[]:wt.initiatives.flatMap(le=>le.workstreams)).map(le=>{const ke=Po(le);return{value:le.id,label:ke||le.title}}),P=ra?[]:wt.standaloneWorkstreams.map(le=>{const ke=Po(le);return{value:le.id,label:ke||le.title}});return[...w,...P]},[wt.initiativeById,wt.initiatives,wt.standaloneWorkstreams,ra]),fs=r.useMemo(()=>Yr?new Set(wt.workstreamTaskIds.get(Yr)||[]):ra?new Set(wt.initiativeTaskIds.get(ra)||[]):null,[wt.initiativeTaskIds,wt.workstreamTaskIds,ra,Yr]),Ho=r.useMemo(()=>{if(!js)return null;if(js.type==="initiative"){const w=wt.initiativeById.get(js.id);return w?{type:"initiative",item:w}:null}const u=wt.workstreamById.get(js.id)||wt.standaloneWorkstreams.find(w=>w.id===js.id);return u?{type:"workstream",item:u}:null},[js,wt.initiativeById,wt.standaloneWorkstreams,wt.workstreamById]),gc=r.useMemo(()=>{if(!Os)return null;const u=wt.workstreamById.get(Os)||wt.standaloneWorkstreams.find(w=>w.id===Os);return u?{type:"workstream",item:u}:null},[Os,wt.standaloneWorkstreams,wt.workstreamById]),yc=r.useMemo(()=>uo?{kind:"editor",editor:uo}:gc?{kind:"detail",detail:gc}:null,[gc,uo]),Md=$y(io,!!(Ho||us),fi,!!yc,sc),kc=r.useMemo(()=>{if(!qn.trim())return null;const u=wt.initiativeById.get(qn);return u||vp(wt.initiatives,qn)},[qn,wt.initiativeById,wt.initiatives]);r.useEffect(()=>{ra&&!wt.initiativeById.has(ra)&&co(""),Yr&&!wt.workstreamById.has(Yr)&&lo("")},[wt.initiativeById,wt.workstreamById,ra,Yr]);const vr=r.useMemo(()=>h==="schedule"?mc:qs,[h,qs,mc]),Qa=r.useMemo(()=>{const u=new Date,w=u.getFullYear(),P=String(u.getMonth()+1).padStart(2,"0"),le=String(u.getDate()).padStart(2,"0");return`${w}-${P}-${le}`},[]),Ai=r.useMemo(()=>h!=="schedule"||!yn?vr:vr.filter(u=>{if(u.status==="done"||u.status==="cancelled")return!1;const P=!!u.scheduledDate&&u.scheduledDate<Qa,le=!!u.dueDate&&u.dueDate<Qa;return P||le}),[h,yn,vr,Qa]),yl=r.useMemo(()=>!fs||fs.size===0?Ai:Ai.filter(u=>fs.has(u.id)),[Ai,fs]),Ed=r.useMemo(()=>!fs||fs.size===0?_i:_i.filter(u=>fs.has(u.id)),[_i,fs]),vo=r.useMemo(()=>h!=="schedule"?[]:vr.filter(u=>{if(u.status==="done"||u.status==="cancelled")return!1;const P=!!u.scheduledDate&&u.scheduledDate<Qa,le=!!u.dueDate&&u.dueDate<Qa;return P||le}),[h,vr,Qa]),Dd=r.useMemo(()=>h!=="schedule"?0:vr.filter(u=>u.status==="done"||u.status==="cancelled"?!1:!!u.scheduledDate&&u.scheduledDate<Qa).length,[h,vr,Qa]),kl=r.useMemo(()=>h!=="schedule"?0:vr.filter(u=>u.status==="done"||u.status==="cancelled"?!1:!!u.dueDate&&u.dueDate<Qa).length,[h,vr,Qa]),Qr=String(Na||"").trim(),Ld=r.useMemo(()=>!Qr||Qr==="anonymous"?0:me.filter(u=>u.status==="done"||u.status==="cancelled"?!1:String(u.assignee||"").trim()===Qr).length,[Qr,me]),Bd=r.useMemo(()=>!Qr||Qr==="anonymous"?0:me.filter(u=>u.status==="done"||u.status==="cancelled"||String(u.assignee||"").trim()!==Qr?!1:!!u.dueDate&&u.dueDate<Qa).length,[Qr,me,Qa]),vc=r.useMemo(()=>h!=="schedule"?[]:vr.filter(u=>u.status==="done"||u.status==="cancelled"?!1:!!u.scheduledDate&&u.scheduledDate<Qa),[h,vr,Qa]),xi=vo,[So,Ii]=r.useState(!1),Sc=()=>{Wt(()=>{qr()||(y==="add"&&or.length>0&&xs(),pi(!1),y==="add"&&A(),k("tasks"))})};r.useEffect(()=>{y!=="add"&&pi(!1)},[y]);const wc=r.useCallback((u,w)=>{if(u.status!==w){if(w==="in-progress"){ae(u);return}if(w==="review"){bt(u);return}if(w==="done"){Ve(u);return}if(w==="cancelled"){Ot(u);return}K(u.id,{status:w,completedAt:null})}},[ae,bt,Ve,Ot,K]),vl=r.useCallback((u,w)=>{A();const P=CW(u,w,{categories:S,approaches:Qe});P.category&&oe(P.category),P.type&&Re(P.type),typeof P.priority=="number"&&Ce(P.priority),typeof P.complexity=="number"&&U(P.complexity),P.approach&&R(P.approach);const le=P.taxonomyApproach;typeof le=="string"&&le.length>0&&Te(ke=>({...ke,approach:le})),P.assignee&&te(P.assignee),P.status&&I(P.status),P.scheduledDate&&G(P.scheduledDate),k("add")},[A,S,Qe,oe,Re,Ce,U,I,R,te,G,Te,k]);Oe.useEffect(()=>{B&&!B.includes("done")&&J(u=>[...u,"done"])},[]);const[Wd,Go]=r.useState(!1),[hs,Zn]=r.useState(!1),[wo,bo]=r.useState(!1),[Sl,wl]=r.useState(!1),[Dm,bc]=r.useState(!1),[_c,Fd]=r.useState(!1),[Od,bl]=r.useState(""),[_l,Ti]=r.useState(!1),[Lm,$d]=r.useState(!1),[Bm,Ri]=r.useState("members"),[Cc,Ac]=r.useState(null),[xc,ji]=r.useState("unknown"),[Ud,Ni]=r.useState(!1),[Wm,Rn]=r.useState(null),[gs,Sr]=r.useState(null),[Ic,Tc]=r.useState(!1),[Vo,Cl]=r.useState([]),[Pi,qo]=r.useState(null),[Mi,Rc]=r.useState(""),[Ms,Ei]=r.useState("member"),[Di,jc]=r.useState("read-write"),[Nc,Al]=r.useState(!1),[zd,Ko]=r.useState(null),[Es,Fm]=r.useState(0),[Hd,Gd]=r.useState(!1),[Om,$m]=r.useState([]),[Um,zm]=r.useState(!1),[Vd,Hm]=r.useState(1),[kn,xl]=r.useState(null),[qd,Pc]=r.useState(!1),[Mc,Il]=r.useState(null),[Kd,Li]=r.useState(!1),[Dr,Lr]=r.useState(null),[Zo,Br]=r.useState(!1),[Zd,Tl]=r.useState(null),[Ks,Bi]=r.useState("month"),[Rl,Yd]=r.useState(""),[ys,Yo]=r.useState(""),[lr,Jo]=r.useState(null),[jl,Jd]=r.useState(!1),[Gm,Nl]=r.useState(!1),[Qd,Xr]=r.useState(null),[Xd,es]=r.useState(null),eu=25,tu=r.useRef(null),Wi=r.useRef(null),Pl=r.useRef({billing:!1,teamManagement:!1}),Fi=r.useRef(null);r.useEffect(()=>{Fi.current=kn},[kn]),r.useEffect(()=>{if(!hs)return;const u=w=>{tu.current?.contains(w.target)||Zn(!1)};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[hs]);const Vm=Qt==="cloud"&&Or&&Jt,Qo=Jt&&(Qt==="cloud"||ja),Ml=Qt==="local"&&Jt,{showSyncStatusModal:El,showSyncEnableWarning:qm,workspaceSyncError:Dl,syncControlBusy:au,openSyncStatusModal:Km,closeSyncStatusModal:Ll,handleWorkspaceSyncToggle:nu,cancelSyncEnableWarning:Zm,confirmSyncEnableWarning:Ym}=pO({canManageWorkspaceSync:Ml,workspaceCloudSyncEnabled:Sn,saveWorkspaceCloudSyncSettings:Ur}),Bl=r.useMemo(()=>{const u=Ca.find(le=>le.id===Xt),w=String(u?.name||"").trim();if(w)return w;if(Qt==="local"){const le=String(Ha||"").trim();if(le)return le}return String(Xt||"").trim()||"Workspace"},[Ca,Xt,Ha,Qt]),Ec=zy(Qo,Cc),_o=cO(Qo,Cc,xc),Xo=String(dn||"").trim(),wr=String(Xn||"").trim(),Co=String(vn||"").trim(),Zs=Xo||Co,Dc=Zs.length>0,ru=Co.length>0,Jm=r.useMemo(()=>wB({workspaceName:Bl,workspaceId:Xt,accountLabel:Zs||Co,runtimeMode:Qt}),[Co,Zs,Xt,Bl,Qt]),su=(Zs||Co||"").trim(),Lc=Jt&&pa&&su.length>0?su.charAt(0).toUpperCase():"",Fl=wr,ou=Jt&&pa&&Fl.length>0,Ol=String(ys||wr).trim(),Bc=String(kn?.planName||kn?.planId||"").trim(),iu=Bc.length>0,Ds=String(kn?.workspaceId||ca||Xt||"").trim(),cu=Qt==="cloud"?"CLOUD":"LOCAL",$l=e.config?.apiBaseUrl||"",lu=r.useMemo(()=>bO(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]),du=ja&&!pa;r.useEffect(()=>{Sl&&(Yd(Xo),Yo(wr),Jo(null),Xr(null),es(null))},[wr,Xo,Sl]);const Ls=r.useCallback(async u=>{const w=String(u||"").trim();if(!(!w||!ja))try{await fetch(Da("/api/taskforce/auth/profile/avatar/discard"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:w})})}catch{}},[ja,Da]),uu=r.useCallback(()=>{const u=lr;wl(!1),bc(!1),Xr(null),es(null),Jo(null),Yo(wr),u&&Ls(u)},[wr,Ls,lr]),mu=r.useCallback(async u=>{if(!u||!ja)return!1;if(!u.type.startsWith("image/"))return Xr("Profile photo must be an image file."),es(null),!1;Jd(!0),Xr(null),es(null);try{const w=await XW(u,{maxBytes:SO});if(w.exceededLimit){const Ra=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(Ra)}const P=w.file,le=await fetch(Da("/api/taskforce/auth/profile/avatar/init"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({originalName:P.name,mimeType:P.type,size:P.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(Da("/api/taskforce/auth/profile/avatar/upload"),{method:"POST",headers:{"Content-Type":P.type||"application/octet-stream","x-taskforce-avatar-draft-id":ke.draftId},credentials:"include",body:P})).ok)throw new Error("Failed to upload avatar.");const Zt=await fetch(Da("/api/taskforce/auth/profile/avatar/finalize"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:ke.draftId,relativePath:ke.relativePath})}),wa=await Zt.json().catch(()=>({}));if(!Zt.ok||!wa?.success||typeof wa?.draftId!="string")throw new Error(wa?.error||"Failed to finalize avatar upload.");const Ss=lr;return Jo(wa.draftId),Yo(typeof wa?.avatarUrl=="string"?wa.avatarUrl:""),es(null),Ss&&Ss!==wa.draftId&&Ls(Ss),!0}catch(w){return Xr(w instanceof Error?w.message:"Failed to upload profile photo."),!1}finally{Jd(!1)}},[ja,Ls,lr,Da]),pu=r.useCallback(()=>{if(!lr)return;const u=lr;Jo(null),Yo(wr),es(null),Xr(null),Ls(u)},[wr,Ls,lr]),fu=r.useCallback(()=>{const u=lr;Jo(null),Yo(""),es(wr?"Profile photo will be removed when you save.":null),Xr(null),u&&Ls(u)},[wr,Ls,lr]),hu=r.useCallback(async()=>{const u=Rl.trim();if(!u){Xr("Display name is required."),es(null);return}Nl(!0),Xr(null),es(null);const w=await tr({displayName:u,avatarDraftId:lr,clearAvatar:!lr&&!ys&&!!wr});if(!w.success){Xr(w.error||"Failed to update profile."),Nl(!1);return}es("Profile updated."),Jo(null),Yo(""),Nl(!1),bc(!1),wl(!1)},[wr,lr,ys,Rl,tr]),ts=r.useCallback(()=>{const u={},w=String(Ds||"").trim();w&&(u["x-taskforce-workspace-id"]=w);const P=Cc||za;return(P==="owner"||P==="admin"||P==="member"||P==="read-only")&&(u["x-taskforce-workspace-role"]=P),u},[za,Ds,Cc]),Ul=r.useCallback(u=>{const w=Jt,P=Qo;Wi.current=nd(),Pl.current={billing:w,teamManagement:P},zt("account_surface_opened",{surface:u,expectsBilling:w,expectsTeamManagement:P}),!w&&!P&&(zt("account_surface_ready",{surface:u,durationMs:0,teamManagementVisible:!1,billingPlanId:null}),Wi.current=null)},[Qo,Jt]),ei=r.useCallback(u=>{const w=Pl.current;if(w[u]=!1,w.billing||w.teamManagement)return;const P=Wi.current;P!==null&&(zt("account_surface_ready",{surface:wo?"account_hub":hs?"account_menu":"closed",durationMs:Math.round(nd()-P),teamManagementVisible:_o,billingPlanId:String(kn?.planId||"").trim()||null}),Wi.current=null)},[kn?.planId,_o,wo,hs]),br=r.useCallback(async u=>{const w=Da(Hh);if(!Jt)return xl(null),Il(null),Ac(null),ji("unknown"),Ni(!1),Rn(null),Gh(w,{identityKey:Na}),ei("billing"),ei("teamManagement"),null;const P=nd();Pc(!0),Il(null),Ni(Qo),Rn(null);try{const le=await OW(w,{identityKey:Na,force:u?.force===!0}),ke=le?.workspaceRole==="owner"||le?.workspaceRole==="admin"||le?.workspaceRole==="member"||le?.workspaceRole==="read-only"?le.workspaceRole:null,ft=le?.teamPlanMode==="team"||le?.teamPlanMode==="personal"?le.teamPlanMode:"unknown";return xl(le),Ac(ke),ji(ft),Rn(null),zt("account_profile_summary_resolved",{durationMs:Math.round(nd()-P),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.",ft=!!Fi.current;return Il(ke),ft?Rn(null):(Ac(null),ji("unknown"),Rn(ke)),zt("account_profile_summary_failed",{durationMs:Math.round(nd()-P),error:ke,preservedSummary:ft}),Fi.current}finally{Pc(!1),Ni(!1),ei("billing"),ei("teamManagement")}},[Na,Qo,Jt,ei,Da]),gu=r.useCallback(u=>{xl(u);const w=u?.workspaceRole==="owner"||u?.workspaceRole==="admin"||u?.workspaceRole==="member"||u?.workspaceRole==="read-only"?u.workspaceRole:null,P=u?.teamPlanMode==="team"||u?.teamPlanMode==="personal"?u.teamPlanMode:"unknown";Ac(w),ji(P)},[]),zl=r.useMemo(()=>qp(kn).allowReturnToApp,[kn]),Qm=r.useCallback(async()=>{const u=new URLSearchParams;u.set("screen","plans"),u.set("interval",Ks);const w=String(kn?.planId||"").trim(),P=String(kn?.planVersionId||"").trim();w&&u.set("planId",w),P&&u.set("planVersionId",P),s(`/?${u.toString()}`)},[kn?.planId,kn?.planVersionId,Ks,s]),Wc=r.useCallback(async()=>{Lr(null),Tl(null),Li(!0);try{const u=await fetch(Da("/api/taskforce/billing/portal-session"),{method:"POST",credentials:"include"}),w=await u.json().catch(()=>({}));if(!u.ok){Lr(String(w?.error||"Failed to create portal session."));return}const P=String(w?.url||"").trim();if(!P){Lr("Portal session did not return a redirect URL.");return}window.location.assign(P)}catch{Lr("Failed to open billing portal.")}finally{Li(!1)}},[Da]),yu=r.useCallback(async()=>{Lr(null),Tl(null),Li(!0);try{const u=String(kn?.planVersionId||"").trim();if(!u){Lr("No active plan version is linked to this account.");return}const w=await fetch(Da("/api/taskforce/billing/subscription"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({planVersionId:u,interval:Ks})}),P=await w.json().catch(()=>({}));if(!w.ok){Lr(String(P?.error||"Failed to update subscription interval."));return}Tl("Subscription updated."),Gh(Da(Hh),{identityKey:Na}),await br()}catch{Lr("Failed to update subscription interval.")}finally{Li(!1)}},[kn?.planVersionId,Na,Ks,br,Da]);r.useEffect(()=>{!Jt||!pa||br()},[pa,Jt,br]),r.useEffect(()=>{!wo&&!hs||br()},[br,wo,hs]);const ti=r.useCallback(async()=>{if(Ec){Tc(!0),Sr(null);try{const u=await fetch("/api/taskforce/admin/users",{method:"GET",credentials:"include",headers:ts()}),w=await u.json().catch(()=>({}));if(!u.ok){Sr(w?.error||"Failed to load workspace users.");return}const P=Array.isArray(w?.users)?w.users:[],le={owner:0,admin:1,member:2,"read-only":3},ke=P.map(ft=>({userId:String(ft?.userId||""),email:String(ft?.email||""),displayName:typeof ft?.displayName=="string"?ft.displayName:null,role:ft?.role==="owner"||ft?.role==="admin"||ft?.role==="member"||ft?.role==="read-only"?ft.role:"member",permissionMode:ft?.permissionMode==="read-only"?"read-only":"read-write",status:String(ft?.status||"active"),disabled:ft?.disabled===!0}));ke.sort((ft,Zt)=>{const wa=(le[ft.role]??99)-(le[Zt.role]??99);return wa!==0?wa:(ft.displayName||ft.email).localeCompare(Zt.displayName||Zt.email,void 0,{sensitivity:"base"})}),Cl(ke)}catch{Sr("Failed to load workspace users.")}finally{Tc(!1)}}},[Ec,ts]),Ao=r.useCallback(async u=>{if(!Ec)return;const w=Math.max(0,Math.floor(u));Gd(!0),Sr(null);try{const P=w*eu,le=await fetch(`/api/taskforce/admin/workspace-audit-logs?limit=${eu}&offset=${P}`,{method:"GET",credentials:"include",headers:ts()}),ke=await le.json().catch(()=>({}));if(!le.ok){Sr(ke?.error||"Failed to load workspace audit log.");return}const ft=Array.isArray(ke?.events)?ke.events:[];$m(ft.map(wa=>({id:String(wa?.id||""),action:String(wa?.action||""),actorUserId:String(wa?.actorUserId||""),actorRole:String(wa?.actorRole||""),createdAt:String(wa?.createdAt||wa?.ts||"")}))),Fm(w);const Zt=Math.max(1,Number(ke?.pages||1));Hm(Zt),zm(w+1<Zt)}catch{Sr("Failed to load workspace audit log.")}finally{Gd(!1)}},[Ec,ts]),Fc=r.useCallback(async()=>{await Promise.all([ti(),Ao(Es)])},[ti,Ao,Es]),Oc=r.useCallback((u="login")=>{const w=`${o.pathname}${o.search}${o.hash}`,P=!w||w==="/login"||!w.startsWith("/")?"/":w;Zn(!1),bo(!1),Ll(),s(`/login?mode=${u}&next=${encodeURIComponent(P)}`)},[Ll,o.hash,o.pathname,o.search,s]),Oi=r.useCallback(u=>{Zn(!1),Ti(!1);const w=new URLSearchParams({step:"workspace"});u?.intent==="create-workspace"&&w.set("intent","create-workspace"),s(`/setup?${w.toString()}`,{replace:!0})},[s]),ai=r.useCallback(async()=>{if(Zo)return;if(Br(!0),!Jt){try{m()}finally{Br(!1)}return}const u=Fi.current;if(u&&!qp(u).allowReturnToApp){Br(!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"&&Oi()}finally{Br(!1)}})()},[Fi,m,Jt,s,Oi,Zo,e,_t]),Hl=r.useCallback(()=>{if(i){ai();return}Wt(()=>{kr(),_("tasks"),Lo(!1),ir(null),on(null),$s(null),pi(!1),y==="add"&&A(),k("tasks"),(o.pathname!=="/"||o.search)&&s("/")})},[y,kr,Wt,ai,i,o.pathname,o.search,s,A,k,_]),Gl=r.useCallback(async u=>{if(!(!u||_c)){bl(""),Fd(!0);try{const w=await er(u);if(!w.success){if(w.code==="WORKSPACE_NOT_FOUND"||w.code==="WORKSPACE_ID_REQUIRED"){Oi();return}bl(w.error||"Failed to switch workspace.");return}await Y(!0),Zn(!1)}finally{Fd(!1)}}},[er,_c,Y,Oi]),$c=r.useCallback(async()=>{Zn(!1),$d(!0),Ri("members"),((await br())?.teamManagementAllowed??_o)&&(await ti(),await Ao(0))},[_o,br,Ao,ti]),xo=r.useCallback(async(u,w)=>{Sr(null),qo(u);try{const P=await w(),le=await P.json().catch(()=>({}));if(!P.ok){Sr(le?.error||"Team management action failed.");return}await Fc()}catch{Sr("Team management action failed.")}finally{qo(null)}},[Fc]),Vl=r.useCallback(async()=>{const u=Mi.trim();if(u){Al(!0),Sr(null),Ko(null);try{const w=await fetch("/api/taskforce/admin/users/invite",{method:"POST",headers:{"Content-Type":"application/json",...ts()},credentials:"include",body:JSON.stringify({workspaceId:Ds,email:u,role:Ms,permissionMode:Ms==="member"?Di:"read-write"})}),P=await w.json().catch(()=>({}));if(!w.ok){Sr(P?.error||"Failed to send invite.");return}Rc(""),P?.inviteEmailSent===!1?Ko(`Invite created, but email delivery failed${P?.inviteEmailError?`: ${String(P.inviteEmailError)}`:"."}`):Ko("Invite sent."),await Fc()}catch{Sr("Failed to send invite.")}finally{Al(!1)}}},[Xt,Fc,ts,Mi,Di,Ms]),$i=r.useMemo(()=>ye.trim().length>0,[ye]),Xm=r.useMemo(()=>Vo.filter(u=>u.status==="invited"),[Vo]),ql=r.useMemo(()=>{const u=qe.length!==S.length,w=Ne.length!==Fe.length,P=qt.length!==et.length,le=B.length!==eo.length,ke=Tt.length!==sa.length,ft=ra.length>0,Zt=Yr.length>0;return u||w||P||le||ke||ft||Zt},[S.length,Fe.length,sa.length,Tt.length,qe.length,qt.length,B.length,Ne.length,et.length,ra,Yr]),ku=r.useMemo(()=>po.length!==em.length||fo.length!==tm.length,[fo.length,po.length]),vu=oa,Ys=r.useMemo(()=>zF(vu),[vu]),Su=r.useMemo(()=>{switch(Ys.filterBar.kind){case"task-filters":return ql;case"document-filters":return ku;default:return!1}},[ku,ql,Ys.filterBar.kind]),Kl=$i||ql,wu=Kt==="archived"?Fn.length:Kt==="deleted"?On.length:me.length,bu=Kt==="archived"?vi.length:Kt==="deleted"?wi.length:e.filteredTasks.length,ep=Kl?`${bu}/${wu}`:`${wu}`,Zl=Kl?`${Kt.charAt(0).toUpperCase()+Kt.slice(1)} tasks matching current filters`:`${Kt.charAt(0).toUpperCase()+Kt.slice(1)} tasks`,tp=Qt==="local"&&Jt,ni=r.useCallback(u=>{if(!u)return"Never";const w=new Date(u);return Number.isNaN(w.getTime())?"Never":w.toLocaleString()},[]),Yl=r.useMemo(()=>ni(un),[ni,un]),_u=r.useMemo(()=>ni(_n),[ni,_n]),Cu=r.useMemo(()=>ni($a),[ni,$a]),Au=Dl||Ua||va||"None",ks=En(),vs=r.useMemo(()=>xW({runtimeMode:Qt,isAuthenticated:Jt,workspaceSyncStatus:Ar,workspaceCloudSyncEnabled:Sn,workspaceSyncSummary:wn,workspaceSyncRecommendedAction:Pn,workspaceSyncError:Au,pushBlockedReason:ks.pushBlockedReason||null,pullBlockedReason:ks.pullBlockedReason||null,retryBlockedReason:ks.retryBlockedReason||null}),[Qt,Jt,Ar,Sn,wn,Pn,Au,ks.pushBlockedReason,ks.pullBlockedReason,ks.retryBlockedReason]),xu=vs.lastError,[Iu,ap]=r.useState(vs.status),f=r.useMemo(()=>EW(ks),[ks]),{syncRecentEvents:L,syncRecentEventsLoading:H,syncRecentEventsError:Z,syncEventsListRef:$e,loadRecentSyncEvents:We}=lO({isOpen:El,workspaceId:Xt,refreshKeys:[$a,_n,Mn,Ar]}),ze=vs.actionable&&Ar==="syncing"&&xa==="active"&&Ia===0;r.useEffect(()=>{if(!ze){ap(vs.status);return}const u=window.setTimeout(()=>{ap(vs.status)},1200);return()=>window.clearTimeout(u)},[vs.status,ze]);const ya=r.useMemo(()=>DW({syncRecentEvents:L,syncRecentEventsError:Z,syncRecentEventsLoading:H}),[L,Z,H]),ka=r.useMemo(()=>LW(L),[L]),Fa=r.useMemo(()=>BW(L),[L]),Ta=r.useMemo(()=>MW(Iu),[Iu]),{workspaceSyncRepairBusy:jn,workspaceSyncRepairQueued:_r,workspaceSyncCopied:Jl,handleCopySyncDetails:Gy,handleQueueOrRunRepairSync:Vy}=mO({currentWorkspaceId:Xt,syncStatusLabel:Ta.label,workspaceSyncSummary:vs.summary,workspaceSyncRecommendedAction:vs.recommendedAction,formattedLastSyncTime:Yl,formattedLastPullTime:_u,formattedLastPushTime:Cu,workspaceSyncDiagnostics:ks,workspaceSyncPendingChanges:Ia,syncLastError:xu,workspaceSyncPhase:xa,referenceMismatchCount:ka,syncRecentEvents:L,loadRecentSyncEvents:We,pushNotice:_t,resetWorkspaceSyncCursorAndPull:la,workspaceSyncBusy:an}),qy=r.useMemo(()=>By(xa,jn,an),[an,xa,jn]),If=r.useMemo(()=>dd(Kr)||new Date,[Kr]),Ui=r.useMemo(()=>Qp(If,ma),[If,ma]),Io=r.useMemo(()=>{const u={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return ag.forEach(w=>{const P=sO(w,ma);u[w]=Jc(Uy(Ui,P))}),u},[Ui,ma]),Tf=r.useCallback(u=>{const w=dd(u);if(!w)return Io.mon;const P=w.getDay();return Io[P===1?"mon":P===2?"tue":P===3?"wed":P===4?"thu":P===5?"fri":P===6?Le?"sat":"fri":Le?"sun":"fri"]||Io.mon},[Io,Le]),Ky=r.useCallback(async()=>{if(!(So||xi.length===0)){Ii(!0);try{for(const u of xi){const w=u.scheduledDate||u.dueDate||Qa,P=Tf(w);await K(u.id,{scheduledDate:P,scheduledWeekKey:oO(P),orderInDay:null})}await Y(!0)}finally{Ii(!1)}}},[So,xi,Qa,Tf,K,Y]),Zy=r.useCallback(async()=>{if(!(So||vo.length===0)){Ii(!0);try{for(const u of vo)await K(u.id,{scheduledDate:null,scheduledWeekKey:null,orderInDay:null});await Y(!0)}finally{Ii(!1)}}},[So,vo,K,Y]),Yy=r.useMemo(()=>vm(Ui,{month:"short",day:"numeric",year:"numeric"},Wa),[Ui,Wa]),Rf=r.useMemo(()=>{const P=(Le?ma==="sunday"?["sun","mon","tue","wed","thu","fri","sat"]:ag:["mon","tue","wed","thu","fri"]).map(ke=>{const ft=dd(Io[ke])||Ui,Zt=Io[ke],wa=ke==="sat"||ke==="sun";return{value:ke,label:`${rO[ke]} ${vm(ft,{month:"short",day:"numeric"},Wa)}`,color:wa?"#1e3a8a":"#3b82f6",icon:"Calendar",date:Zt,isPast:Zt<Qa,isSelected:Zt===Kr,isWeekend:wa}}),le=vc.length>0;return[...gn?[{value:"backlog",label:"Backlog",color:"#64748b",icon:"Inbox"}]:[],...le?[{value:"expired",label:"Expired",color:"#ef4444",icon:"AlertTriangle"}]:[],...P]},[Le,gn,Io,Ui,vc.length,Qa,Kr,ma,Wa]),jf=r.useMemo(()=>{switch(h){case"category":return S;case"type":return(Fe||[]).map(u=>({...u,icon:u.icon||mm[u.value]?.icon,color:u.color||mm[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 Qe;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[...eo.filter(u=>u.value!=="done"&&u.value!=="cancelled"),{value:"completed",label:"Completed",icon:pd("done").icon,color:pd("done").color}];case"schedule":return Rf;default:return S}},[h,S,Fe,et,Qe,sa,Rf]),Jy=a.jsxs("div",{className:ht.accountMenuWrap,ref:tu,children:[a.jsx("button",{className:`tf-control-icon ${ht.avatarBtn}`,onClick:()=>{Zn(u=>{const w=!u;return w?Ul("account_menu"):(Wi.current=null,Pl.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":hs,children:a.jsx("span",{className:ht.avatarBadge,"aria-hidden":"true",children:ou?a.jsx("img",{src:Fl,alt:"",className:ht.avatarImage}):Lc||a.jsx(oi,{size:14,className:ht.avatarIcon})})}),hs&&a.jsxs("div",{className:ht.accountMenu,role:"menu","aria-label":"Account menu",children:[a.jsxs("div",{className:ht.accountMenuSection,children:[a.jsx("div",{className:ht.accountMenuSectionLabel,children:"Account"}),a.jsx("div",{className:ht.accountMenuHint,children:du?"Checking sign-in status...":Jt?a.jsx(a.Fragment,{children:Dc?a.jsx(a.Fragment,{children:a.jsxs("span",{className:ht.accountIdentityBlock,children:[a.jsx("span",{className:ht.accountIdentityEmail,children:Zs}),ru&&Xo&&a.jsxs("span",{className:ht.accountIdentityMetaLine,children:[a.jsx("span",{className:ht.accountIdentityMetaLabel,children:"Email"}),a.jsx("span",{className:ht.accountIdentityMetaValue,children:Co})]}),qd?a.jsxs("span",{className:ht.accountIdentityMetaLine,children:[a.jsx("span",{className:ht.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:ht.accountIdentityMetaValue,children:"Loading…"})]}):iu?a.jsxs("button",{"aria-label":`Subscription ${Bc}`,className:`${ht.accountIdentityMetaLine} ${ht.accountIdentityMetaAction}`,onClick:()=>{Zn(!1),d()},type:"button",children:[a.jsx("span",{className:ht.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:ht.accountIdentityMetaValue,children:Bc})]}):Mc?a.jsxs("span",{className:ht.accountIdentityMetaLine,children:[a.jsx("span",{className:ht.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:ht.accountIdentityMetaValue,children:"Unavailable"})]}):null,a.jsxs("span",{className:ht.accountIdentityMetaLine,children:[a.jsx("span",{className:ht.accountIdentityMetaLabel,children:"Runtime"}),a.jsx("span",{className:ht.accountIdentityMetaValue,children:cu})]}),a.jsxs("span",{className:ht.accountIdentityMetaLine,children:[a.jsx("span",{className:ht.accountIdentityMetaLabel,children:"Environment"}),a.jsx("span",{className:ht.accountIdentityMetaValue,children:lu})]})]})}):"Signed in"}):"Not signed in"})]}),Vm&&a.jsxs("div",{className:ht.accountMenuSection,children:[a.jsx("div",{className:ht.accountMenuSectionLabel,children:"Workspaces (Owned + Invited)"}),Ca.length===0&&a.jsx("div",{className:ht.accountMenuHint,children:"No workspaces found for this account yet."}),Ca.map(u=>a.jsxs("button",{className:`${ht.accountMenuItem} ${u.id===Xt?ht.accountMenuItemActive:""}`,onClick:()=>Gl(u.id),role:"menuitem",disabled:_c||u.id===Xt,title:u.description||u.name,children:[a.jsx(jo,{size:15}),a.jsxs("span",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:[a.jsx("span",{children:u.name}),a.jsx("span",{className:ht.accountMenuMeta,children:u.role})]})]},u.id)),a.jsxs("button",{className:ht.accountMenuItem,onClick:()=>{bl(""),Ti(!0),Zn(!1)},role:"menuitem",disabled:_c,children:[a.jsx(ao,{size:15}),"Create Workspace"]}),Od&&a.jsx("div",{className:ht.accountMenuError,children:Od})]}),Ud?a.jsx("div",{className:ht.accountMenuHint,children:"Resolving team management access..."}):_o?a.jsxs("button",{className:ht.accountMenuItem,onClick:()=>{$c()},role:"menuitem",children:[a.jsx(zk,{size:15}),"Team Management"]}):Wm?a.jsx("div",{className:ht.accountMenuHint,children:"Team Management unavailable right now."}):null,Jt&&a.jsxs("button",{className:ht.accountMenuItem,onClick:()=>{Zn(!1),wl(!0)},role:"menuitem",children:[a.jsx(oi,{size:15}),"Edit Profile"]}),a.jsxs("button",{className:ht.accountMenuItem,onClick:()=>{Zn(!1),d()},role:"menuitem",children:[a.jsx(Mp,{size:15}),"Plans"]}),a.jsxs("button",{className:ht.accountMenuItem,onClick:()=>{Zn(!1),Ul("account_hub"),bo(!0)},role:"menuitem",children:[a.jsx(oi,{size:15}),"Account Hub"]}),a.jsxs("button",{className:ht.accountMenuItem,onClick:()=>{Zn(!1),Go(!0)},role:"menuitem",children:[a.jsx(Ji,{size:15}),"Help & Support"]}),a.jsxs("button",{className:ht.accountMenuItem,onClick:()=>{Zn(!1),Go(!0)},role:"menuitem",children:[a.jsx(mg,{size:15}),"Contact Support"]}),Qt==="local"&&!Jt&&!du&&a.jsxs("button",{className:ht.accountMenuItem,onClick:()=>{Oc("login")},role:"menuitem",children:[a.jsx(oi,{size:15}),"Sign In / Register"]}),Jt&&a.jsxs("button",{className:ht.accountMenuItem,onClick:async()=>{Zn(!1),await na(),Qt==="cloud"&&s("/login",{replace:!0})},role:"menuitem",children:[a.jsx(Hk,{size:15}),"Sign Out"]})]})]}),Nf=r.useCallback(()=>{x(u=>u==="show"?"collapse":u==="collapse"?"hide":"show")},[x]),Pf=r.useCallback(()=>{A(),_("tasks"),k("add")},[A,k,_]),Qy=r.useCallback(u=>{const w=e.workstreams.find(P=>P.id===u);A(),ee(Po(w)||u),_("tasks"),k("add")},[e.workstreams,A,k,_,ee]),Mf=r.useCallback(u=>{Gs.current=!1,Hs(!1),$s(u),Sa(!1),Us(null),Vn(!1),zs(""),cr(""),sn("");const w=u.entityType==="workstream"&&ra&&wt.initiativeById.get(ra)||null;Jr(w?ns(w):""),on(null)},[wt.initiativeById,ra]),Ef=r.useCallback((u,w)=>{Gs.current=!1,Hs(!1),Us(u),Vn(!1),zs(""),cr(""),sn("");const P=u.entityType==="workstream"&&((w?wt.initiativeById.get(w):null)||ra&&wt.initiativeById.get(ra))||null;Jr(P?ns(P):""),on(null)},[wt.initiativeById,ra]),np=r.useCallback(()=>{Gs.current=!1,Hs(!1),$s(null),zs(""),cr(""),sn(""),Jr("")},[]),Df=r.useCallback(()=>{Gs.current=!1,Hs(!1),Us(null),zs(""),cr(""),sn(""),Jr("")},[]),Xy=r.useCallback(async()=>{const u=uo||us;if(!u||Gs.current)return;Gs.current=!0,Hs(!0);const w=!!uo,P=ha.trim()||null;try{if(u.entityType==="initiative")if(u.mode==="edit")await e.updateInitiative(u.targetId,{title:Bo.trim()||"Untitled Initiative",description:mo.trim()||null,ownerId:P}),ir({type:"initiative",id:u.targetId}),on(null),_t("Initiative updated","success");else{const le=await e.createInitiative({title:Bo.trim()||"Untitled Initiative",description:mo.trim()||null,ownerId:P});ir({type:"initiative",id:le.id}),on(null),_t("Initiative created","success")}else{const le=qn.trim(),ke=le.length===0?null:vp(wt.initiatives,le);if(le.length>0&&!ke){_t("Initiative not found by that reference.","error");return}const ft={title:Bo.trim()||"Untitled Workstream",description:mo.trim()||null,ownerId:P,initiativeId:ke?.id||null};if(u.mode==="edit")await e.updateWorkstream(u.targetId,ft),w?on(u.targetId):(ir({type:"workstream",id:u.targetId}),on(null)),_t("Workstream updated","success");else{const Zt=await e.createWorkstream(ft);w?on(Zt.id):(ir({type:"workstream",id:Zt.id}),on(null)),_t("Workstream created","success")}}w?Df():np()}catch(le){_t(le instanceof Error?le.message:"Failed to save planning item.","error")}finally{Gs.current=!1,Hs(!1)}},[np,Df,mo,qn,ha,Bo,us,uo,wt.initiatives,e,_t]),ek=r.useCallback(u=>{oc(w=>{const P=new Set(w);return P.has(u)?P.delete(u):P.add(u),P})},[]),tk=r.useCallback(u=>{co(w=>w===u?"":u),lo("")},[]),ak=r.useCallback((u,w)=>{lo(P=>{const le=P===u?"":u;return co(le&&w||""),le})},[]),nk=r.useCallback(u=>{$s(null),Us(null),Sa(!1),Vn(!1),ir(u?{type:"initiative",id:u}:null),on(null)},[]),rk=r.useCallback(u=>{$s(null),Us(null),Sa(!1),Vn(!1),ir(u?{type:"workstream",id:u}:null),on(null)},[]),sk=r.useCallback(u=>{Us(null),Vn(!1),on(u)},[]),rp=r.useCallback((u,w)=>{if(u==="workstream"&&w){Ef({mode:"create",entityType:"workstream"},w);return}if(Mf({mode:"create",entityType:u}),u==="workstream"){const P=(w?wt.initiativeById.get(w):null)||(ra?wt.initiativeById.get(ra):null)||null;Jr(P?ns(P):"")}},[Mf,Ef,wt.initiativeById,ra]),Lf=r.useCallback((u,w)=>{if(u==="initiative"){const P=wt.initiativeById.get(w);if(!P)return;$s({mode:"edit",entityType:"initiative",targetId:w}),zs(P.title),cr(P.description||""),sn(P.ownerId?String(P.ownerId):""),Jr("")}else{const P=wt.workstreamById.get(w)||wt.standaloneWorkstreams.find(ke=>ke.id===w);if(!P)return;$s({mode:"edit",entityType:"workstream",targetId:w}),zs(P.title),cr(P.description||""),sn(P.ownerId?String(P.ownerId):"");const le=P.initiativeId&&wt.initiativeById.get(P.initiativeId)||null;Jr(le?ns(le):"")}on(null)},[wt.initiativeById,wt.standaloneWorkstreams,wt.workstreamById]),Tu=r.useCallback(async(u,w)=>{const P=e.workstreams.find(Zt=>Zt.id===u);if(!P){_t("Workstream not found.","error");return}const le=typeof w=="string"?w.trim():w===null?"":qn.trim(),ke=le.length===0?null:vp(wt.initiatives,le);if(le.length>0&&!ke){_t("Initiative not found by that reference.","error");return}const ft=ke?.id||null;if((P.initiativeId||null)===ft){_t(ft?"Workstream already belongs to that initiative.":"Workstream is already standalone.","info");return}try{await e.updateWorkstream(u,{initiativeId:ft}),Jr(ke?ns(ke):""),_t(ft?"Initiative set":"Initiative removed","success")}catch{_t("Failed to set initiative.","error")}},[qn,wt.initiatives,e,_t]),Ru=r.useCallback(async(u,w)=>{const P=pc.get(u);if(!P){_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((P.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 ft=await ke.json().catch(()=>({}));_t(ft?.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,pc,wt.initiativeById,wt.workstreamById,_t]),ok=r.useCallback(async(u,w)=>{const P=w.trim();if(!P){_t("Enter a task reference.","error");return}const le=jg(P),ke=Ci.find(ft=>ft.id===P||Xi(ft)===P||le!==null&&ft.referenceNumber===le);if(!ke){_t("Task not found by that reference.","error");return}await Ru(ke.id,u)},[Ru,Ci,_t]),ik=r.useCallback(async(u,w)=>{const P=w.trim();if(!P){_t("Enter a workstream reference.","error");return}const le=wt.initiativeById.get(u);if(!le){_t("Initiative not found.","error");return}const ke=ny(P),ft=e.workstreams.find(Zt=>Zt.id===P||Po(Zt)===P||ke!==null&&Zt.referenceNumber===ke);if(!ft){_t("Workstream not found by that reference.","error");return}await Tu(ft.id,ns(le))},[Tu,wt.initiativeById,e.workstreams,_t]),Uc=r.useCallback((u,w)=>{const P=`${u}:${w}`,le=sl.current.get(P);if(le)return le;const ke=u==="initiative"?e.initiatives.find(ft=>ft.id===w):e.workstreams.find(ft=>ft.id===w);return Array.isArray(ke?.attachments)?ke.attachments:[]},[e.initiatives,e.workstreams]),zc=r.useCallback((u,w,P)=>{const le=`${u}:${w}`;sl.current.set(le,P);const ft=(cn.current.get(le)||Promise.resolve()).catch(()=>{}).then(()=>u==="initiative"?e.updateInitiative(w,{attachments:P}):e.updateWorkstream(w,{attachments:P}));cn.current.set(le,ft),ft.catch(Zt=>{_t(Zt instanceof Error?Zt.message:"Failed to update planning context.","error")}).finally(()=>{cn.current.get(le)===ft&&cn.current.delete(le)})},[e,_t]),ck=r.useCallback((u,w,P)=>{const le=Uc(u,w);zc(u,w,[...le,P])},[Uc,zc]),lk=r.useCallback((u,w,P)=>{const le=Uc(u,w);zc(u,w,le.filter((ke,ft)=>ft!==P))},[Uc,zc]),dk=r.useCallback((u,w,P,le)=>{const ft=Uc(u,w).map((Zt,wa)=>wa!==P?Zt:typeof Zt=="string"?{path:Zt,caption:le,timestamp:new Date().toISOString()}:{...Zt,caption:le});zc(u,w,ft)},[Uc,zc]),Bf=r.useCallback(u=>{co(u),lo("")},[]),Wf=r.useCallback(u=>{lo(u),co(u&&wt.workstreamInitiativeIds.get(u)||"")},[wt.workstreamInitiativeIds]),sp=r.useCallback(u=>{const w=tg(u,Ns);if(w!==u){const P=Ns.find(le=>le.id===u)?.label||"That module";_t(`${P} is not available in this build yet.`,"error");return}kr(),_(w)},[kr,_t,_,Ns]),Ff=r.useCallback(()=>{if(oa==="tasks"&&Mr){Lo(!1),ir(null),on(null),$s(null);return}if(oa!=="tasks"){_("tasks"),Lo(!0);return}Lo(u=>!u)},[Mr,oa,_]),Of=r.useCallback(()=>{if(oa!=="docs"){_("docs"),rc(!0);return}rc(u=>!u)},[oa,_]),$f=r.useCallback(()=>{if(oa!=="annotate"){_("annotate"),oo(!0);return}oo(u=>!u)},[oa,_]),Uf=r.useCallback(()=>{if(oa!=="agents"){_("agents"),Rs(!0);return}Rs(u=>!u)},[oa,_]),uk=r.useCallback(u=>{kr(),_("tasks"),Ft(u)},[kr,Ft,_]),mk=r.useCallback(u=>{kr(),_("tasks"),Ft(u)},[kr,Ft,_]),pk=r.useCallback((u,w)=>{ms(u),gi(w?.sessionId??null),Ad(P=>P+1),_("annotate")},[_]),fk=r.useCallback(({target:u,sessionId:w})=>{ms(P=>!P&&!u||P&&u&&P.taskId===u.taskId&&P.taskReferenceLabel===u.taskReferenceLabel&&P.assetId===u.assetId&&P.imageReferenceLabel===u.imageReferenceLabel&&P.path===u.path&&P.displayName===u.displayName?P:u),gi(P=>P===w?P:w)},[]),zf=r.useMemo(()=>[{value:"created",label:He("standalone.sortCreated")},{value:"updated",label:He("standalone.sortUpdated")},{value:"priority",label:He("standalone.sortPriority")},{value:"complexity",label:He("standalone.sortComplexity")},...iy(Nt,[...e.searchAgnosticTasks,...Fn])],[Fn,e.searchAgnosticTasks,Nt]),Hf=r.useMemo(()=>[{value:"status",label:He("standalone.groupStatus")},{value:"category",label:He("standalone.groupCategory")},{value:"type",label:He("standalone.groupType")},{value:"priority",label:He("standalone.groupPriority")},{value:"complexity",label:He("standalone.groupComplexity")},{value:"assignee",label:He("standalone.groupAssignee")},{value:"schedule",label:He("standalone.groupSchedule")}],[]),Gf=r.useMemo(()=>Ns.filter(u=>u.enabled),[Ns]),Vf=r.useMemo(()=>[{key:"empty-columns",icon:C==="show"?a.jsx(Kf,{size:16}):C==="collapse"?a.jsx(Zf,{size:16}):a.jsx(af,{size:16}),title:He(C==="show"?"standalone.showEmptyColumns":C==="collapse"?"standalone.compressEmptyColumns":"standalone.hideEmptyColumns"),onClick:Nf,active:C!=="show"},{key:"compressed-cards",icon:rt?a.jsx(Gk,{size:16}):a.jsx(Vk,{size:16}),title:He(rt?"standalone.expandCards":"standalone.compressCards"),onClick:()=>Me(!rt),active:rt}],[rt,Nf,C]),hk=r.useMemo(()=>[{key:"filter-toggle",icon:a.jsx(fg,{size:16}),title:He("standalone.toggleFilters"),onClick:()=>ui(!so),active:so,className:Su?p.filterGlow:""}],[Su,ui,so]),gk=r.useMemo(()=>{switch(Ys.filterBar.kind){case"task-filters":return a.jsx(s4,{categoryFilterOptions:uc,typeFilterOptions:hl,priorities:et,taxonomyDisplayLabels:Ge,filterCategories:qe,setFilterCategories:Ke,filterTypes:Ne,setFilterTypes:Vt,filterPriorities:qt,setFilterPriorities:Pt,filterStatus:B,setFilterStatus:J,filterAssignees:Tt,setFilterAssignees:Lt,assigneeOptions:sa,initiativeFilterOptions:Pd,selectedInitiativeId:ra,setSelectedInitiativeId:Bf,workstreamFilterOptions:hc,selectedWorkstreamId:Yr,setSelectedWorkstreamId:Wf,taskScope:Kt,setTaskScope:Ka,showArchive:ko,setShowArchive:ml,fetchArchive:pl,onDeleteAllDeleted:()=>{const u=On.length;u===0||!window.confirm(`Permanently delete ${u} deleted task${u===1?"":"s"}? This cannot be undone.`)||c()},clearFilters:()=>{ba(),co(""),lo("")}});case"document-filters":return a.jsx(o4,{typeFilters:po,setTypeFilters:Wo,attachmentFilters:fo,setAttachmentFilters:Fo,clearFilters:()=>{Wo(em.map(u=>u.value)),Fo(tm.map(u=>u.value))}});default:return a.jsx(n4,{})}},[sa,uc,ba,On.length,fo,po,Tt,qe,qt,B,Ne,Bf,Wf,Pd,et,ra,Yr,Fo,Wo,Lt,Ke,Pt,J,Vt,co,lo,ml,Ka,ko,Kt,Ge,hl,hc,Ys.filterBar.kind,pl,c]),yk=r.useMemo(()=>[{key:"zen-toggle",icon:a.jsx(qk,{size:16,fill:W?"currentColor":"none"}),title:He(W?"standalone.exitZenMode":"standalone.enterZenMode"),onClick:()=>V(),active:W}],[W,V]),kk=r.useMemo(()=>({search:a.jsx(t4,{value:ye,placeholder:He("standalone.searchPlaceholder"),active:$i,onChange:Ie,onClear:()=>Ie(""),clearTitle:He("standalone.clearSearchTitle")}),sort:a.jsx(Zh,{label:a.jsxs(a.Fragment,{children:[a.jsx(Kk,{size:12})," ",He("standalone.sortLabel")]}),value:Oa,options:zf,onChange:u=>en(u),trailingAction:a.jsx("button",{className:`tf-control-icon ${p.sortDirectionBtn}`,onClick:()=>e.toggleSortOrder(),title:e.sortOrder==="desc"?He("standalone.sortDirectionDescTitle"):He("standalone.sortDirectionAscTitle"),children:e.sortOrder==="desc"?a.jsx(cg,{size:14}):a.jsx(lg,{size:14})})}),"divider-primary":a.jsx(Yh,{}),grouping:a.jsx(Zh,{label:a.jsxs(a.Fragment,{children:[a.jsx(Mp,{size:12})," ",He("standalone.groupLabel")]}),value:h,options:Hf,onChange:u=>g(u)}),"divider-secondary":a.jsx(Yh,{}),"task-display-actions":a.jsx(Ap,{actions:Vf})}),[h,Hf,sp,$i,e,ye,g,Ie,en,Oa,zf,Vf,Ys.moduleId]),vk=r.useMemo(()=>({"add-task":a.jsx(a4,{icon:a.jsx(ao,{size:16}),label:He("standalone.addTask"),onClick:Pf}),"add-document":null}),[Pf]),Ql=r.useMemo(()=>{const u={tasks:a.jsx(ev,{size:18}),docs:a.jsx(Ep,{size:18}),annotate:a.jsx(Xk,{size:18}),workflows:a.jsx(Yf,{size:18}),agents:a.jsx(am,{size:18})},w=ta.workspaceToolButtonDisabled,P=oa==="docs"?a.jsx("button",{type:"button",className:`${ta.workspaceToolButton} ${ls?ta.workspaceToolButtonActive:""}`.trim(),onClick:Of,title:ls?"Collapse document tray":"Document tray","aria-label":ls?"Collapse document tray":"Document tray",children:ls?a.jsx(No,{size:18}):a.jsx(jo,{size:18})}):oa==="annotate"?a.jsx("button",{type:"button",className:`${ta.workspaceToolButton} ${Zr?ta.workspaceToolButtonActive:""}`.trim(),onClick:$f,title:Zr?"Collapse image tray":"Image tray","aria-label":Zr?"Collapse image tray":"Image tray",children:Zr?a.jsx(No,{size:18}):a.jsx(jo,{size:18})}):oa==="agents"?a.jsx("button",{type:"button",className:`${ta.workspaceToolButton} ${Ts?ta.workspaceToolButtonActive:""}`.trim(),onClick:Uf,title:Ts?"Collapse agent tray":"MCP settings tray","aria-label":Ts?"Collapse agent tray":"MCP settings tray",children:Ts?a.jsx(No,{size:18}):a.jsx(Jk,{size:18})}):oa==="workflows"?a.jsx("button",{type:"button",className:`${ta.workspaceToolButton} ${w}`.trim(),title:"Workflow tray coming soon","aria-label":"Workflow tray coming soon",disabled:!0,children:a.jsx(Yf,{size:18})}):a.jsx("button",{type:"button",className:`${ta.workspaceToolButton} ${oa==="tasks"&&Mr?ta.workspaceToolButtonActive:""}`.trim(),onClick:Ff,title:oa==="tasks"&&Mr?"Collapse planning trays":"Planning","aria-label":oa==="tasks"&&Mr?"Collapse planning trays":"Planning",children:oa==="tasks"&&Mr?a.jsx(No,{size:18}):a.jsx(Qk,{size:18})});return a.jsxs("aside",{className:ta.workspaceToolRail,"aria-label":"Workspace tools",children:[a.jsxs("div",{className:ta.workspaceToolRailMain,children:[P,a.jsx("div",{className:ta.workspaceToolRailDivider}),Gf.map(le=>a.jsx("button",{type:"button",className:`${ta.workspaceToolButton} ${oa===le.id?ta.workspaceToolButtonActive:""}`.trim(),onClick:()=>sp(le.id),title:le.label,"aria-label":le.label,children:u[le.id]},le.id))]}),a.jsxs("div",{className:ta.workspaceToolRailBottom,children:[a.jsx("div",{className:ta.workspaceToolRailDivider}),a.jsx("button",{type:"button",className:`${ta.workspaceToolButton} ${y==="settings"?ta.workspaceToolButtonActive:""}`.trim(),onClick:()=>{_a("general"),k("settings")},title:"Workspace Settings","aria-label":"Workspace Settings",children:a.jsx(tf,{size:18})})]})]})},[y,Ts,ls,Uf,Of,$f,sp,Ff,Zr,Mr,oa,_a,k,Gf]),[qf,Sk]=r.useState(null),wk=r.useCallback(u=>{Sk(u)},[]),bk=a.jsx(LF,{open:Mr,leftOffset:56,initiatives:wt.initiatives,standaloneWorkstreams:wt.standaloneWorkstreams,allStandaloneWorkstreams:wt.allStandaloneWorkstreams,activeInitiativeId:ra,activeWorkstreamId:Yr,expandedInitiativeIds:Er,detail:Ho,editor:us,secondaryPane:yc,currentWorkspaceId:Xt,assigneeOptions:sa.map(u=>({value:String(u.value),label:u.label,kind:u.kind,username:u.username??null,archivedAt:u.archivedAt??null})),draftInitiativeSummary:kc,draftTitle:Bo,draftDescription:mo,draftOwner:ha,draftInitiativeId:qn,onChangeDraftTitle:zs,onChangeDraftDescription:cr,onChangeDraftOwner:sn,onChangeDraftInitiativeId:Jr,onCollapseTreePane:()=>ds(!0),onExpandTreePane:()=>ds(!1),onCollapsePrimaryPane:()=>Sa(!0),onExpandPrimaryPane:()=>Sa(!1),onCollapseSecondaryPane:()=>Vn(!0),onExpandSecondaryPane:()=>Vn(!1),onBackFromSecondary:()=>{Gs.current=!1,Hs(!1),Us(null),on(null)},treeCollapsed:io,primaryCollapsed:fi,secondaryCollapsed:sc,onCancelEditor:np,onSubmitEditor:Xy,isSubmittingEditor:hi,onCreateInitiative:()=>rp("initiative"),onCreateWorkstream:()=>rp("workstream"),onCreateTaskInWorkstream:Qy,onCreateWorkstreamInInitiative:u=>rp("workstream",u),onAssignInitiativeToWorkstream:Tu,onOpenTaskById:Ft,onRemoveTaskFromWorkstream:u=>{Ru(u,null)},onAttachTaskToWorkstreamByReference:ok,onAttachWorkstreamToInitiativeByReference:ik,onAddPlanningContextFile:ck,onRemovePlanningContextFile:lk,onUpdatePlanningContextCaption:dk,onToggleInitiative:ek,onSelectInitiative:tk,onSelectWorkstream:ak,onOpenInitiativeDetails:nk,onOpenWorkstreamDetails:rk,onOpenNestedWorkstreamDetails:sk,onEditInitiative:u=>Lf("initiative",u),onEditWorkstream:u=>Lf("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")})}}),_k=Ys.headerSections.map(u=>{const w=kk[u];return w?a.jsx(Oe.Fragment,{children:w},u):null}).filter(Boolean),Ck=Ys.primaryAction?vk[Ys.primaryAction]:null;return a.jsxs("div",{className:`${ta.standaloneWrapper} ${W?p.zenModeEnabled:""}`,"data-theme":xe,children:[a.jsx(e4,{projectName:Ha,currentWorkspaceId:Xt,runtimeMode:Qt,theme:xe,onBrandClick:Hl,meta:a.jsxs(a.Fragment,{children:[a.jsx("span",{className:p.taskCountBadge,title:Zl,children:ep}),Qr&&Qr!=="anonymous"&&a.jsxs(a.Fragment,{children:[a.jsxs("span",{className:p.taskCountBadge,title:"Tasks assigned to me",children:[a.jsx(oi,{size:13,className:p.taskCountBadgeIcon,"aria-hidden":"true"}),Ld]}),a.jsxs("span",{className:`${p.taskCountBadge} ${Bd>0?p.taskCountBadgeAlert:""}`.trim(),title:"Tasks overdue",children:[a.jsx(Zk,{size:13,className:p.taskCountBadgeIcon,"aria-hidden":"true"}),Bd]})]}),tp&&a.jsx("button",{className:"tf-control-icon",onClick:Km,title:`Sync manager: ${Ta.label} | Last success: ${Yl}`,style:{marginLeft:"6px",height:"24px",width:"24px",padding:0,borderRadius:"999px",border:`1px solid ${Ta.border}`,background:Ta.background,color:Ta.color,display:"inline-flex",alignItems:"center",justifyContent:"center"},children:Ta.icon==="off"?a.jsx(Yk,{size:16}):a.jsx(hg,{size:16})})]}),actions:a.jsxs(a.Fragment,{children:[i&&a.jsxs(a.Fragment,{children:[Jt&&kn?.stripeCustomerId&&a.jsx("button",{className:"tf-control-icon",onClick:()=>{Wc()},title:"Manage billing",disabled:Kd,children:"Manage billing"}),a.jsx("button",{className:"tf-control-icon",onClick:()=>{if(zl){ai();return}m()},title:zl?"Continue to Taskforce":"Back",disabled:Zo,children:zl?"Take Me to Taskforce":"Back"})]}),!i&&a.jsxs(a.Fragment,{children:[_k,Ck]}),a.jsx(Ap,{actions:yk}),!i&&a.jsx(Ap,{actions:hk}),Jy]})}),a.jsx(xy,{notice:Tr,onDismiss:sr}),Aa&&a.jsx("div",{className:fe.authBlockedBanner,children:"Authentication required for this environment. Use the Account menu to sign in."}),!i&&so&&gk,i?a.jsx("div",{className:`${ta.standalonePage} ${ta.standaloneContent} ${p.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:p.spinner})}),children:a.jsx(kO,{...e,currentTheme:xe,projectName:Ha,currentWorkspaceId:Xt,authUserId:Na,apiBaseUrl:$l,connectedEnvironmentSource:e.config?.cloudAuthBaseUrl||e.config?.apiBaseUrl||"",resolveCloudAuthUrl:Da,embedded:!0,shellOwnsScroll:!0,onAccountProfileSummaryChange:gu,onContinueToTaskforce:ai,continueBusy:Zo})})}):oa==="docs"&&zo?a.jsxs("div",{className:`${ta.standalonePage} ${ta.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Ql,a.jsx(r.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(mr,{size:20,className:p.spinner})}),children:a.jsx(hO,{tasks:me,runtimeMode:Qt,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",typeFilters:po,attachmentFilters:fo,onTypeFiltersChange:Wo,onAttachmentFiltersChange:Fo,documentTrayOpen:ls,onCloseDocumentTray:()=>rc(!1),requestedDocPath:Nm,requestedDocAssetId:Pm,onRequestedDocHandled:()=>{ol(null),il(null)},onBackToTask:mk,enableTaskGeneration:!0})})]}):oa==="annotate"&&dc?a.jsxs("div",{className:`${ta.standalonePage} ${ta.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Ql,a.jsx(r.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(mr,{size:20,className:p.spinner})}),children:a.jsx(fO,{runtimeMode:Qt,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",workspaceId:Xt,sessionLoadReady:yi,requestedTarget:Kn,requestedSessionId:ho,requestedOpenVersion:Mm,imageTrayOpen:Zr,onCloseImageTray:()=>oo(!1),resolveTaskReferenceLabel:jd,resolveImageReferenceLabel:Nd,onOpenTarget:pk,onContextChange:fk,onBackToTask:uk})})]}):oa==="workflows"?a.jsxs("div",{className:`${ta.standalonePage} ${ta.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Ql,a.jsx(r.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(mr,{size:20,className:p.spinner})}),children:a.jsx(gO,{availableWorkflows:Vr,availableEnvironments:Bt,exportEnvironment:La,exportWorkflowsPath:e.exportWorkflowsPath,exportingResource:Hn,exportResult:As,onExportEnvironmentChange:e.setExportEnvironment,onExportWorkflows:Gn,onRefreshWorkflows:In,onFetchWorkflowTemplate:e.fetchWorkflowTemplate,onFetchWorkflowOverrideNames:e.fetchWorkflowOverrideNames,onSaveWorkflowTemplateDraft:e.saveWorkflowTemplateDraft,onResetWorkflowTemplateDraft:e.resetWorkflowTemplateDraft})})]}):oa==="agents"?a.jsxs("div",{className:`${ta.standalonePage} ${ta.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Ql,a.jsx(r.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(mr,{size:20,className:p.spinner})}),children:a.jsx(yO,{workspaceId:Xt,cloudAuthConfigured:ja,authSessionResolved:pa,isAuthenticated:Jt,cloudAiProfileSeatUsage:kn?.aiProfileSeatUsage??null,agentTrayOpen:Ts,onCloseAgentTray:()=>Rs(!1),mcpSettingsNode:a.jsx(ng,{settingsModel:{...he,initialSection:"mcp",onOpenCloudAuth:Oc},renderMode:"mcp-only"})})})]}):a.jsxs("div",{className:`${ta.standalonePage} ${ta.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:Mr?`${56+Md+6}px`:"62px",paddingRight:h==="schedule"&&Wn?`${Xp}px`:0},children:[Ql,a.jsx("div",{ref:wk,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&&Ai.length>0&&a.jsx("div",{className:p.boardRefreshIndicator,"aria-live":"polite","aria-label":"Refreshing tasks",children:a.jsx(mr,{size:14,className:p.spinner})}),a.jsx(wW,{tasks:yl,allTasks:Ed,columns:jf,groupBy:h,scheduleDates:Io,searchQuery:ye,filterCategories:qe,filterTypes:Ne,filterPriorities:qt,filterStatus:B,filterAssignees:Tt,filtersReady:Ht,assigneeOptions:sa,scheduleFilteredTaskIds:Array.from(gl),copiedId:yt,taxonomies:Nt,types:Fe,priorities:et,onUpdateTask:K,onTaskClick:u=>ve(u),onOpenTaskById:Ft,onCopyId:ot,onToggleInProgress:ae,onToggleReview:bt,onToggleComplete:Ve,onToggleCancel:Ot,onSetStatus:wc,onArchiveTask:Dt,onAddTaskToColumn:vl,showTaskCardStatusLabel:Se,onScheduleDaySelected:u=>{Eo(u);const w=dd(u);w&&ro(`${w.getFullYear()}-${String(w.getMonth()+1).padStart(2,"0")}`)},persistedScrollLeft:h==="schedule"?di:void 0,onScrollLeftChange:u=>{h==="schedule"&&Tn(u)},emptyColumnMode:C,categories:S,compressed:rt,readOnlyMode:Kt==="deleted"?"deleted":Kt==="archived"?"archived":null,recentlyChangedTaskIds:e.recentlyChangedTaskIds,sortBy:Oa,sortOrder:e.sortOrder,planningDropTargets:qf?Yi.createPortal(bk,qf):null,onAssignTaskToWorkstream:Ru,onAssignWorkstreamToInitiative:Tu,workstreams:e.workstreams,initiatives:e.initiatives,onUnarchive:u=>{if(Kt==="deleted"){const w=Si.get(u);if(!w)return;vt(w.id);return}Et(u)},onDelete:u=>{if(Kt==="deleted"){const w=Si.get(u);if(!w||!window.confirm("Permanently delete this task? This cannot be undone."))return;E(w.id);return}Ue(u)}},`${h}-${jf.map(u=>String(u.value)).join("|")}-${Io.mon}`),h==="schedule"&&!Wn&&a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>{ir(null),Pr(!0)},title:"Show Schedule Sidebar",style:{position:"absolute",top:"10px",right:"10px",zIndex:20},children:a.jsx(No,{size:16})})]}),h==="schedule"&&a.jsx(iO,{open:Wn,onClose:()=>Pr(!1),scheduleSelectedDate:Kr,setScheduleSelectedDate:Eo,scheduleCalendarMonth:Do,setScheduleCalendarMonth:ro,scheduleShowWeekends:Le,setScheduleShowWeekends:ne,scheduleShowBacklog:gn,setScheduleShowBacklog:Nr,scheduleOnlyExpired:yn,setScheduleOnlyExpired:li,expiredScheduledCount:Dd,overdueDueCount:kl,expiredLeafCandidates:xi,expiredRecoveryCandidates:vo,onMoveExpiredToSelectedWeek:Ky,onMoveExpiredToBacklog:Zy,scheduleBulkBusy:So,globalWeekStartsOn:ma,resolvedLocale:Wa,todayDateOnly:Qa,scheduleBaseTasks:mc,scheduleWeekStart:Ui,scheduleWeekLabel:Yy})]}),a.jsxs(Fs,{isOpen:y==="add",onClose:Sc,title:ue?ua?.isDeleted?"Deleted Task":"Edit Task":"New Task",size:mi?"full":"xl",theme:xe,headerActions:a.jsx("button",{className:"tf-control-icon",onClick:()=>pi(u=>!u),title:mi?"Exit full screen":"Enter full screen","aria-label":mi?"Exit full screen":"Enter full screen",children:mi?a.jsx(Zf,{size:18}):a.jsx(Kf,{size:18})}),draggable:!mi,closeOnOverlayClick:!1,children:[a.jsx(Ay,{editingTaskId:ue,loading:pe,autoSaveState:Rr,title:M,currentTask:ua,currentTaskWorkstream:yr,currentTaskInitiative:cs,workstreamInput:ie,onWorkstreamInputChange:ee,onSetWorkstreamForCurrentTask:It,handleSubmit:se,resetForm:A,handleCopyId:ot,copiedId:yt,tasks:me,handleToggleInProgress:ae,handleToggleReview:bt,handleToggleComplete:Ve,handleToggleCancel:Ot,handleSetStatus:wc,handleArchiveTask:Dt,handleUnarchiveTask:u=>{if(ua?.isDeleted){const w=Si.get(u);if(!w)return;vt(w.id);return}Et(u)},handleRestoreDeletedTask:ua?.deletedRecordId?u=>{vt(u)}:void 0,handlePermanentlyDeleteDeletedTask:ua?.deletedRecordId?u=>{window.confirm("Permanently delete this task? This cannot be undone.")&&(E(u),A(),k("tasks"))}:void 0}),a.jsx(Cy,{editingTaskId:ue,error:X,title:M,description:de,checklistItems:$,category:je,type:ce,priority:Pe,complexity:De,manualComplexityEnabled:Q,approach:b,assignee:D,scheduledDate:N,dueDate:be,workstreamInput:ie,formTaxonomies:we,onTaxonomyChange:(u,w)=>Te(P=>({...P,[u]:w})),taxonomies:Nt,comments:Ee,newCommentText:nt,contextFiles:dt,currentWorkspaceId:Xt,apiBaseUrl:$l,descriptionFocused:Ct,showMarkdownHelp:Xe,showChecklist:re,checklistEnabled:q,showComments:Ye,categories:S,types:Fe,priorities:et,taxonomyDisplayLabels:Ge,assigneeOptions:sa,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:yt,onTitleChange:O,onDescriptionChange:ge,onChecklistItemsChange:_e,onCategoryChange:oe,onTypeChange:Re,onPriorityChange:Ce,onComplexityChange:U,onApproachChange:u=>{R(u),Te(w=>({...w,approach:u}))},onAssigneeChange:te,onScheduledDateChange:G,onDueDateChange:z,onWorkstreamInputChange:ee,onNewCommentTextChange:gt,onDescriptionFocusedChange:ut,onShowMarkdownHelpChange:lt,onShowChecklistChange:it,onShowCommentsChange:jt,onOpenSettings:u=>{_a(u),k("settings")},onSubmit:se,commentsEndRef:no,onAddComment:()=>kt(nt),onOpenTaskById:Ft,onAddContextFile:u=>{ll(w=>[...w,u])},onRemoveContextFile:async u=>{ll(w=>w.filter((P,le)=>le!==u))},onUpdateContextCaption:(u,w)=>{ll(P=>P.map((le,ke)=>ke!==u?le:typeof le=="string"?{path:le,caption:w,timestamp:new Date().toISOString()}:{...le,caption:w}))},onCopyId:ot,onToggleInProgress:ae,onToggleReview:bt,onToggleComplete:Ve,onToggleCancel:Ot,onSetStatus:wc,onArchiveTask:Dt,onUnarchive:u=>{if(ua?.isDeleted){const w=Si.get(u);if(!w)return;vt(w.id);return}Et(u)},currentTask:ua})]}),a.jsx(Fs,{isOpen:y==="settings",onClose:Sc,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:p.spinner})}),children:a.jsx(ng,{settingsModel:{...he,onOpenCloudAuth:Oc},onSectionChange:_a})})}),a.jsx(_B,{prompt:Is,theme:xe,onClose:jr,onConfirm:Ja}),a.jsx(CB,{isOpen:qm,theme:xe,onClose:Zm,onConfirm:Ym}),a.jsx(bB,{isOpen:Wd,theme:xe,onClose:()=>Go(!1),supportMailtoHref:Jm,onOpenSettings:()=>{Go(!1),k("settings"),_a("general")},onOpenAccountHub:()=>{Go(!1),Ul("account_hub"),bo(!0)}}),a.jsx(SB,{isOpen:Sl,theme:xe,onClose:uu,onSave:()=>{hu()},displayName:Rl,email:Co,avatarDisplayUrl:Ol,accountBadgeInitial:Lc,saveBusy:Gm,avatarBusy:jl,saveError:Qd,saveNotice:Xd,onDisplayNameChange:Yd,onOpenAvatarManager:()=>{Xr(null),es(null),bc(!0)}}),a.jsx(fB,{isOpen:Dm,theme:xe,title:"Edit Profile Photo",currentImageUrl:Ol,fallbackInitial:Lc,accept:vO,busy:jl,hasPendingImage:!!lr,canRemove:!!Ol,error:Qd,notice:Xd,onClose:()=>bc(!1),onApplyImage:mu,onRemoveImage:fu,onDiscardPendingImage:pu}),a.jsx(qL,{isOpen:wo,theme:xe,runtimeMode:Qt,authRequiredForApi:tn,isAuthenticated:Jt,hasAuthIdentity:Dc,authIdentityLabel:Zs,billingLoading:qd,billingError:Mc,billingActionError:Dr,billingNotice:Zd,billingActionBusy:Kd,billingIntervalChoice:Ks,accountProfileSummary:kn,currentWorkspaceId:Xt,canOpenTeamManagement:_o,canManageWorkspaceSync:Ml,workspaceCloudSyncEnabled:Sn,syncStatusLabel:Ta.label,workspaceSyncError:Dl,syncControlBusy:au,cloudAuthEnabled:ja,availableAuthProviders:ea,onFetchLoginMethods:fa,onUnlinkLoginMethod:mn,onAddPassword:nn,onLinkProvider:u=>fr(u),onClose:()=>bo(!1),onOpenWorkspaceAudit:()=>{bo(!1),$c(),Ri("audit")},onBillingIntervalChange:Bi,onRefreshBilling:()=>{br()},onUpdateInterval:()=>{yu()},onManageBilling:()=>{Wc()},onStartCheckout:()=>{Qm()},onToggleWorkspaceSync:u=>{nu(u)},onOpenHelp:()=>{bo(!1),Go(!0)}}),a.jsx(fW,{isOpen:Lm,theme:xe,teamPlanMode:xc,teamMgmtError:gs,teamManagementTab:Bm,teamUsersLoading:Ic,teamUsers:Vo,teamActionBusyUserId:Pi,teamInviteFeedback:zd,teamInviteEmail:Mi,teamInviteRole:Ms,teamInvitePermissionMode:Di,teamInviteBusy:Nc,pendingInvites:Xm,teamAuditLoading:Hd,teamAuditEvents:Om,teamAuditPage:Es,teamAuditPages:Vd,teamAuditHasMore:Um,onClose:()=>$d(!1),onOpenMembersTab:()=>{Ri("members"),ti()},onOpenInvitesTab:()=>Ri("invites"),onOpenAuditTab:()=>{Ri("audit"),Ao(Es)},onMemberRoleChange:(u,w)=>{xo(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/role`,{method:"PATCH",headers:{"Content-Type":"application/json",...ts()},credentials:"include",body:JSON.stringify({workspaceId:Ds,role:w})}))},onMemberPermissionChange:(u,w)=>{xo(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/permission-mode`,{method:"PATCH",headers:{"Content-Type":"application/json",...ts()},credentials:"include",body:JSON.stringify({workspaceId:Ds,mode:w})}))},onToggleMemberDisabled:(u,w)=>{xo(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/disable`,{method:"PATCH",headers:{"Content-Type":"application/json",...ts()},credentials:"include",body:JSON.stringify({workspaceId:Ds,disabled:w})}))},onRevokeInvite:u=>{xo(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/invite/revoke`,{method:"POST",headers:{"Content-Type":"application/json",...ts()},credentials:"include",body:JSON.stringify({workspaceId:Ds})}))},onRemoveMember:u=>{xo(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}?workspaceId=${encodeURIComponent(Ds)}`,{method:"DELETE",headers:ts(),credentials:"include"}))},onInviteEmailChange:Rc,onInviteRoleChange:Ei,onInvitePermissionModeChange:jc,onSubmitInvite:()=>{Vl()},onLoadAuditPrevious:()=>{Ao(Es-1)},onLoadAuditNext:()=>{Ao(Es+1)}}),a.jsx(WL,{isOpen:_l,theme:xe,onClose:()=>Ti(!1),onConfirm:()=>Oi({intent:"create-workspace"})}),a.jsx(pW,{isOpen:El,theme:xe,currentWorkspaceLabel:Bl,syncStatusMeta:Ta,workspaceCloudSyncEnabled:Sn,syncControlBusy:au,canManageWorkspaceSync:Ml,workspaceSyncSummary:vs.summary,workspaceSyncRecommendedAction:vs.recommendedAction,workspaceSyncRepairBusy:jn,referenceMismatchCount:ka,syncStageLabel:qy,workspaceSyncPendingChanges:Ia,formattedLastSyncTime:Yl,formattedLastPullTime:_u,formattedLastPushTime:Cu,syncLastError:xu,workspaceSyncDiagnostics:ks,activeReferenceMismatchSummaries:Fa,syncDiagnosticsSummary:f,syncEventRows:ya,syncEventsListRef:$e,workspaceSyncRepairQueued:_r,workspaceSyncBusy:an,workspaceSyncCopied:Jl,runtimeMode:Qt,isAuthenticated:Jt,onClose:Ll,onToggleWorkspaceSync:u=>{nu(u)},onRepairSync:Vy,onCopyReport:()=>{Gy()},onOpenLogin:()=>{Oc("login")},onRetrySync:()=>{Cn()}}),F&&Yi.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(yd,{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:p.cancelBtn,onClick:()=>Be(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),a.jsx("button",{className:p.destructiveBtn,onClick:T,title:"Discard unsaved changes and leave",children:"Discard"}),a.jsxs("button",{className:p.submitBtn,onClick:j,disabled:pe,title:"Save changes and leave",children:[pe?a.jsx(mr,{size:16,className:p.spinner}):a.jsx(ug,{size:16}),"Save"]})]})]})}),document.body),pn&&Yi.createPortal(a.jsx("div",{className:Ma.overlay,children:a.jsxs("div",{className:Ma.browser,children:[a.jsxs("div",{className:Ma.header,children:[a.jsxs("div",{className:Ma.pathInfo,children:[a.jsx(jo,{size:14}),a.jsx("span",{children:Ga||"Project Root"})]}),a.jsxs("div",{className:Ma.actions,children:[Ga&&a.jsx("button",{className:p.helpLink,onClick:()=>{const u=Ga.split("/").filter(Boolean);u.pop(),xr(u.length?u.join("/")+"/":"")},children:"Back"}),a.jsx("button",{className:p.helpLink,onClick:()=>zn(!1),children:"Close"})]})]}),a.jsxs("div",{className:Ma.list,children:[Pa&&typeof Pa=="object"&&a.jsxs("div",{className:`${Ma.item} ${Ma.itemFile} ${Ma.itemCurrent}`,onClick:()=>rn(Ga),children:[a.jsx(to,{size:14})," Select Current: ./",Ga||"(root)"]}),zr.map(u=>a.jsxs("div",{className:Ma.item,onClick:()=>xr(Ga+u+"/"),children:[a.jsx(jo,{size:14})," ",u,"/"]},u)),An.map(u=>a.jsxs("div",{className:`${Ma.item} ${Ma.itemFile}`,onClick:()=>rn(Ga+u),children:[a.jsx(Ep,{size:14})," ",u]},u)),zr.length===0&&An.length===0&&a.jsx("div",{className:`${Ma.item} ${Ma.empty}`,children:"No items found"})]})]})}),document.body)]})}function CO(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"),_=g||v;return{setupGateActive:m,needsGlobalSetup:S,needsWorkspaceSetup:h,hasSetupReadError:_,phase:_?"setup-read-error":S?"needs-global-setup":h?"needs-workspace-setup":"ready"}}const Np="/taskforce/assets/taskforce-BxLPokNB.png";function rg(e){return{categories:!!e?.categories?.length,types:!!e?.types?.length,priorities:!!e?.priorities?.length}}function Pp(e){return(Array.isArray(e)?e:[]).map(t=>String(t.label||t.value||"").trim()).filter(Boolean).join(", ")}function sg(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 og({config:e={},initialTaskId:t,onTaskCountChange:n,onHeaderMouseDown:s,isDragging:o,onClose:l,mode:i="standalone"}){const d=Cg(),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",_=sg({gate:"plan_selection_required"}),C=_g(),[x,W]=r.useState(""),[V,B]=r.useState(""),[J,me]=r.useState(""),[ve,se]=r.useState(""),[A,K]=r.useState("login"),[ue,pe]=r.useState(""),[X,M]=r.useState(!1),[O,de]=r.useState(null),[ge,$]=r.useState(null),[_e,je]=r.useState(null),[oe,ce]=r.useState(!1),[Re,Pe]=r.useState(""),[Ce,De]=r.useState(""),[U,I]=r.useState(null),[b,R]=r.useState(null),[D,te]=r.useState("unknown"),[N,G]=r.useState(!1),[be,z]=r.useState([]),[ie,ee]=r.useState(null),[Q,q]=r.useState(null),[Se,we]=r.useState(null),[Te,Ee]=r.useState(!1),[nt,gt]=r.useState(0),[dt,St]=r.useState(0),[Ze,Ct]=r.useState(()=>Date.now()),[ut,Xe]=r.useState("core"),[lt,re]=r.useState(!1),[it,Ye]=r.useState(null),[jt,kt]=r.useState(null),[It,Ft]=r.useState(""),[Nt,Fe]=r.useState(""),[et,Ge]=r.useState("local"),[Qe,yt]=r.useState("details"),[ot,ae]=r.useState([]),[Ve,bt]=r.useState(""),[Ot,Dt]=r.useState(!1),[Ue,Et]=r.useState(null),[vt,E]=r.useState(!1),[c,Y]=r.useState(null),[ye,Ie]=r.useState(!1),qe=r.useRef(!1),Ke=r.useMemo(()=>sy(),[]),[Ne,Vt]=r.useState(Ke),[qt,Pt]=r.useState(()=>Ke.find(F=>F.isDefaultStarter)?.id||Ke[0]?.id||""),[Tt,Lt]=r.useState(()=>rg(Ke.find(F=>F.isDefaultStarter)||Ke[0]||null)),[Ht,sa]=r.useState(!1),[Kt,Ka]=r.useState(null),[Oa,en]=r.useState(!1),[ba,he]=r.useState(null),[ct,xe]=r.useState(!1),Rt=Bb({config:e,initialTaskId:t,onTaskCountChange:n,onClose:l}),{runtimeMode:tt,workspaceSwitchingEnabled:Gt,currentWorkspaceId:ga,cloudAuthConfigured:Ea,authRequiredForApi:ma,authBlocked:ia,isAuthenticated:Mt,hasBetaAccess:aa,authSessionResolved:Za,setupState:$t,runtimeCapabilities:Qn,refreshSetupContext:_a,retryBootstrapChecks:Qt,createWorkspace:Or,saveWorkspaceProfile:ja,fetchWorkspaces:tn,applyWorkspaceSyncStateSnapshot:Aa,workspaceCloudSyncEnabled:Jt,workspaceSyncPhase:Na,workspaceSyncSetupIntent:ca,workspaceSyncSummary:vn,workspaceSyncRecommendedAction:dn,workspaceSyncBusy:Xn,workspaceLastErrorMessage:pa,retryWorkspaceCloudSync:Cr,settingsModel:$r,fetchTasks:Sn,bootstrapState:xa,loginWithCredentials:Ar,beginOAuthLogin:wn,availableAuthProviders:Pn,registerWithCredentials:an,requestEmailVerification:Ia,confirmEmailVerification:Ur,requestPasswordReset:_t,confirmPasswordReset:bn,inspectInviteAcceptance:un,acceptInviteWithToken:_n,joinInviteWithToken:$a,authUserEmail:Mn,currentTheme:va,logout:Ua}=Rt,Cn=r.useCallback(async(F,Be)=>{const At=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:F,stateKey:"workspace-sync",patch:Be})}),Wt=await At.json().catch(()=>({}));if(!At.ok||Wt?.success===!1)throw new Error(Wt?.error||`Failed to configure workspace sync (${At.status})`);return Wt},[]),la=r.useMemo(()=>Ne.find(F=>F.id===qt)||Ne.find(F=>F.isDefaultStarter)||Ne[0]||null,[qt,Ne]);Tg(va);const En=Jp,Xt=r.useMemo(()=>{const F=String(e.cloudAuthBaseUrl||e.apiBaseUrl||"").trim();return F?F.replace(/\/+$/,""):""},[e.apiBaseUrl,e.cloudAuthBaseUrl]),za=tt==="cloud"||Qn?.runtimeMode==="cloud",Ca=!za&&Ea&&!!Xt,er=typeof window<"u"&&/^app\./i.test(window.location.hostname),tr=tt==="cloud"&&ma,Da=tt==="cloud"&&ia,na=d.pathname==="/login",fa=d.pathname==="/setup",mn=d.pathname==="/coming-soon",nn="/setup?step=workspace&source=cloud&postAuth=select-cloud-workspace",pr=!za&&et==="cloud",fr=pr&&Ca,ea=r.useMemo(()=>{if(c)return c;if(ca!=="attach-cloud-import")return null;const F=String(ga||"").trim();if(!F||F.toLowerCase()==="default")return null;const Be=ot.find(At=>At.id===F);return{workspaceId:F,name:Be?.name||F}},[ot,ga,c,ca]),ss=!!(ea&&ga===ea.workspaceId),Ha=!!(ea&&ss&&Na==="error"),ar=!!(ea&&ss&&Jt&&Na==="active"&&!Xn),os=r.useMemo(()=>{if(!ea)return[];const F=lt?"In progress":"Complete",Be=Ha?"Needs attention":Xn||Na==="attach-cloud"?"In progress":Na==="active"?"Complete":"Waiting",At=ye?"In progress":ar?"Ready":"Waiting";return[`Connect workspace: ${F}`,`Import cloud data: ${Be}`,`Open local workspace: ${At}`]},[ea,lt,Ha,Xn,Na,ye,ar]),pn=er?(!Mt||ia)&&!h&&!g&&!v:(tr&&!Mt||Da)&&!h&&!g&&!v,zn=tt==="cloud"&&Mt&&!aa&&!h&&!g&&!v,zr=tt==="cloud"&&Mt&&Za&&ba?.canAccessApp===!1&&ba?.canAccessPlans!==!1&&!h&&!g&&!v,An=tt==="cloud"&&Mt&&(!Za||!ct),Ga=Ea,xr=r.useMemo(()=>{switch(A){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"}},[A]),Pa=r.useMemo(()=>String(new URLSearchParams(d.search).get("step")||"").trim().toLowerCase(),[d.search]),Cs=r.useMemo(()=>String(new URLSearchParams(d.search).get("intent")||"").trim().toLowerCase(),[d.search]),rn=fa&&Pa==="workspace"&&Cs==="create-workspace",Ir=i!=="widget"&&xa.authPending&&!na&&!fa&&!h&&!g&&!v&&(tt==="cloud"||er),hr=r.useMemo(()=>CO({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:Mt}),[$t,tt,Mt]),Hr=hr.setupGateActive,fn=hr.needsGlobalSetup,gr=hr.needsWorkspaceSetup,xn=hr.hasSetupReadError,Dn=i!=="widget"&&xa.auth.resolved&&!pn&&!zn&&!h&&!g&&!v&&!na&&xa.appPending&&(fa||tt==="cloud"||er),nr=tt==="cloud"&&oe&&!v,is=xa.subtitle,Gr=rn||fa&&!!ea||fa&&Hr&&(xn||fn||gr),Je=r.useMemo(()=>Ir?"auth-bootstrap":nr||Dn?"app-bootstrap":na?"login":pn&&!na?"login-redirect":mn&&zn?"coming-soon":Gr?"guided-setup":"app",[mn,na,zn,pn,nr,Ir,Dn,Gr]),Ut=r.useCallback((F,Be,At)=>{const Wt=String(F||"").trim().toLowerCase(),ua=String(Be||"").trim().toLowerCase();return!!(!Wt||Wt==="system default workspace"||ua&&Wt===ua)},[]);r.useEffect(()=>{const F=$t?.mode==="operations"?"operations":"core";Xe(F)},[$t?.mode]),r.useEffect(()=>{if(tt!=="cloud"||!Mt){he(null),xe(!1);return}if(!Za){he(null),xe(!1);return}he(null),xe(!1);let F=!1;return(async()=>{try{const Be=await fetch("/api/taskforce/account/access-status",{method:"GET",credentials:"include"}),At=await Be.json().catch(()=>({}));if(F)return;if(!Be.ok){he(null),xe(!0);return}const Wt=String(At?.gate||"").trim().toLowerCase();if(Wt!=="ok"&&Wt!=="plan_selection_required"&&Wt!=="checkout_pending"&&Wt!=="misconfigured"&&Wt!=="missing_entitlement"){he(null),xe(!0);return}he({gate:Wt,canAccessApp:At?.canAccessApp===!0,canAccessPlans:At?.canAccessPlans!==!1,message:typeof At?.message=="string"?At.message:null}),xe(!0)}catch{F||(he(null),xe(!0))}})(),()=>{F=!0}},[Za,Mt,tt,d.pathname,d.search]),r.useEffect(()=>{if(rn){Ft(""),Fe("");return}if(!$t)return;const F=String($t.workspace?.name||"").trim(),Be=String($t.suggestedWorkspaceName||"").trim(),At=Ut(F,$t.workspaceId,$t.workspace?.description)?Be:F;Ft(At||Be||F),Fe(String($t.workspace?.description||""))},[$t?.workspace?.name,$t?.workspace?.description,$t?.suggestedWorkspaceName,$t?.workspaceId,rn,Ut]),r.useEffect(()=>{if(!fa||Pa!=="workspace")return;if(yt("details"),ea&&Ca){Ge("cloud"),E(!1);return}if(String(new URLSearchParams(d.search).get("source")||"").trim().toLowerCase()==="cloud"&&Ca){Ge("cloud"),E(!1);return}Ge("local")},[ea,Ca,fa,d.search,Pa]);const La=r.useCallback(async()=>{if(!Ca||!Mt){ae([]),bt("");return}Dt(!0),Et(null);try{const F=await fetch(`${Xt}/api/taskforce/workspaces`,{method:"GET",credentials:"include"}),Be=await F.json().catch(()=>({}));if(!F.ok||Be?.success===!1){ae([]),bt(""),Et(Be?.error||`Failed to load cloud projects (${F.status})`);return}const At=Array.isArray(Be?.workspaces)?Be.workspaces.map(Wt=>({id:String(Wt?.id||"").trim(),name:String(Wt?.name||Wt?.id||"").trim(),description:typeof Wt?.description=="string"?Wt.description:null})).filter(Wt=>Wt.id.length>0):[];ae(At),bt(Wt=>Wt&&At.some(ua=>ua.id===Wt)?Wt:At[0]?.id||"")}catch{ae([]),bt(""),Et("Failed to load cloud projects.")}finally{Dt(!1)}},[Ca,Mt,Xt]);r.useEffect(()=>{et==="cloud"&&La()},[La,et]),r.useEffect(()=>{if(!fa||Pa!=="workspace"||et==="cloud")return;let F=!1;return sa(!0),Ka(null),fetch("/api/taskforce/taxonomy-library",{method:"GET",credentials:"include"}).then(async Be=>{if(!Be.ok)throw new Error(`Failed to load setup libraries (${Be.status})`);const At=await Be.json().catch(()=>({})),Wt=Array.isArray(At?.packs)?At.packs:[];F||Wt.length===0||(Vt(Wt),Pt(ua=>Wt.some(yr=>yr.id===ua)?ua:Wt.find(yr=>yr.isDefaultStarter)?.id||Wt[0]?.id||""))}).catch(Be=>{F||(Vt(Ke),Ka(Be instanceof Error?Be.message:"Failed to load setup libraries."))}).finally(()=>{F||sa(!1)}),()=>{F=!0}},[Ke,fa,Pa,et]),r.useEffect(()=>{Lt(rg(la))},[qt,la]),r.useEffect(()=>{et==="cloud"&&yt("details")},[et]),r.useEffect(()=>{fr||(Y(null),Ie(!1),qe.current=!1)},[fr]),r.useEffect(()=>{!Ha||!ea||(kt(null),Ye(pa||`Failed to import "${ea.name}" from cloud. Retry import to continue.`))},[ea,Ha,pa]),r.useEffect(()=>{if(!ar||!ea||qe.current)return;let F=!1;return qe.current=!0,Ie(!0),Ye(null),kt(`Workspace import complete. Opening ${ea.name}...`),(async()=>{try{if(await _a(),await Promise.all([tn(),Sn(!0)]),F)return;await Cn(ea.workspaceId,{setupIntent:null}),Aa({enabled:Jt,phase:Na,setupIntent:null}),Y(null),C("/",{replace:!0})}catch{if(F)return;kt(null),Ye(`Imported "${ea.name}" but failed to finish opening it.`),Ie(!1),qe.current=!1}})(),()=>{F=!0}},[ea,Aa,Sn,tn,ar,C,Cn,_a]);const da=r.useMemo(()=>{const F=new URLSearchParams(d.search).get("next")||"/";if(F.startsWith("/"))return F==="/login"?"/":F;try{const Be=new URL(F),At=Be.hostname.toLowerCase(),Wt=At==="localhost"||At==="127.0.0.1"||At==="::1",ua=At==="taskforcehq.ai"||At.endsWith(".taskforcehq.ai");if((Be.protocol==="http:"||Be.protocol==="https:")&&(Wt||ua))return Be.toString()}catch{return"/"}return"/"},[d.search]),Va=r.useMemo(()=>da.startsWith("/")?da:"/",[da]),Ya=r.useCallback((F,Be)=>{if(F){if(F.startsWith("/")){C(F,{replace:Be?.replace===!0});return}typeof window<"u"&&(Be?.replace===!0?window.location.replace(F):window.location.assign(F))}},[C]),As=r.useMemo(()=>{try{const F=new URL(Va,"https://taskforce.local");return F.pathname==="/setup"&&F.searchParams.get("step")==="workspace"&&F.searchParams.get("source")==="cloud"&&F.searchParams.get("postAuth")==="select-cloud-workspace"}catch{return!1}},[Va]),Hn=r.useCallback(()=>As?nn:"/setup?step=workspace",[As]),Vr=S==="year"?"year":"month",Gn=r.useCallback(F=>!!(F?.planSelectionRequired||F?.checkoutPending||F?.commercialState==="pending_plan_selection"||F?.commercialState==="checkout_pending"),[]),In=r.useCallback(F=>F?.planSelectionRequired||F?.commercialState==="pending_plan_selection"?_:F?.checkoutPending||F?.commercialState==="checkout_pending"?sg({gate:"checkout_pending",checkout:k?"start":null,planId:y||null,planVersionId:k||null,interval:k?Vr:null}):da,[da,_,Vr,y,k]),Bt=r.useMemo(()=>{const F=String(new URLSearchParams(d.search).get("mode")||"").trim().toLowerCase();return F==="register"?Ga?"register":"login":F==="verify"||F==="forgot"||F==="reset"||F==="invite"?F:"login"},[Ga,d.search]),Ln=r.useMemo(()=>String(new URLSearchParams(d.search).get("token")||"").trim(),[d.search]),Ba=r.useCallback(F=>{const Be=new URLSearchParams(d.search),At=F==="register"&&!Ga?"login":F;At==="login"?Be.delete("mode"):Be.set("mode",At);const Wt=Be.toString();C(`/login${Wt?`?${Wt}`:""}`,{replace:!0})},[Ga,d.search,C]);r.useEffect(()=>{na&&(K(Bt),Bt==="verify"&&Ln&&pe(Ln),Bt==="reset"&&Ln&&Pe(Ln),Bt==="invite"&&Ln&&De(Ln))},[na,Bt,Ln]),r.useEffect(()=>{A!=="verify"&&(na&&Bt==="verify"||(M(!1),de(null),$(null)))},[A,na,Bt]),r.useEffect(()=>{A!=="register"&&se("")},[A]),r.useEffect(()=>{if(!_e||!Mt||!_e.commercialOnboardingGate&&(!Za||An))return;const F=!_e.commercialOnboardingGate&&_e.workspaceSetupRequired?Hn():_e.path,Be=`${d.pathname}${d.search}${d.hash||""}`;if(F.startsWith("/")){Be!==F&&C(F,{replace:!0});return}Ya(F,{replace:!0})},[Za,An,Mt,d.hash,d.pathname,d.search,C,Ya,_e,Hn]),r.useEffect(()=>{if(!oe||!Za)return;if(!Mt){ce(!1),je(null);return}if(ct&&ba?.canAccessApp===!0){W(""),B(""),me(""),se(""),je(null),ce(!1);return}const F=_e?.commercialOnboardingGate?_e.path:_,Be=`${d.pathname}${d.search}${d.hash||""}`;if(F.startsWith("/")){Be!==F&&C(F,{replace:!0});return}Ya(F,{replace:!0})},[ba?.canAccessApp,ct,Za,oe,Mt,d.hash,d.pathname,d.search,C,Ya,_e,_]),r.useEffect(()=>{if(!_e||!Mt)return;const F=!_e.commercialOnboardingGate&&_e.workspaceSetupRequired?Hn():_e.path;`${d.pathname}${d.search}${d.hash||""}`===F&&(_e.commercialOnboardingGate||(W(""),B(""),me(""),se(""),je(null)))},[d.hash,d.pathname,d.search,Mt,_e,Hn,tt]),r.useEffect(()=>{na&&(document.title=xr)},[xr,na]),r.useEffect(()=>{if(!na||A!=="invite"||!Ce.trim())return;let F=!0;return(async()=>{const Be=await un(Ce);if(F)if(Be.success){I(Be.email||null),R(Be.workspaceId||null),G(Be.passwordRequired===!0);const At=(Be.availableMethods||[]).filter(yr=>yr==="google"||yr==="github"||yr==="apple");z(Be.inviteeState==="pending_setup"?At:[]);const Wt=!!(Mt&&Mn&&Be.email&&Mn.trim().toLowerCase()===Be.email.trim().toLowerCase()),ua=Be.passwordRequired===!0?"new_user":Wt?"existing_user_ready":"existing_user_signed_out";te(ua),ee(ua==="new_user"?"Create your account password to join this workspace.":ua==="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 I(null),R(null),te("invalid"),G(!1),z([]),q(qr(Be)),we(Be.code||Be.state||null)})(),()=>{F=!1}},[na,A,Ce,un,Mt,Mn]),r.useEffect(()=>{A==="invite"&&D==="existing_user_signed_out"&&U&&W(F=>F.trim()?F:U)},[A,D,U]),r.useEffect(()=>{if(!(nt>Date.now()||dt>Date.now()))return;const Be=window.setInterval(()=>Ct(Date.now()),1e3);return()=>window.clearInterval(Be)},[nt,dt]);const rr=Math.max(0,Math.ceil((nt-Ze)/1e3)),Tr=Math.max(0,Math.ceil((dt-Ze)/1e3)),sr=rr>0,or=Tr>0,xs=r.useMemo(()=>Ty(),[]),qr=F=>{const Be=F.error||"Request failed.",At=F.code||F.state;return At?`[${At}] ${Be}`:Be},hn=F=>F?.deliveryAttempted===!1?F?.intro||"If that account exists and still needs verification, we sent an email.":F?.emailSent===!1?`Verification email failed to send. ${F?.emailError||"Try Resend Verification again."}`:"Verification email resent.",Bn=F=>F?.deliveryAttempted===!1?"If that account exists, we sent password reset instructions.":F?.emailSent===!1?`Password reset email failed to send. ${F?.emailError||"Try again in a minute."}`:"Password reset instructions sent.";r.useEffect(()=>{if(i==="widget"||na&&Te)return;const F=tt==="cloud"&&Mt&&ct&&ba?.canAccessApp===!1&&ba?.canAccessPlans!==!1;if(xa.workspace.pending&&!F)return;if(zn){mn||C("/coming-soon",{replace:!0});return}if(mn&&!zn){C("/",{replace:!0});return}if(pn){if(!na){const At=`${d.pathname}${d.search}${d.hash}`;C(`/login?next=${encodeURIComponent(At||"/")}`,{replace:!0});return}return}else{const At=na&&A==="invite"&&Ce.trim().length>0;if(na&&Mt&&!At&&(!!_e||xa.workspace.pending||A==="register"||A==="verify"||!xa.config.loaded||An))return;na&&Mt&&!At&&Ya(da,{replace:!0})}if(!(na&&!Mt||_e&&Mt||na&&Mt&&(A==="register"||A==="verify"||A==="invite"&&Ce.trim().length>0))&&!oe&&!v){if(zr){if(!v){const At=encodeURIComponent(String(ba?.gate||"plan_selection_required"));C(`/?screen=plans&gate=${At}`,{replace:!0})}return}if(ea){fa&&Pa==="workspace"&&new URLSearchParams(d.search).get("source")==="cloud"||C(nn,{replace:!0});return}if(!(v&&An)&&!(v&&tt==="cloud"&&ct&&ba?.canAccessApp===!1&&ba?.canAccessPlans!==!1)){if(Hr){if(xn){(!fa||Pa!=="error")&&C("/setup?step=error",{replace:!0});return}if(fn){(!fa||Pa!=="global")&&C("/setup?step=global",{replace:!0});return}if(gr){(!fa||Pa!=="workspace")&&C(Hn(),{replace:!0});return}fa&&C("/",{replace:!0});return}fa&&$t&&!rn&&C("/",{replace:!0})}}},[i,pn,zn,zr,na,fa,mn,g,v,ba,ba?.gate,ct,A,oe,An,Hr,$t,xn,rn,ea,fn,gr,Pa,xa,tt,Te,Mt,ct,Ce,d.pathname,d.search,d.hash,C,Va,_e,nn]),r.useEffect(()=>{if(i==="widget"||tt!=="local"||!xa.config.loaded||na||fa)return;const F=String(ga||"").trim().toLowerCase();(!F||F==="default")&&C("/setup?step=workspace",{replace:!0})},[i,tt,xa.config.loaded,na,fa,ga,C]);const no=r.useCallback(async()=>{en(!0);try{await Qt()}finally{en(!1)}},[Qt]),Rr=r.useCallback(async()=>{await Ua(),C("/login",{replace:!0})},[Ua,C]);if(i==="widget")return a.jsx(sD,{...Rt,onHeaderMouseDown:s,isDragging:o,onClose:l});if(h){const F=new URLSearchParams(d.search);return F.set("screen","plans"),a.jsx(Qf,{to:`/?${F.toString()}${d.hash||""}`,replace:!0})}if(g){const F=new URLSearchParams(d.search);return F.set("screen","plans"),a.jsx(Qf,{to:`/?${F.toString()}${d.hash||""}`,replace:!0})}if(Je==="auth-bootstrap")return a.jsx("div",{className:ta.standaloneWrapper,"data-theme":va,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(Je==="app-bootstrap")return a.jsx("div",{className:ta.standaloneWrapper,"data-theme":va,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:is}),xa.stalled&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:fe.loginError,children:xa.error||"Startup checks timed out."}),a.jsx("button",{className:p.submitBtn,disabled:Oa,onClick:no,children:Oa?"Retrying...":"Retry checks"}),za&&a.jsx("button",{className:p.cancelBtn,disabled:Oa,onClick:Rr,children:"Go to sign-in"})]})]})})});if(Je==="login")return a.jsx("div",{className:ta.standaloneWrapper,"data-theme":va,children:a.jsx("div",{className:fe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${Np})`},children:a.jsxs("div",{className:fe.loginCard,children:[!za&&!pn&&a.jsx("button",{className:fe.loginCloseBtn,"aria-label":"Close sign in","data-testid":"auth-close-button",onClick:()=>C(Va,{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:[A==="login"&&"Sign in with your account credentials.",A==="register"&&"Create your Taskforce account.",A==="verify"&&"Enter your verification token.",A==="forgot"&&"Request a password reset link.",A==="reset"&&"Set a new password using your reset token.",A==="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.")]}),(A==="login"||A==="register"||A==="verify"||A==="forgot"||A==="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:`${p.input} ${fe.loginInput}`,type:"email",value:x,placeholder:"Email",autoComplete:"email","data-testid":"auth-email-input",onChange:F=>W(F.target.value)})]}),A==="register"&&a.jsxs("label",{className:fe.loginField,children:[a.jsx("span",{className:fe.loginFieldLabel,children:"Display name"}),a.jsx("input",{className:`${p.input} ${fe.loginInput}`,type:"text",value:V,placeholder:"Display name",autoComplete:"nickname","data-testid":"auth-display-name-input",onChange:F=>B(F.target.value)})]}),(A==="login"||A==="register"||A==="reset"||A==="invite"&&(N||D==="existing_user_signed_out"))&&a.jsxs("label",{className:fe.loginField,children:[a.jsx("span",{className:fe.loginFieldLabel,children:A==="reset"?"New password":A==="invite"&&N?"Create password":"Password"}),a.jsx("input",{className:`${p.input} ${fe.loginInput}`,type:"password",value:J,placeholder:A==="reset"?"New password":A==="invite"&&N?"Create password":"Password",autoComplete:A==="register"||A==="reset"||A==="invite"&&N?"new-password":"current-password","data-testid":"auth-password-input",onChange:F=>me(F.target.value)})]}),(A==="register"||A==="invite"&&N)&&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:`${p.input} ${fe.loginInput}`,type:"password",value:ve,placeholder:"Confirm password",autoComplete:"new-password","data-testid":"auth-confirm-password-input",onChange:F=>se(F.target.value)})]})}),(A==="register"||A==="invite"&&N)&&a.jsx("p",{className:fe.loginSubtitle,children:xs.join(" ")}),A==="verify"&&a.jsxs("label",{className:fe.loginField,children:[a.jsx("span",{className:fe.loginFieldLabel,children:"Verification token"}),a.jsx("input",{className:`${p.input} ${fe.loginInput}`,type:"text",value:ue,placeholder:"Verification token",autoComplete:"one-time-code","data-testid":"auth-verification-token-input",onChange:F=>pe(F.target.value)})]}),A==="reset"&&a.jsxs("label",{className:fe.loginField,children:[a.jsx("span",{className:fe.loginFieldLabel,children:"Reset token"}),a.jsx("input",{className:`${p.input} ${fe.loginInput}`,type:"text",value:Re,placeholder:"Reset token",autoComplete:"one-time-code","data-testid":"auth-reset-token-input",onChange:F=>Pe(F.target.value)})]}),A==="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:`${p.input} ${fe.loginInput}`,type:"text",value:Ce,placeholder:"Invite token","data-testid":"auth-invite-token-input",onChange:F=>De(F.target.value)})]}),U&&a.jsxs("p",{className:fe.loginSubtitle,children:["Invite for: ",a.jsx("strong",{children:U}),b?` · Workspace: ${b}`:""]})]}),ie&&a.jsx("p",{className:fe.loginSubtitle,children:ie}),Q&&a.jsx("p",{className:fe.loginError,children:Q}),A==="login"&&Se==="EMAIL_NOT_VERIFIED"&&x.trim()&&a.jsx("button",{className:fe.authModeLink,disabled:Te||sr,onClick:async()=>{Ee(!0),ee(null);const F=await Ia(x);F.success?(gt(Date.now()+3e4),Ba("verify"),F.verificationToken&&pe(F.verificationToken),ee(hn(F)),q(null),we(null)):q(qr(F)),Ee(!1)},children:sr?`Resend in ${rr}s`:"Resend Verification Email"}),a.jsx("div",{className:fe.authPrimaryActions,role:"group","aria-label":"Primary authentication action",children:a.jsx("button",{className:`${p.submitBtn} ${fe.loginPrimaryBtn}`,disabled:Te||A==="forgot"&&or,"data-testid":"auth-submit-button",onClick:async()=>{if(Ee(!0),ee(null),q(null),we(null),A==="register"&&!V.trim()){q("Display name is required."),Ee(!1);return}if(A==="register"){const Be=Ry(J,{email:x,displayName:V});if(!Be.ok){q(Be.message||"Password does not meet the password policy."),we(Be.code||null),Ee(!1);return}if(J!==ve){q("Passwords do not match."),we("PASSWORD_CONFIRMATION_MISMATCH"),Ee(!1);return}}let F={success:!1};if(A==="login"?F=await Ar(x,J):A==="register"?F=await an(x,J,{displayName:V,planId:y||void 0,planVersionId:k||void 0,interval:S||void 0}):A==="verify"?F=await Ur(ue):A==="forgot"?F=await _t(x):A==="reset"?F=await bn(Re,J):A==="invite"&&(D==="existing_user_signed_out"?F=await Ar(x,J):F=N?await _n(Ce,J):await $a(Ce)),F.success)if(A==="register"){const Be=In(F),At=Gn(F);F.verificationRequired?(M(!!F.workspaceSetupRequired),de(At?String(F.commercialState||"").trim()||(F.planSelectionRequired?"pending_plan_selection":"checkout_pending"):null),$(Be),F.verificationToken&&pe(F.verificationToken),gt(Date.now()+3e4),Ba("verify"),ee(F.emailSent===!1?`Account created, but verification email failed to send. ${F.emailError||"Try Resend Verification again."}`:"Account created. Check your email for verification instructions.")):(ce(At),je({path:Be,workspaceSetupRequired:!!F.workspaceSetupRequired,commercialOnboardingGate:At}))}else if(A==="verify"){await Qt();const Be=O==="pending_plan_selection"||O==="checkout_pending";ce(Be),je({path:ge||Va,workspaceSetupRequired:X,commercialOnboardingGate:Be})}else if(A==="forgot"){const Be=F.deliveryAttempted===!0&&F.emailSent===!1;F.resetToken&&Pe(F.resetToken),ee(Bn(F)),Be||(St(Date.now()+3e4),Ba("reset"))}else if(A==="reset")Ba("login"),ee("Password updated. Sign in with your new password.");else if(A==="invite"){if(D==="existing_user_signed_out"){const Be=String(U||"").trim().toLowerCase(),At=x.trim().toLowerCase();if(Be&&At===Be){K("invite"),te("existing_user_ready"),me(""),se(""),ee("Signed in. Review the invite details to continue."),q(null),we(null),Ee(!1);return}Be&&W(U||""),te("existing_user_signed_out"),me(""),se(""),ee(Be?`Signed in, but this invite is for ${U}. 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"),Ee(!1);return}if(F.workspaceSetupRequired){C(Hn(),{replace:!0}),Ee(!1);return}Ya(da,{replace:!0})}else if(A==="login"){if(Ce.trim()){K("invite"),me(""),se(""),ee("Signed in. Review the invite details to continue."),Ee(!1);return}if(F.workspaceSetupRequired){C(Hn(),{replace:!0}),Ee(!1);return}W(""),B(""),me(""),se(""),Ya(da,{replace:!0})}else W(""),B(""),me(""),se(""),Ya(da,{replace:!0});else{if(A==="register"&&(F.code==="SIGNUP_PLAN_NOT_ENABLED"||F.code==="SIGNUP_PLAN_VERSION_NOT_FOUND"||F.code==="SIGNUP_PLAN_VERSION_REQUIRED")){C(_,{replace:!0}),Ee(!1);return}if(q(qr(F)),we(F.code||null),A==="login"&&(F.code==="WORKSPACE_NOT_FOUND"||F.code==="WORKSPACE_ID_REQUIRED")){C("/setup?step=workspace",{replace:!0}),Ee(!1);return}if(A==="login"&&F.code==="EMAIL_NOT_VERIFIED"&&x.trim()){const Be=await Ia(x);Be.success&&(gt(Date.now()+3e4),Ba("verify"),Be.verificationToken&&pe(Be.verificationToken),ee(hn({...Be,intro:"If that account exists and still needs verification, we sent an email."})),q(null),we(null))}A==="register"&&F.code==="EMAIL_ALREADY_EXISTS_UNVERIFIED"&&x.trim()&&(gt(Date.now()+3e4),Ba("verify"),F.verificationToken&&pe(F.verificationToken),ee(F.emailSent===!1?`This email already has an unverified account, but verification email delivery failed. ${F.emailError||"Try Resend Verification again."}`:"This email already has an unverified account. Check your email for verification instructions."),q(null),we(null))}Ee(!1)},children:Te?"Working...":A==="login"?"Sign In":A==="register"?"Create Account":A==="verify"?"Verify Email":A==="forgot"?or?`Retry in ${Tr}s`:"Send Reset Link":A==="reset"?"Reset Password":D==="existing_user_signed_out"?"Sign In to Continue":N?"Create Account and Join":"Join Workspace"})}),(A==="login"||A==="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:()=>wn("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:()=>wn("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:()=>wn("apple",d.pathname!=="/login"?d.pathname:"/"),"aria-label":"Continue with Apple",children:"Apple"})]})]}),A==="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:()=>wn("google","/",Ce),"aria-label":"Join with Google",children:"Google"}),be.includes("github")&&a.jsx("button",{type:"button",className:fe.oauthButton,disabled:Te,onClick:()=>wn("github","/",Ce),"aria-label":"Join with GitHub",children:"GitHub"}),be.includes("apple")&&a.jsx("button",{type:"button",className:fe.oauthButton,disabled:Te,onClick:()=>wn("apple","/",Ce),"aria-label":"Join with Apple",children:"Apple"})]})]}),A==="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.ai/legal/terms/",target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})," ","and acknowledge the"," ",a.jsx("a",{className:fe.registerConsentLink,href:"https://taskforcehq.ai/legal/privacy/",target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"}),"."]}),a.jsxs("div",{className:fe.authSecondaryActions,role:"group","aria-label":"Authentication navigation",children:[Ga&&(A==="login"||A==="register")&&a.jsxs("p",{className:fe.authModeSwitch,children:[A==="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),Ba(A==="login"?"register":"login")},children:A==="login"?"Register":"Sign In"})]}),a.jsxs("div",{className:fe.authModeLinks,children:[(A==="login"||A==="register")&&a.jsxs(a.Fragment,{children:[a.jsx("button",{className:fe.authModeLink,disabled:Te||or,"data-testid":"auth-forgot-password-button",onClick:()=>{q(null),we(null),ee(null),Ba("forgot")},children:or?`Forgot Password (${Tr}s)`:"Forgot Password"}),a.jsx("button",{className:fe.authModeLink,disabled:Te||sr,"data-testid":"auth-resend-verification-button",onClick:()=>{q(null),we(null),ee(null),Ba("verify")},children:sr?`Resend Verification (${rr}s)`:"Resend Verification"}),a.jsx("button",{className:fe.authModeLink,disabled:Te,"data-testid":"auth-accept-invite-button",onClick:()=>{q(null),we(null),ee(null),Ba("invite")},children:"Accept Invite"})]}),A!=="login"&&A!=="register"&&a.jsxs(a.Fragment,{children:[A==="verify"&&a.jsx("button",{className:fe.authModeLink,disabled:Te||sr||!x.trim(),"data-testid":"auth-resend-verification-button",onClick:async()=>{Ee(!0),ee(null),q(null),we(null);const F=await Ia(x);F.success?(gt(Date.now()+3e4),F.verificationToken&&pe(F.verificationToken),ee(hn(F))):q(qr(F)),Ee(!1)},children:sr?`Resend Verification (${rr}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),Ba("login")},children:A==="verify"?"Back to Sign In":"Sign In"}),Ga&&A!=="verify"&&a.jsx("button",{className:fe.authModeLink,disabled:Te,"data-testid":"auth-return-register-button",onClick:()=>{q(null),we(null),ee(null),Ba("register")},children:"Register"}),A==="reset"&&a.jsx("button",{className:fe.authModeLink,disabled:Te||or,"data-testid":"auth-return-forgot-password-button",onClick:()=>{q(null),we(null),ee(null),Ba("forgot")},children:or?`Forgot Password (${Tr}s)`:"Forgot Password"})]})]})]})]})})});if(Je==="login-redirect")return a.jsx("div",{className:ta.standaloneWrapper,"data-theme":va,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(Je==="coming-soon")return a.jsx("div",{className:ta.standaloneWrapper,"data-theme":va,children:a.jsx("div",{className:fe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${Np})`},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:"Beta Access"})]}),a.jsx("p",{className:fe.loginSubtitle,children:"You are signed in, but your account does not have beta access 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:p.cancelBtn,onClick:async()=>{await Rt.logout(),C("/login",{replace:!0})},children:"Sign Out"})]})})});if(Je==="guided-setup"){const F=!rn&&(xn||Pa==="error"),Be=!rn&&!F&&(fn||Pa==="global"),At=He(F?"setup.headingCheckFailed":Be?"setup.headingGlobalRequired":"setup.headingWorkspaceRequired"),Wt=F?He("setup.subtitleUnreadable"):Be?He("setup.subtitleGlobalRequired"):null,ua="Workspace",yr=za||et!=="cloud",cs=yr&&Qe==="details",Is=yr&&Qe==="library",Ja=!za&&Ca&&cs&&!ea,jr=Qn?.runtimeMode==="cloud"?hg:tv,Wa=la?Pp(la.categories):"",T=la?Pp(la.types):"",j=la?Pp(la.priorities):"",rt=lt?He("setup.saving"):pr?ea?Ha?"Retry Import":"Importing Workspace...":"Connect Workspace":cs?"Continue":Is?"Create Workspace":"Connect Workspace";return a.jsx("div",{className:ta.standaloneWrapper,"data-theme":va,children:a.jsx("div",{className:fe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${Np})`},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"})]})]}),Qn&&a.jsx("span",{className:fe.runtimeIconBadge,title:Qn.runtimeMode==="cloud"?"Cloud runtime":"Local runtime","aria-label":Qn.runtimeMode==="cloud"?"Cloud runtime":"Local runtime",children:Oe.createElement(jr,{size:16,"aria-hidden":!0})})]}),a.jsx("p",{className:fe.loginSubtitle,children:a.jsx("strong",{children:At})}),Wt?a.jsx("p",{className:fe.loginSubtitle,children:Wt}):null,jt&&a.jsx("p",{className:fe.loginSubtitle,children:jt}),it&&a.jsx("p",{className:fe.loginError,children:it}),Be&&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:ut==="core",onChange:()=>Xe("core"),disabled:lt}),a.jsx("span",{children:He("setup.coreModeOption",{workspaceLabel:ua})})]}),a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"setup-mode",value:"operations",checked:ut==="operations",onChange:()=>Xe("operations"),disabled:lt}),a.jsx("span",{children:He("setup.operationsModeOption")})]})]}),!F&&!Be&&a.jsxs("div",{className:fe.optionGrid,children:[Ja&&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:()=>Ge("local"),disabled:lt}),a.jsxs("span",{children:["Create new local ",ua.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:()=>Ge("cloud"),disabled:lt}),a.jsxs("span",{children:["Sync existing cloud ",ua.toLowerCase()]})]})]}),pr?a.jsxs("div",{className:fe.optionGroup,children:[!ea&&!Ca&&a.jsx("p",{className:fe.loginError,children:"Cloud workspace sync is unavailable right now. Switch back to local setup or refresh runtime configuration."}),!ea&&Ca&&!Mt&&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:p.cancelBtn,disabled:lt,onClick:()=>{C(`/login?mode=login&next=${encodeURIComponent(nn)}`,{replace:!0})},children:"Sign In"}),Ga&&a.jsx("button",{className:p.submitBtn,disabled:lt,onClick:()=>{C(`/login?mode=register&next=${encodeURIComponent(nn)}`,{replace:!0})},children:"Register"})]})]}),!ea&&Ca&&Mt&&a.jsxs(a.Fragment,{children:[a.jsxs("select",{className:p.input,value:Ve,onChange:Me=>bt(Me.target.value),disabled:lt||Ot||ot.length===0,children:[ot.length===0&&a.jsx("option",{value:"",children:Ot?"Loading cloud projects...":"No cloud projects found"}),ot.map(Me=>a.jsxs("option",{value:Me.id,children:[Me.name," (",Me.id,")"]},Me.id))]}),a.jsx("div",{className:fe.actionRowEnd,children:a.jsx("button",{className:p.cancelBtn,disabled:lt||Ot,onClick:()=>{La()},children:"Refresh Cloud Projects"})}),Ue&&a.jsx("p",{className:fe.loginError,children:Ue})]}),ea&&a.jsxs(a.Fragment,{children:[a.jsxs("p",{className:fe.inlineHint,children:['Importing "',ea.name,'" from cloud into local.']}),a.jsx("div",{className:fe.optionGroup,children:os.map(Me=>a.jsx("p",{className:fe.inlineHint,children:Me},Me))}),a.jsx("p",{className:fe.inlineHint,children:ye?"Finishing setup and opening your workspace.":vn||"Pulling tasks, taxonomies, and settings into local."}),!ye&&dn&&a.jsx("p",{className:fe.inlineHint,children:dn})]})]}):a.jsxs(a.Fragment,{children:[cs&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:fe.loginSubtitle,children:"Workspace name"}),a.jsx("input",{className:p.input,type:"text",value:It,placeholder:"Workspace name",onChange:Me=>Ft(Me.target.value),disabled:lt}),a.jsx("p",{className:fe.loginSubtitle,children:"Workspace description"}),a.jsx("textarea",{className:p.textarea,value:Nt,placeholder:"Workspace description (optional)",onChange:Me=>Fe(Me.target.value),disabled:lt,rows:4})]}),Is&&a.jsxs("div",{className:fe.optionGroup,children:[a.jsx("p",{className:fe.loginSubtitle,children:"What are you working on?"}),a.jsxs("select",{className:p.input,value:qt,onChange:Me=>Pt(Me.target.value),disabled:lt||Ht||Ne.length===0,children:[Ne.length===0&&a.jsx("option",{value:"",children:Ht?"Loading setup options...":"No setup options available"}),Ne.map(Me=>a.jsx("option",{value:Me.id,children:Me.label},Me.id))]}),la?a.jsx(a.Fragment,{children:la.description?a.jsx("p",{className:fe.inlineHint,children:la.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:()=>Lt(Me=>({...Me,categories:!Me.categories})),disabled:lt||!la?.categories.length}),a.jsx("span",{children:"Categories"})]}),Wa?a.jsx("p",{className:fe.inlineHint,children:Wa}):null,a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:Tt.types,onChange:()=>Lt(Me=>({...Me,types:!Me.types})),disabled:lt||!la?.types.length}),a.jsx("span",{children:"Task Types"})]}),T?a.jsx("p",{className:fe.inlineHint,children:T}):null,a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:Tt.priorities,onChange:()=>Lt(Me=>({...Me,priorities:!Me.priorities})),disabled:lt||!la?.priorities.length}),a.jsx("span",{children:"Priorities"})]}),j?a.jsx("p",{className:fe.inlineHint,children:j}):null]}),Ht?a.jsx("p",{className:fe.inlineHint,children:"Loading setup options…"}):null,Kt?a.jsx("p",{className:fe.loginError,children:Kt}):null]}),!za&&Ca&&Mt&&cs&&a.jsxs("div",{className:fe.optionGroup,children:[a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:vt,onChange:Me=>E(Me.target.checked),disabled:lt}),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:[Is?a.jsx("button",{className:p.cancelBtn,onClick:()=>{Ye(null),kt(null),yt("details")},children:"Back"}):rn?a.jsx("button",{className:p.cancelBtn,onClick:()=>{Ye(null),kt(null),C("/",{replace:!0})},children:"Cancel"}):tt==="cloud"?a.jsx("button",{className:p.cancelBtn,onClick:async()=>{await Rt.logout(),C("/login",{replace:!0})},children:He("setup.signOut")}):null,Be?a.jsx("button",{className:p.submitBtn,disabled:lt||fr&&!!ea&&!Ha,onClick:async()=>{re(!0),kt(null),Ye(null);try{const Me=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:ut}})}),Le=await Me.json().catch(()=>({}));!Me.ok||Le?.success===!1?Ye(Le?.error||He("setup.saveFailedWithStatus",{status:Me.status})):(kt(He("setup.globalSetupSaved")),await _a())}catch{Ye(He("setup.saveFailed"))}finally{re(!1)}},children:He(lt?"setup.saving":"setup.saveGlobalSetup")}):F?a.jsx("button",{className:p.submitBtn,disabled:lt,onClick:_a,children:He("setup.retrySetupCheck")}):a.jsx("button",{className:p.submitBtn,disabled:lt||fr&&!ea&&!Mt,onClick:async()=>{if(fr&&ea){if(!Ha)return;re(!0),kt(`Retrying import for ${ea.name}...`),Ye(null);try{await Cr()}catch{kt(null),Ye(`Failed to retry import for "${ea.name}".`)}finally{re(!1)}return}if(pr){if(!Ca){Ye("Cloud workspace sync is unavailable right now."),re(!1);return}if(!Mt){Ye("Sign in is required before syncing a cloud project."),re(!1);return}const Me=ot.find(gn=>gn.id===Ve);if(!Me){Ye("Select a cloud project to sync."),re(!1);return}const Le=await ja({workspaceId:Me.id,name:Me.name||Me.id,description:Me.description||void 0});if(!Le.success){Ye(Le.error||He("setup.saveWorkspaceFailed")),re(!1);return}const ne=String(Le.workspaceId||Me.id||"").trim();if(!ne){Ye("Failed to resolve workspace id for sync setup."),re(!1);return}try{await Cn(ne,{version:2,enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null})}catch(gn){Ye(gn instanceof Error?gn.message:"Failed to configure workspace sync."),re(!1);return}Aa({enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null}),await _a(),Y({workspaceId:ne,name:Me.name||Me.id}),Ie(!1),kt(`Importing ${Me.name||Me.id} from cloud...`),re(!1);return}if(cs){if(!It.trim()){Ye("Workspace name is required before continuing.");return}Ye(null),kt(null),yt("library");return}re(!0),kt(null),Ye(null);{const Me=rn||$t?.workspaceSetupState==="missing",Le=rn||Gt&&Me,ne=Le?await Or(It,Nt||void 0):null,gn=Le?null:await ja({workspaceId:Me?void 0:$t?.workspaceId,name:It,description:Nt}),Nr=ne||gn;if(!Nr?.success)Ye(Nr?.error||He("setup.saveWorkspaceFailed"));else{const yn=String(ne?.workspace?.id||gn?.workspaceId||$t?.workspaceId||"").trim();if(!yn){Ye("Failed to resolve workspace id for setup."),re(!1);return}if(et==="local"&&!!la&&(Tt.categories||Tt.types||Tt.priorities)&&la){const Do=await $r.onApplySystemTaxonomyPack({pack:la,sections:Tt,remapExistingValuesToDefault:!0,workspaceIdOverride:yn});if(!Do?.success){Ye(Do?.error||"Failed to apply setup library."),re(!1);return}}const Wn=!!(!za&&vt&&Ca&&Mt),Kr=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:yn,stateKey:"workspace-sync",patch:{version:2,enabled:Wn,phase:Wn?"provision-local":"idle",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}})}),Eo=await Kr.json().catch(()=>({}));if(!Kr.ok||Eo?.success===!1){Ye(Eo?.error||`Failed to configure workspace sync (${Kr.status})`),re(!1);return}Aa({enabled:Wn,phase:Wn?"provision-local":"idle",setupIntent:null,pullCursor:null}),kt(Wn?`${ua} setup saved. Cloud sync enabled.`:He("setup.workspaceSetupSaved",{workspaceLabel:ua})),rn&&(await _a(),await Sn(!0),C("/",{replace:!0}))}}re(!1)},children:rt})]})]})})})}return a.jsx(_O,{...Rt,onHeaderMouseDown:s,isDragging:o,onClose:l})}function AO(e){return pv()?a.jsx(og,{...e}):a.jsx(fv,{children:a.jsx(og,{...e})})}const Hy={},ig="STAGING_MARKER_2026_02_24";typeof window<"u"&&(window.__TASKFORCE_BUILD_MARKER=ig,console.info(`[Taskforce] Build marker: ${ig}`));function xO(){if(typeof window<"u"){const t=window.location.hostname.toLowerCase();if(t==="localhost"||t==="127.0.0.1"||t==="::1")return}return uf(Hy).apiBaseUrl||void 0}function IO(e){const t=uf(Hy),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 TO(){const e=xO(),t=IO(e);return a.jsx(hv,{children:a.jsx(AO,{mode:"standalone",config:{apiEndpoint:"/api/taskforce/task",apiBaseUrl:e,cloudAuthBaseUrl:t}})})}Tk.createRoot(document.getElementById("root")).render(a.jsx(Oe.StrictMode,{children:a.jsx(TO,{})}));export{P1 as $,HO as A,fB as B,J1 as C,Qc as D,vB as E,zO as F,XW as G,zL as H,tc as I,df as J,qp as K,Hh as L,Fs as M,Gh as N,OW as O,GO as P,e4 as Q,ly as R,ky as S,id as T,vm as U,cy as V,KO as W,qO as X,gm as Y,NF as Z,N1 as _,Cm as a,x1 as a0,UO as a1,Am as a2,Fr as b,eS as c,xv as d,zt as e,LO as f,Qu as g,D1 as h,ub as i,VO as j,L1 as k,sy as l,at as m,vS as n,em as o,Kg as p,tm as q,Nn as r,Zg as s,p as t,FO as u,BO as v,OO as w,WO as x,$O as y,MS as z};
|