@taskforcehq/taskforce 0.3.324 → 0.3.326

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/Taskforce.module.css +39 -0
  2. package/dist/components/features/TaskSettings.js +26 -9
  3. package/dist/components/task/TaskKanban.d.ts +2 -2
  4. package/dist/components/views/StandaloneLayout.js +22 -22
  5. package/dist/components/views/panels/PlanningDrawer.d.ts +2 -2
  6. package/dist/components/views/panels/PlanningDrawer.js +26 -12
  7. package/dist/components/views/planningScope.d.ts +4 -0
  8. package/dist/components/views/planningScope.js +5 -0
  9. package/dist/core/AiProfileService.js +6 -1
  10. package/dist/hooks/useTaskforce.js +74 -17
  11. package/dist/hooks/workspace/workspaceLocalState.d.ts +25 -0
  12. package/dist/hooks/workspace/workspaceLocalState.js +38 -0
  13. package/dist/mcp/adminWorkspaceRegistrar.js +0 -10
  14. package/dist/mcp/clientIntegrations.d.ts +1 -1
  15. package/dist/mcp/clientIntegrations.js +50 -0
  16. package/dist/mcp/clientProfileDefaults.js +4 -0
  17. package/dist/mcp/collaborationRegistrar.js +3 -3
  18. package/dist/mcp/documentAssetRegistrar.js +24 -72
  19. package/dist/mcp/documentHelpers.d.ts +11 -4
  20. package/dist/mcp/documentHelpers.js +21 -17
  21. package/dist/mcp/runtime.d.ts +4 -0
  22. package/dist/mcp/runtime.js +466 -534
  23. package/dist/mcp/taskPlanningRegistrar.js +45 -81
  24. package/dist/mcp/toolProfiles.d.ts +7 -0
  25. package/dist/mcp/toolProfiles.js +36 -0
  26. package/dist/mcp/toolRegistry.d.ts +87 -609
  27. package/dist/mcp/toolRegistry.js +93 -88
  28. package/dist/resources/templates/workflow-sources/workflowDocs.mjs +10 -10
  29. package/dist/resources/templates/workflows/collaborate.yaml +2 -3
  30. package/dist/resources/templates/workflows/do.yaml +2 -3
  31. package/dist/resources/templates/workflows/evaluate.yaml +2 -3
  32. package/dist/resources/templates/workflows/execute.yaml +12 -15
  33. package/dist/resources/templates/workflows/plan.yaml +3 -4
  34. package/dist/resources/templates/workflows/review.yaml +2 -3
  35. package/dist/shared/taxonomyLibrary.js +1 -1
  36. package/dist/sync/cloudSyncApi.js +22 -3
  37. package/dist/types.js +1 -1
  38. package/dist/ui/assets/{AgentsModule-DvkbUHi0.js → AgentsModule-C4LcqhcZ.js} +1 -1
  39. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-jhOhxqHT.js → AnnotatedAttachmentWorkspace-B-Dq22d2.js} +1 -1
  40. package/dist/ui/assets/{ContextAttachmentManager-BAmEyLHL.js → ContextAttachmentManager-DsXPTvi-.js} +1 -1
  41. package/dist/ui/assets/{DocumentWorkspace-X-CpD5OO.js → DocumentWorkspace-CxA1wO3U.js} +1 -1
  42. package/dist/ui/assets/{EntityActivityTimeline-DD33onAC.js → EntityActivityTimeline-B8nSe8l3.js} +1 -1
  43. package/dist/ui/assets/{InitiativesModule-5nDXtIjf.js → InitiativesModule-VY95v38E.js} +1 -1
  44. package/dist/ui/assets/{PlansPage-B8nDR1hQ.js → PlansPage-CQbKDv1a.js} +1 -1
  45. package/dist/ui/assets/{TaskContextUpload-DrGrXJHm.js → TaskContextUpload-DvDlNpHC.js} +1 -1
  46. package/dist/ui/assets/TaskSettings-CUWbYYtP.js +12 -0
  47. package/dist/ui/assets/{WorkflowsModule-DWCGhEWT.js → WorkflowsModule-CgM3Jako.js} +1 -1
  48. package/dist/ui/assets/documentReferences-Do9YjrS3.js +1 -0
  49. package/dist/ui/assets/index--mh3pktj.js +5 -0
  50. package/dist/ui/assets/index-BawaaEXS.css +1 -0
  51. package/dist/ui/index.html +2 -2
  52. package/dist/utils/theme.js +1 -1
  53. package/package.json +1 -1
  54. package/src/resources/templates/workflow-sources/workflowDocs.mjs +10 -10
  55. package/src/resources/templates/workflows/collaborate.yaml +2 -3
  56. package/src/resources/templates/workflows/do.yaml +2 -3
  57. package/src/resources/templates/workflows/evaluate.yaml +2 -3
  58. package/src/resources/templates/workflows/execute.yaml +12 -15
  59. package/src/resources/templates/workflows/plan.yaml +3 -4
  60. package/src/resources/templates/workflows/review.yaml +2 -3
  61. package/dist/ui/assets/TaskSettings-BXVvZZwH.js +0 -9
  62. package/dist/ui/assets/documentReferences-Crup321p.js +0 -1
  63. package/dist/ui/assets/index-B9k24Aym.js +0 -5
  64. package/dist/ui/assets/index-DNeR5dYW.css +0 -1
@@ -1,5 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EntityActivityTimeline-DD33onAC.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-DrGrXJHm.js","assets/ContextAttachmentManager-BAmEyLHL.js","assets/documentReferences-Crup321p.js","assets/TaskSettings-BXVvZZwH.js","assets/TaskSettings-CnIBL_Eb.css","assets/AnnotatedAttachmentWorkspace-jhOhxqHT.js","assets/AnnotatedAttachmentWorkspace-BVKew-mH.css","assets/DocumentWorkspace-X-CpD5OO.js","assets/DocumentWorkspace-D4rJKXzd.css","assets/WorkflowsModule-DWCGhEWT.js","assets/AgentsModule-DvkbUHi0.js","assets/InitiativesModule-5nDXtIjf.js","assets/PlansPage-B8nDR1hQ.js","assets/PlansPage-DeAzWYTb.css"])))=>i.map(i=>d[i]);
2
- import{r,j as n,R as Ue,a as Yi,b as Tk}from"./vendor-react-CKJs5o3c.js";import{I as Cs,C as Ji,a as al,b as ao,c as tf,F as Rk,A as jk,R as gd,T as xm,L as Ep,d as Po,e as Nk,X as ac,f as cg,g as lg,h as kr,B as nm,U as ii,i as dg,S as Pk,P as ro,j as Xc,G as Mk,k as Zu,l as am,m as yd,n as Ek,o as nf,p as Dk,q as Dp,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 Mo,E as af,y as pg,z as fg,D as Uk,H as zk,J as Hk,K as Zf,N as Yf,O as Gk,Q as Vk,Z as qk,V as Kk,Y as Zk,_ as Yk,$ as hg,a0 as Jk,a1 as Jf,a2 as Qk,a3 as Xk,a4 as ev,a5 as tv}from"./vendor-icons-CLnehDTw.js";import{M as nv,r as av,a as rv}from"./vendor-markdown-BUxTU7dS.js";import{u as gg,a as Lp,b as sv,D as yg,c as ov,S as kg,v as vg,P as Sg,d as wg,C as rf,e as iv,p as cv,f as Qf,s as lv,K as dv,g as sf,h as uv,i as bg,j as mv}from"./vendor-dnd-DRzYolkg.js";import{u as xg,a as _g,b as pv,M as fv,N as Xf,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 a(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=a(o);fetch(o.href,l)}})();const Qc="default",_m="General",Vr="task",gv=2,yv=[{value:Qc,label:_m,icon:"Inbox"}],Cg=[{value:Vr,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 Cg.map(e=>({...e}))}function wv(e){const t=String(e||"").trim().toLowerCase();return Cg.find(a=>a.value===t)}function Ag(){return kv.map(e=>({...e}))}const bv="default",xv=[{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 xv.map(e=>({...e}))}const _v={categories:vv(),types:Sv(),priorities:Ag(),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},Cv=["light","dawn","dark","midnight"],rm="dark",Av=[{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(Cv),Tv=new Set(Av.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 Bp(e){const t=typeof e=="number"?e:Number(e);if(!Number.isFinite(t))return null;const a=Math.floor(t);return a>0?a:null}function el(e,t){const a=Bp(typeof t=="object"&&t!==null?t.referenceNumber:t);return a?`${e}${a}`:""}function of(e,t){const a=String(e||"").trim(),s=String(t||"").trim();if(!a||!s)return null;const o=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),l=s.match(new RegExp(`^${o}(\\d+)$`,"i"));return l?Bp(l[1]):null}function Cm(e,t){return t?typeof t.referenceLabel=="string"&&t.referenceLabel.trim().length>0?t.referenceLabel.trim():el(e,t.referenceNumber):""}const cf="T-",eh="LT-";function jv(e){return el(cf,e)}function Rg(e){return typeof e=="number"||e===null||e===void 0?el(eh,e):el(eh,{referenceNumber:e.localReferenceNumber??null})}function jg(e){return of(cf,e)}function Xi(e){if(!e)return"";if(typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0)return e.referenceLabel.trim();const t=Cm(cf,e);return t||Rg(e.localReferenceNumber)}function Nv(e){return!e?.referenceNumber&&!!e?.localReferenceNumber}function Ng(e){return{label:Xi(e),isProvisional:Nv(e)}}Ag();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 Do(e){const t=typeof e.referenceNumber=="number"?e.referenceNumber:Number.isFinite(Number(e.referenceNumber))?Number(e.referenceNumber):null,a=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:a&&a>0?Math.floor(a):null,referenceLabel:typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0?e.referenceLabel.trim():t?jv(t):Rg(a),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,a){if(!e||typeof e!="object")return{tasks:t,archivedTasks:a};const s=Do(e),o=String(s.id||"").trim();if(!o)return{tasks:t,archivedTasks:a};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 x=Date.parse(String(h.createdAt||""))-Date.parse(String(S.createdAt||""));return Number.isFinite(x)&&x!==0?x:String(S.id).localeCompare(String(h.id))}),m=t.filter(k=>k.id!==o),y=a.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 a=new Set(t.map(o=>Number(o.value))),s=Array.from(new Set(e.map(o=>Number(o)).filter(o=>Number.isFinite(o)&&a.has(o))));return s.length>0?s:t.map(o=>Number(o.value))}function up(e,t){return t.some(a=>String(a)===String(e))}function Wv(e,t){if(!e.length||!t.length)return e;const a=new Set(t.map(o=>o.value)),s=Array.from(new Set(e.filter(o=>a.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 a=e;for(const s of t){if(!a||typeof a!="object")return;a=a[s]}return typeof a=="string"?a:void 0}function Eg(e){if(!e)return om;const t=Pg.find(s=>s.toLowerCase()===e.toLowerCase());if(t)return t;const a=e.split("-")[0]?.toLowerCase()||"";return Mg[a]||om}function fp(e,t){return t?e.replace(/\{([^}]+)\}/g,(a,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 qe(e,t){const a=Uv(e),s=pp(mp[Qi],a);if(s)return fp(s,t);const o=Qi.split("-")[0]?.toLowerCase()||"",l=Mg[o];if(l&&l!==Qi){const d=pp(mp[l],a);if(d)return fp(d,t)}const i=pp(mp[om],a);return i?fp(i,t):e}const Gv="default",ec="bootstrap";function Vv(e){let t=2166136261;for(let a=0;a<e.length;a+=1)t^=e.charCodeAt(a),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function lf(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 a=t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"");return a?a.slice(0,96):ec}function Wg(e){const t=String(e||"").trim();return t?lf(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 a=String(e.workspaceId||"").trim();return a&&!df(a)?lf(`cloud-workspace:${a}`):ec}return Wg(e.projectRoot)}function df(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 Am(e){const t=String(e||"").trim().toLowerCase();return t==="production"||t==="staging"||t==="performance"?t:null}function Qv(e){return Am(e)||"production"}function th(e){return kd[Qv(String(e||""))]}function Xv(e){const t=String(e||"").trim().toLowerCase();if(!t)return null;for(const[a,s]of Object.entries(kd))if(new URL(s.appBaseUrl).hostname.toLowerCase()===t||new URL(s.mcpBaseUrl).hostname.toLowerCase()===t)return a;return null}function uf(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=uf(e);return t?kd[t].mcpBaseUrl:null}function zi(e,t){return String(e[t]||"").trim()}function nh(e,t,a){e.push(t),a?.(t)}function tS(e,t){const a=[],s=zi(e,"ENV"),o=Am(s);if(o)return nh(a,`[Taskforce compat] ENV=${s} is deprecated; set TASKFORCE_CLOUD_ENVIRONMENT=${o} instead.`,t),{cloudEnvironment:o,warnings:a};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=uf(i.value);if(d)return nh(a,`[Taskforce compat] ${i.key} is being used to infer TASKFORCE_CLOUD_ENVIRONMENT=${d}. Set TASKFORCE_CLOUD_ENVIRONMENT explicitly.`,t),{cloudEnvironment:d,warnings:a}}return{cloudEnvironment:null,warnings:a}}function Xs(e,t){return String(e[t]||"").trim()}function nS(e){return e.toLowerCase()==="cloud"?"cloud":"local"}function Gc(e){return String(e||"").trim().replace(/\/+$/,"")}function aS(e){return String(e||"").trim().replace(/\/+$/,"")}function jo(...e){for(const t of e)if(String(t||"").trim())return String(t||"").trim();return""}function rS(e,t={}){const a=[],s=se=>{a.push(se),t.onWarning?.(se)},o=nS(Xs(e,"TASKFORCE_RUNTIME_MODE")),l=Am(Xs(e,"TASKFORCE_CLOUD_ENVIRONMENT")),i=l?{cloudEnvironment:l}:tS(e,s),d=l||i.cloudEnvironment,m=Gc(String(t.requestBaseUrl||"")),y=Gc(jo(Xs(e,"VITE_TASKFORCE_BASE_URL"),Xs(e,"TASKFORCE_BASE_URL"))),k=Gc(Xs(e,"VITE_TASKFORCE_API_BASE_URL")),S=Gc(Xs(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")),h=Gc(jo(Xs(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL"),Xs(e,"TASKFORCE_CLOUD_MCP_BASE_URL"))),g=Gc(Xs(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")),v=aS(Xs(e,"VITE_TASKFORCE_WS_BASE_URL")),x=d?kd[d].appBaseUrl:"",I=d?kd[d].mcpBaseUrl:"",C=jo(g,S,k,y,x),D=jo(h,I,C),U=jo(m,y,k,S,C),L=jo(m,k,y,C),X=jo(S,y,k,C),me=o==="local"?jo(v,m,k,y,g,S,x,C):jo(m,v,L,U,C);return{runtimeMode:o,cloudEnvironment:d,cloudBaseUrl:C,cloudMcpBaseUrl:D,baseUrl:U,apiBaseUrl:L,cloudAuthBaseUrl:X,wsBaseUrl:me,cloudAuthViaLocalProxy:o==="local"||!!g,warnings:a}}function mf(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",a=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${a}-${o}`}function hp(e,t){const a=String(t||"").trim();if(!a)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",a),{...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(),a=String(e.email||"").trim().toLowerCase();return t||a||String(e.userId||"").trim()||"Workspace member"}function li(){return[{value:im,label:"Unassigned",icon:"HelpCircle",color:"var(--text-secondary)",kind:"unassigned"}]}function cS(e){const t=new Map;for(const a of e){const s=String(a.userId||"").trim();s&&t.set(s,{value:s,label:iS(a),icon:"User",color:"#22c55e",kind:"member",avatarUrl:typeof a.avatarUrl=="string"&&a.avatarUrl.trim().length>0?a.avatarUrl.trim():null})}return vd(Array.from(t.values()))}function vd(e){const t=new Map;for(const s of li())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 a=[im];return Array.from(t.values()).sort((s,o)=>{const l=a.indexOf(s.value),i=a.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 a=String(t||"").trim();if(!a||e.some(l=>l.value===a))return e;const s=a.replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim(),o=s?s.split(" ").map(l=>l.charAt(0).toUpperCase()+l.slice(1)).join(" "):a;if(cm(a)==="agent"){const l=String(a).toLowerCase().startsWith("ai-profile-")&&s.split(" ").every(i=>oS.test(i));return vd([...e,{value:a,label:l?"AI":o||"AI",icon:"Bot",color:"#8b5cf6",kind:"agent"}])}return cm(a)==="member"?vd([...e,{value:a,label:o||a,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 a=String(e||"").trim(),o=Ug(t).find(l=>l.value===a);return o?o.label:Og(a)?"AI":$g(a)?"Unassigned":a||"Unassigned"}const zg="taskforce.workspaceContext.v2",dS="taskforce.uiState.app.v1",uS="taskforce.bootstrapDebug.v1",rh=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 Ut(e,t){if(!mS())return;console.info("[Taskforce Bootstrap]",e,t&&typeof t=="object"?t:{})}function pS(e,t){const a=String(e).trim()||"default";return`${String(t).trim()||"default"}::${a}`}async function pf(e){const t=String(e.stateKey||"default").trim()||"default",a=String(e.workspaceId||"").trim(),s=e.patch&&typeof e.patch=="object"?e.patch:{},o=JSON.stringify(s),l=pS(t,a||"default"),i=Date.now(),d=Mu.get(l);if(d&&d.serializedPatch===o){if(d.status==="success"&&e.skipIfUnchanged!==!1)return Ut("ui_state_persist_skipped",{stateKey:t,workspaceId:a||"default",reason:"unchanged"}),{skipped:!0,reason:"unchanged"};if(e.respectFailureCooldown!==!1&&d.retryAfter>i)return Ut("ui_state_persist_skipped",{stateKey:t,workspaceId:a||"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,...a?{workspaceId:a}:{},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??rh)}),Ut("ui_state_persist_failed",{stateKey:t,workspaceId:a||"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??rh)}),Ut("ui_state_persist_failed",{stateKey:t,workspaceId:a||"default",error:m instanceof Error?m.message:String(m)}),e.throwOnError)throw m;return{skipped:!1,payload:null}}}function ff(e){const t=lf(e);return`${zg}.${t}`}function Hg(e){const t=Bg(e);return`${zg}.${t}`}function Wp(e){if(typeof window>"u")return"";try{const t=ff(e),a=String(window.localStorage.getItem(t)||"").trim();if(a&&a.length<=120&&!/\s/.test(a))return a;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 a=String(e||"").trim();try{if(!a||df(a))return;const s=ff(t),o=String(window.localStorage.getItem(s)||"").trim();if(!a&&o&&o.toLowerCase()!=="default")return;window.localStorage.setItem(s,a)}catch{}}function sh(e){if(!(typeof window>"u"))try{window.localStorage.removeItem(ff(e)),window.localStorage.removeItem(Hg(e))}catch{}}function Gg(e){const t=Bg(e);return`${dS}.${t}`}function oh(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(Gg(e));if(!t)return null;const a=JSON.parse(t);return a&&typeof a=="object"?a:null}catch{return null}}function hS(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(Gg(t),JSON.stringify(e))}catch{}}const Fp="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(Fp);return}window.sessionStorage.setItem(Fp,t)}catch{}}function hf(){if(typeof window>"u")return"";try{return String(window.sessionStorage.getItem(Fp)||"").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,a){if(!yS(e,t))return a;const s=hf();if(!s)return a;const o=new Headers(a?.headers||void 0);return o.has("x-taskforce-user-id")||o.set("x-taskforce-user-id",s),{...a,headers:o}}function vS(e,t){if(!e.startsWith("/"))return e;const a=Vg(t);return a?`${a}${e}`:e}async function W5(e,t,a){const s=vS(e,a),o=Vg(a).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;Ut("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 Ut("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 Ut("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;Ut("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 Ut("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,a=await t.text().catch(()=>"");let s={};if(a)try{s=JSON.parse(a)}catch{s={error:!t.ok&&t.statusText?`${t.status} ${t.statusText}`:a.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 ih(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 xS(e,t){const a=new URLSearchParams({limit:String(t.limit),workspaceId:t.workspaceId});t.cursor&&a.set("cursor",t.cursor),t.repairMode===!0&&a.set("repair","1");const s=e("/api/taskforce/sync/workspace/pull"),o=s.includes("?")?"&":"?";return rl(fetch(`${s}${o}${a.toString()}`,{method:"GET",credentials:"include"}))}async function _S(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 Op(e,t,a){const s=JSON.stringify({workspaceId:e,changes:t,workspaceMembers:Array.isArray(a?.workspaceMembers)?a.workspaceMembers:void 0,...a?.repairMode===!0?{repair:!0}:{},bootstrapSnapshot:a?.bootstrapSnapshot?{currentAnnotatedAttachmentSessionIds:Array.isArray(a.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds)?a.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 $p="V1:AESGCM:",gf="AES-GCM",CS=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:gf},!1,["encrypt","decrypt"])}async function ch(e,t){if(!e)return e;const a=crypto.getRandomValues(new Uint8Array(CS)),s=await qg(t),l=new TextEncoder().encode(e),i=await crypto.subtle.encrypt({name:gf,iv:a},s,l),d=Buffer.from(i).toString("base64"),m=Buffer.from(a).toString("base64");return`${$p}${m}:${d}`}async function lh(e,t){if(!e||!e.startsWith($p))return e;const a=e.slice($p.length),[s,o]=a.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:gf,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 is(e){return e&&typeof e=="object"?e:{}}function Bs(e){const t=Number(e||0);return t===0||t===429||t>=500}function dh(e,t){const a=String(e.code||"").trim().toUpperCase(),s=String(e.error||"").trim();return a==="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 AS(e,t){if(t!==400)return!1;const a=String(e.code||"").trim().toUpperCase(),s=String(e.error||"").trim().toLowerCase();return a==="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 a=is(t.data);if(t.status===401)return{success:!1,statusCode:401,transient:!1,error:String(a.error||"Authentication required for workspace sync.")};if(t.status===429)return{success:!1,statusCode:429,retryAfterMs:t.retryAfterMs,transient:!0,error:String(a.error||"Workspace sync rate limited. Please retry later.")};if(AS(a,t.status)){const s=await ih(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const o=is(s.data);return{success:!1,statusCode:s.status,transient:Bs(s.status),retryAfterMs:s.retryAfterMs,error:dh(o,s.status)}}if(t=await gp(e.resolveCloudAuthUrl,e.workspaceId),!t.ok){const o=is(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:Bs(t.status),error:String(o.error||`Workspace sync handshake failed (${t.status})`)}}return{success:!0,provisioned:!0}}if(t.status===409&&a.code==="WORKSPACE_ID_MISMATCH"){if(e.allowProvisionOnMismatch===!1)return{success:!1,statusCode:409,transient:!1,error:String(a.error||"Selected cloud workspace could not be attached to this local workspace.")};const s=await ih(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const o=is(s.data);return{success:!1,statusCode:s.status,error:dh(o,s.status)}}if(t=await gp(e.resolveCloudAuthUrl,e.workspaceId),!t.ok){const o=is(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:Bs(t.status),error:String(o.error||`Workspace sync handshake failed (${t.status})`)}}return{success:!0,provisioned:!0}}return{success:!1,statusCode:t.status,transient:Bs(t.status),error:String(a.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 a=JSON.stringify([e,t]);try{const s=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(a));return Array.from(new Uint8Array(s)).map(o=>o.toString(16).padStart(2,"0")).join("")}catch{let s=2166136261;for(let l=0;l<a.length;l+=1)s^=a.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,a=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 ch(g.content,S)}):g.op==="asset-upsert"&&typeof g.contentBase64=="string"&&g.contentBase64.length>0?h.push({...g,contentBase64:await ch(g.contentBase64,S)}):h.push(g);l=h}const i=async()=>{const S=Date.now(),h=await _S(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=is(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:Bs(d.status),requestMs:o,changeCount:t,deleteCount:a,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=is(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:a,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,a=!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 x=null;const I=Number.isFinite(Number(e.maxPages))?Math.max(1,Math.floor(Number(e.maxPages))):20;try{for(;a&&s<I;){const C=async()=>{const ae=Date.now(),O=await xS(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:t,limit:e.bootstrap?500:200,repairMode:e.repairMode===!0});return l+=Date.now()-ae,O};let D=await C();if(!D.ok&&D.status===403&&e.ensureCloudWorkspaceReadyForSync&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(D=await C()),!D.ok){const ae=is(D.data);return{success:!1,kind:"pull_http",status:D.status,errorCode:typeof ae.code=="string"?ae.code:void 0,error:typeof ae.error=="string"?ae.error:void 0,retryAfterMs:D.retryAfterMs,transient:Bs(D.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 U=D.data||{},L=Array.isArray(U?.changes)?U.changes:[],X=U?.diagnostics&&typeof U.diagnostics=="object"?U.diagnostics:null;x=X;const me=Array.isArray(U?.workspaceMembers),se=me?U.workspaceMembers:void 0;for(const ae of L){if(ae.op==="upsert"){ae?.archived===!0||ae?.task?.isArchived===!0?y=!0:m=!0;continue}if(ae.op==="annotated-attachment-session-upsert"){const _=String(ae?.session?.id||"").trim();_&&v.add(_);continue}if(ae.op==="task-event-upsert"||ae.op==="entity-event-upsert"){k=!0;continue}if(ae.op==="initiative-upsert"||ae.op==="workstream-upsert"){S=!0;continue}if(ae.op==="document-upsert"){if(typeof ae.content=="string"&&typeof process<"u"&&Zc?.TASKFORCE_SYNC_KEY)try{ae.content=await lh(ae.content,Zc.TASKFORCE_SYNC_KEY)}catch{const _=String(ae.path||"").trim();_&&h.add(_)}continue}if(ae.op==="asset-upsert"){if(typeof ae.contentBase64=="string"&&typeof process<"u"&&Zc?.TASKFORCE_SYNC_KEY)try{ae.contentBase64=await lh(ae.contentBase64,Zc.TASKFORCE_SYNC_KEY)}catch{const _=String(ae.path||"").trim();_&&h.add(_)}continue}if(ae.op!=="delete")continue;const O=String(ae.taskId||"").trim();O&&d.add(O)}if(e.onPagePulled&&e.onPagePulled(),L.length>0||me){const ae=Date.now(),O=await Op(e.workspaceId,L,{...me?{workspaceMembers:se}:{},repairMode:e.repairMode===!0}),_=O.failures;if(!O.ok){i+=Date.now()-ae;const ke=is(O.data);if(_.some(z=>z.endsWith(":401")))return{success:!1,kind:"apply_auth",status:401,transient:!1,failures:_,cursor:t,pages:s,appliedChanges:o,pullRequestMs:l,applyMs:i,pulledDeleteTaskIds:d,pulledActiveUpserts:m,pulledArchivedUpserts:y,pulledTaskEventUpserts:k,documentDecryptFailures:Array.from(h),serverDiagnostics:X};const P=_.some(z=>{if(z.endsWith(":network"))return!0;const ie=z.split(":").pop()||"",fe=Number.parseInt(ie,10);return Number.isFinite(fe)&&(fe===429||fe>=500)});return{success:!1,kind:"apply_all_candidates",status:O.status||void 0,transient:P,error:String(ke.error||"").trim()||void 0,failures:_,hasTransientApplyFailure:P,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:x}}const de=is(O.data);if(de.success===!1)return i+=Date.now()-ae,{success:!1,kind:"apply_payload",transient:!1,error:String(de.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:x};if(i+=Date.now()-ae,o+=L.length,Array.isArray(de.emittedEventIds))for(const ke of de.emittedEventIds)g.add(String(ke));e.onChangesApplied&&e.onChangesApplied(L.length)}U&&"nextCursor"in U&&(U.nextCursor===null||typeof U.nextCursor=="string")&&(t=U.nextCursor),a=!!U?.hasMore,s+=1}if(e.bootstrap){const C=Date.now(),D=await Op(e.workspaceId,[],{bootstrapSnapshot:{currentAnnotatedAttachmentSessionIds:Array.from(v)}}),U=D.failures;if(!D.ok){i+=Date.now()-C;const L=is(D.data);if(U.some(se=>se.endsWith(":401")))return{success:!1,kind:"apply_auth",status:401,transient:!1,failures:U,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:x};const me=U.some(se=>{if(se.endsWith(":network"))return!0;const ae=se.split(":").pop()||"",O=Number.parseInt(ae,10);return Number.isFinite(O)&&(O===429||O>=500)});return{success:!1,kind:"apply_all_candidates",status:D.status||void 0,transient:me,error:String(L.error||"").trim()||void 0,failures:U,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:x}}i+=Date.now()-C}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:x}}catch(C){return{success:!1,kind:"exception",status:0,transient:!0,error:String(C?.message||C||"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:Bs(h)}}const a=is(t.data),s=a.settings&&typeof a.settings=="object"?a.settings:{},o=typeof a.updatedAt=="string"&&a.updatedAt.trim().length>0?a.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:Bs(h)}}const k=is(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)),a=Math.min(12e4,1500*2**Math.max(0,t-1)),s=Math.floor(a*(.15*Math.random()));return a+s}const MS=["chat_app","ide","cli","coding_tool","agent"],F5=["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 O5(e){return ES[e]}function $5(e){return e??"unclassified"}function U5(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 z5(e){return WS[e]}function ci(e){if(e==null)return;const t=String(e).trim();return t.length>0?t:void 0}function ia(e){if(e==null)return null;const t=String(e).trim();return t.length>0?t:null}function Sd(e){return ci(e)}function lm(e){return ia(e)}function Gr(e){return ia(e)}function tl(e){const t=ia(e);return t&&t.startsWith("/api/taskforce/context/")?t:null}function Eu(e){return ci(e)}function Du(e){if(e!==void 0)return ia(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 a=typeof e=="number"?e:Number(e);if(!Number.isFinite(a))return t?.nullable?null:void 0;const s=Math.floor(a);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 a=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(a).length>0?a:{}}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)),a={};for(const[s,o]of t){if(Array.isArray(o)){a[s]=o.map(l=>String(l??"")).sort((l,i)=>l.localeCompare(i));continue}o!=null&&(a[s]=String(o))}return a}function VS(e){return Array.isArray(e)?e.map(t=>{const a=t&&typeof t=="object"?t:{};return{id:String(a.id||"").trim(),title:String(a.title||"").trim(),isCompleted:!!a.isCompleted,order:a.order===void 0||a.order===null?"":String(a.order)}}).sort((t,a)=>{const s=Number.parseInt(t.order,10),o=Number.parseInt(a.order,10);return Number.isFinite(s)&&Number.isFinite(o)&&s!==o?s-o:t.title!==a.title?t.title.localeCompare(a.title):t.id.localeCompare(a.id)}):[]}function qS(e){return Array.isArray(e)?e.map(t=>{const a=t&&typeof t=="object"?t:null;return{id:String(a?.id||"").trim(),author:String(a?.author||"").trim(),submittedAuthor:ci(a?.submittedAuthor)||"",text:String(a?.text||""),timestamp:Gr(a?.timestamp)||"",actor:a?.actor??null}}).sort((t,a)=>t.timestamp!==a.timestamp?t.timestamp.localeCompare(a.timestamp):t.id!==a.id?t.id.localeCompare(a.id):t.author!==a.author?t.author.localeCompare(a.author):t.text.localeCompare(a.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 a=t&&typeof t=="object"?t:null;return{path:String(a?.path||"").trim(),fsPath:ci(a?.fsPath)||"",caption:ci(a?.caption)||"",displayName:ci(a?.displayName)||"",originalFilename:ci(a?.originalFilename)||"",assetId:Sd(a?.assetId)||"",referenceNumber:a?.referenceNumber===void 0||a.referenceNumber===null?"":String(a.referenceNumber),taskId:lm(a?.taskId)||"",timestamp:Gr(a?.timestamp)||""}}).sort((t,a)=>t.path!==a.path?t.path.localeCompare(a.path):t.assetId!==a.assetId?t.assetId.localeCompare(a.assetId):t.timestamp!==a.timestamp?t.timestamp.localeCompare(a.timestamp):JSON.stringify(t).localeCompare(JSON.stringify(a))):[]}function ZS(e,t){const a=Yg(e);return JSON.stringify({id:a.id,title:a.title,description:ia(a.description)||"",category:a.category,type:a.type,priority:a.priority===void 0||a.priority===null?"":String(a.priority),complexity:a.complexity===void 0||a.complexity===null?"":String(a.complexity),status:a.status,approach:ci(a.approach)||"",canceledReason:ia(a.canceledReason)||"",createdAt:a.createdAt,completedAt:Gr(a.completedAt)||"",taxonomies:GS(a.taxonomies),createdBy:Sd(a.createdBy)||"",assignee:Sd(a.assignee)||"",scheduledDate:ia(a.scheduledDate)||"",dueDate:ia(a.dueDate)||"",scheduledWeekKey:ia(a.scheduledWeekKey)||"",orderInDay:a.orderInDay===void 0||a.orderInDay===null?"":String(a.orderInDay),workstreamId:lm(a.workstreamId)||"",referenceNumber:a.referenceNumber===void 0||a.referenceNumber===null?"":String(a.referenceNumber),comments:qS(a.comments),attachments:KS(a.attachments),checklistItems:VS(a.checklistItems),isArchived:t?"1":"0"})}function YS(...e){return e.reduce((t,a)=>{const s=Gr(a)||"";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:Gr(t.avatarUpdatedAt)||"",description:ia(t.description)||"",role:ia(t.role)||"",provider:ia(t.provider)||"",model:ia(t.model)||"",surfaceType:ia(t.surfaceType)||"",seatScope:ia(t.seatScope)||"",providerMetadata:t.providerMetadata&&typeof t.providerMetadata=="object"&&!Array.isArray(t.providerMetadata)?t.providerMetadata:null,archivedAt:Gr(t.archivedAt)||"",archivedBy:Sd(t.archivedBy)||"",archivedReason:ia(t.archivedReason)||"",mergedIntoProfileId:Sd(t.mergedIntoProfileId)||"",rosterStateUpdatedAt:Gr(t.rosterStateUpdatedAt)||"",createdAt:Gr(t.createdAt)||"",updatedAt:Gr(t.updatedAt)||"",lastActiveAt:Gr(t.lastActiveAt)||""})}const _s={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 uh(e,t,a){const s=e.getId(t);if(!s)return!1;const o=e.getChangeKey(t),l=a?.watermarks;if(!l||l.size===0||!l.has(s))return!0;const d=a?.changeKeys?.get(s);return typeof d=="string"?d!==o:(l.get(s)||"")!==o}function mh(e){return Yg(e)}function ph(e,t){const a=e??t;return new Set(Array.from(a).map(s=>String(s||"").trim()).filter(s=>s.length>0))}function XS(e){return[...e].sort((t,a)=>{const s=String(t?.createdAt||"").trim(),o=String(a?.createdAt||"").trim(),l=s.localeCompare(o);return l!==0?l:String(t?.id||"").trim().localeCompare(String(a?.id||"").trim())})}function fh(e){return[...e].sort((t,a)=>{const s=String(t?.id||"").trim(),o=String(a?.id||"").trim();return s.localeCompare(o)})}function dm(e){return Array.isArray(e)?e:void 0}function ew(e){const t=new Date().toISOString(),a=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,J])=>[String(c||"").trim(),String(J||"").trim()]).filter(([c,J])=>c.length>0&&Number.isFinite(Date.parse(J)))),o=e.lastPushedWatermarks,l=e.lastPushedTaskChangeKeys,i=(c,J)=>(c?.referenceNumber===void 0||c?.referenceNumber===null)&&Number.isFinite(Number(c?.localReferenceNumber))?!0:uh(_s,{...c,isArchived:J},{watermarks:o,changeKeys:l}),d=fh(e.tasks||[]),m=fh(e.archivedTasks||[]),y=new Map,k=new Map,S=new Map,h=new Map,g=d.filter(c=>!a.has(String(c?.id||"").trim())&&i(c,!1)).map(c=>{const J=String(c?.id||"").trim(),we=_s.getWatermark(c),Ae=_s.getChangeKey({...c,isArchived:!1});return J&&(S.set(J,we),h.set(J,Ae)),{op:"upsert",archived:!1,task:mh(c)}}),v=m.filter(c=>!a.has(String(c?.id||"").trim())&&i(c,!0)).map(c=>{const J=String(c?.id||"").trim(),we=_s.getWatermark(c),Ae=_s.getChangeKey({...c,isArchived:!0});return J&&(S.set(J,we),h.set(J,Ae)),{op:"upsert",archived:!0,task:mh(c)}}),x=new Set;for(const c of e.tasks||[]){const J=String(c?.id||"").trim();J&&(x.add(J),y.set(J,_s.getWatermark(c)),k.set(J,_s.getChangeKey({...c,isArchived:!1})))}for(const c of e.archivedTasks||[]){const J=String(c?.id||"").trim();J&&(x.add(J),y.set(J,_s.getWatermark(c)),k.set(J,_s.getChangeKey({...c,isArchived:!0})))}const I=Array.from(e.lastPushedTaskIds).filter(c=>!x.has(c)).map(c=>({op:"delete",taskId:c,deletedAt:s.get(c)||t})),C=Array.from(a).map(c=>({op:"delete",taskId:c,deletedAt:s.get(c)||t})),D=new Set([...I.map(c=>String(c.taskId)),...C.map(c=>String(c.taskId))]),U=new Set((Array.isArray(e.initiatives)?e.initiatives:[]).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),L=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)),X=e.lastPushedInitiativeWatermarks,me=!X||X.size===0,se=(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:X.get(c.initiative.id)!==c.initiative.updatedAt),ae=new Set((Array.isArray(e.workstreams)?e.workstreams:[]).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),O=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)),_=e.lastPushedWorkstreamWatermarks,de=!_||_.size===0,ke=(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=>de?!0:_.get(c.workstream.id)!==c.workstream.updatedAt),Y=new Set((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),P=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(c=>[String(c?.id||"").trim(),md.getWatermark(c)]).filter(([c])=>c.length>0)),z=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(c=>[String(c?.id||"").trim(),md.getChangeKey(c)]).filter(([c])=>c.length>0)),ie=e.lastPushedAiProfileWatermarks,fe=e.lastPushedAiProfileChangeKeys,q=!ie||ie.size===0,Me=(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=>q?!0:uh(md,c.profile,{watermarks:ie,changeKeys:fe})),xe=ph(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&&!xe.has(c))),le=new Map((Array.isArray(e.documents)?e.documents:[]).map(c=>[String(c?.path||"").trim(),String(c?.updatedAt||"").trim()]).filter(([c])=>c.length>0)),Ie=e.lastPushedDocumentWatermarks,Ee=!Ie||Ie.size===0,je=(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=>Ee?!0:Ie.get(c.path)!==c.updatedAt),Pe=ph(e.currentAssetPaths,(Array.isArray(e.assets)?e.assets:[]).map(c=>String(c?.path||"").trim())),K=new Set(Array.from(e.lastPushedAssetPaths||new Set).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!Pe.has(c))),A=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,F=(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),Q=Array.isArray(e.documentReviewSessions)?e.documentReviewSessions:[],M=new Set(Q.map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),$=new Set(Q.filter(c=>String(c?.deletedAt||"").trim().length===0).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),be=e.lastPushedDocumentReviewSessionIds||new Set,H=new Map(Q.map(c=>[String(c?.id||"").trim(),String(c?.deletedAt||c?.updatedAt||c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),ce=e.lastPushedDocumentReviewSessionWatermarks,he=!ce||ce.size===0,G=Q.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=>he?!0:ce.get(c.session.id)!==c.session.updatedAt),re=Q.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=>he?!0:ce.get(c.sessionId)!==c.deletedAt),ue=Array.from(be).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!M.has(c)),Re=[...ue.map(c=>({sessionId:c,deletedAt:t})),...re],Te=new Set([...ue,...re.map(c=>c.sessionId)]),De=Array.isArray(e.documentReviewComments)?e.documentReviewComments:[],Oe=new Set(De.map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),vt=new Set(De.filter(c=>String(c?.deletedAt||"").trim().length===0).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),st=e.lastPushedDocumentReviewCommentIds||new Set,kt=new Map(De.map(c=>[String(c?.id||"").trim(),String(c?.deletedAt||c?.updatedAt||c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),Ye=e.lastPushedDocumentReviewCommentWatermarks,_t=!Ye||Ye.size===0,dt=De.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=>_t?!0:Ye.get(c.comment.id)!==c.comment.updatedAt),Qe=De.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=>_t?!0:Ye.get(c.commentId)!==c.deletedAt),Rt=Array.from(st).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!Oe.has(c)),ee=[...Rt.map(c=>({commentId:c,deletedAt:t})),...Qe],ze=new Set([...Rt,...Qe.map(c=>c.commentId)]),ft=Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions:[],it=new Set(ft.map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),Et=new Set(ft.filter(c=>String(c?.deletedAt||"").trim().length===0).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),ht=e.lastPushedAnnotatedAttachmentSessionIds||new Set,Ot=new Map(ft.map(c=>[String(c?.id||"").trim(),String(c?.deletedAt||c?.updatedAt||c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),Dt=e.lastPushedAnnotatedAttachmentSessionWatermarks,We=!Dt||Dt.size===0,tt=ft.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=>We?!0:Dt.get(c.session.id)!==c.session.updatedAt),Fe=ft.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=>We?!0:Dt.get(c.sessionId)!==c.deletedAt),Ze=Array.from(ht).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!it.has(c)),St=[...Ze.map(c=>({sessionId:c,deletedAt:t})),...Fe],ot=new Set([...Ze,...Fe.map(c=>c.sessionId)]),te=XS(Array.isArray(e.taskEvents)?e.taskEvents:[]),Le=new Map(te.map(c=>[String(c?.id||"").trim(),String(c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),Ct=e.lastPushedTaskEventWatermarks,jt=!Ct||Ct.size===0,Wt=te.map(c=>{const J=c.entityType==="initiative"||c.entityType==="workstream"?c.entityType:"task",we=String(c.entityId||c.taskId||"").trim(),Ae={id:String(c.id||"").trim(),workspaceId:String(c.workspaceId||"").trim(),entityType:J,entityId:we,taskId:J==="task"?String(c.taskId||we).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 J==="task"?{op:"task-event-upsert",event:{...Ae,entityType:"task",taskId:String(Ae.taskId||we).trim()}}:{op:"entity-event-upsert",event:{...Ae,entityType:J,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=>jt?!0:Ct.get(c.event.id)!==c.event.createdAt),Ge=[...se,...ke,...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}]:[],...Me,...je,...Array.from(oe).map(c=>({op:"document-delete",path:c,deletedAt:t})),...F,...Array.from(K).map(c=>({op:"asset-delete",path:c,deletedAt:t})),...G,...Re.map(c=>({op:"document-review-session-delete",sessionId:c.sessionId,deletedAt:c.deletedAt})),...dt,...ee.map(c=>({op:"document-review-comment-delete",commentId:c.commentId,deletedAt:c.deletedAt})),...tt,...St.map(c=>({op:"annotated-attachment-session-delete",sessionId:c.sessionId,deletedAt:c.deletedAt})),...Wt,...g,...v,...Array.from(D).map(c=>({op:"delete",taskId:c,deletedAt:s.get(c)||t}))],$t=e.baselineResetReason??null,yt=c=>{const J=c.upsertCount+(c.deleteCount||0);if(c.currentCount===0&&J===0)return{mode:"none",reason:null,currentCount:0,baselineCount:c.baselineCount,changeCount:J};if(c.alwaysFull)return{mode:J>0?"send-all":"none",reason:J>0?"full-state-domain":null,currentCount:c.currentCount,baselineCount:c.baselineCount,changeCount:J};const we=c.baselineCount===0&&c.currentCount>0&&c.upsertCount>=c.currentCount;return{mode:we?"send-all":"delta",reason:we?$t||"missing-baseline":null,currentCount:c.currentCount,baselineCount:c.baselineCount,changeCount:J}},E=Ge.reduce((c,J)=>{const we=String(J.op||"").trim();return c[we]=(c[we]||0)+1,c},{});return{changes:Ge,currentTaskIds:new Set(Array.from(x).filter(c=>!a.has(c))),currentTaskWatermarks:new Map(Array.from(y.entries()).filter(([c])=>!a.has(c))),currentTaskChangeKeys:new Map(Array.from(k.entries()).filter(([c])=>!a.has(c))),deleteTaskIds:D,currentInitiativeIds:U,currentInitiativeWatermarks:L,currentWorkstreamIds:ae,currentWorkstreamWatermarks:O,currentAiProfileIds:Y,currentAiProfileWatermarks:P,currentAiProfileChangeKeys:z,currentDocumentPaths:xe,deleteDocumentPaths:oe,currentDocumentWatermarks:le,currentAssetPaths:Pe,deleteAssetPaths:K,currentAssetWatermarks:A,currentDocumentReviewSessionIds:$,deleteDocumentReviewSessionIds:Te,currentDocumentReviewSessionWatermarks:H,currentDocumentReviewCommentIds:vt,deleteDocumentReviewCommentIds:ze,currentDocumentReviewCommentWatermarks:kt,currentAnnotatedAttachmentSessionIds:Et,deleteAnnotatedAttachmentSessionIds:ot,currentAnnotatedAttachmentSessionWatermarks:Ot,currentTaskEventWatermarks:Le,pushedWatermarks:S,pushedTaskChangeKeys:h,deltaDiagnostics:{totalChanges:Ge.length,byOp:E,baselineResetReason:$t,domains:{tasks:yt({currentCount:x.size,baselineCount:o?.size||0,upsertCount:g.length+v.length,deleteCount:D.size}),initiatives:yt({currentCount:U.size,baselineCount:X?.size||0,upsertCount:se.length}),workstreams:yt({currentCount:ae.size,baselineCount:_?.size||0,upsertCount:ke.length}),aiProfiles:yt({currentCount:Y.size,baselineCount:ie?.size||0,upsertCount:Me.length}),documents:yt({currentCount:xe.size,baselineCount:Ie?.size||0,upsertCount:je.length,deleteCount:oe.size}),assets:yt({currentCount:Pe.size,baselineCount:b?.size||0,upsertCount:F.length,deleteCount:K.size}),documentReviewSessions:yt({currentCount:$.size,baselineCount:ce?.size||0,upsertCount:G.length,deleteCount:Te.size}),documentReviewComments:yt({currentCount:vt.size,baselineCount:Ye?.size||0,upsertCount:dt.length,deleteCount:ze.size}),annotatedAttachmentSessions:yt({currentCount:Et.size,baselineCount:Dt?.size||0,upsertCount:tt.length,deleteCount:ot.size}),taskEvents:yt({currentCount:Le.size,baselineCount:Ct?.size||0,upsertCount:Wt.length}),taxonomy:yt({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(),a=(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:a,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 eo(e){const t=String(e||"").trim();return t.length>0?t:null}function hh(e){return String(e||"").trim().toLowerCase()==="attach-cloud-import"?"attach-cloud-import":null}function nw(e){if(!Array.isArray(e)||e.length<2)return null;const t=String(e[0]||"").trim(),a=String(e[1]||"").trim();return!t||!a?null:[t,a]}function aw(e){return Array.isArray(e)?e.map(t=>String(t||"").trim()).filter(t=>t.length>0):[]}function gh(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,a=s=>Array.isArray(t[s])?t[s].map(o=>nw(o)).filter(o=>Array.isArray(o)):[];return{taskIds:aw(t.taskIds),taskWatermarks:a("taskWatermarks"),taskChangeKeys:a("taskChangeKeys"),initiativeWatermarks:a("initiativeWatermarks"),workstreamWatermarks:a("workstreamWatermarks"),aiProfileWatermarks:a("aiProfileWatermarks"),aiProfileChangeKeys:a("aiProfileChangeKeys"),documentWatermarks:a("documentWatermarks"),assetWatermarks:a("assetWatermarks"),documentReviewSessionWatermarks:a("documentReviewSessionWatermarks"),documentReviewCommentWatermarks:a("documentReviewCommentWatermarks"),annotatedAttachmentSessionWatermarks:a("annotatedAttachmentSessionWatermarks"),taskEventWatermarks:a("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 a=e,s=a.lastErrorMessage,o=typeof s=="string"&&s.trim().length>0?s:null,l={version:2,enabled:!!(a.enabled??a.cloudSyncEnabled),phase:"idle",setupIntent:hh(a.setupIntent),startupFullReconcileCompletedAt:eo(a.startupFullReconcileCompletedAt),pullCursor:eo(a.pullCursor),lastPullAt:eo(a.lastPullAt),lastPushAt:eo(a.lastPushAt),lastSyncedAt:eo(a.lastSyncedAt),lastErrorMessage:o,pushBaseline:gh(a.pushBaseline)};l.phase=rw(a,l),l.enabled||(l.phase="idle",l.pullCursor=null);const d=Number(a.version||0)!==2||!!(a.enabled??a.cloudSyncEnabled)!==l.enabled||String(a.phase||"").trim()!==l.phase||hh(a.setupIntent)!==l.setupIntent||eo(a.startupFullReconcileCompletedAt)!==l.startupFullReconcileCompletedAt||eo(a.pullCursor)!==l.pullCursor||eo(a.lastPullAt)!==l.lastPullAt||eo(a.lastPushAt)!==l.lastPushAt||eo(a.lastSyncedAt)!==l.lastSyncedAt||o!==l.lastErrorMessage||JSON.stringify(gh(a.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),a=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!a||!s||!l||!i||o!=="pull"&&o!=="push"&&o!=="repair"?null:{ownerId:a,workspaceId:s,operation:o,heartbeatAt:l,expiresAt:i}}catch{return null}}function uw(e,t,a,s){return{ownerId:e,workspaceId:t,operation:a,heartbeatAt:new Date(s).toISOString(),expiresAt:new Date(s+lw).toISOString()}}function mw(e,t=Date.now()){if(!e)return!0;const a=Date.parse(e.expiresAt);return!Number.isFinite(a)||a<=t}function kp(e,t){const a={...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 a.enabled||(a.phase="idle",a.setupIntent=null,a.pullCursor=null),a}function pw(e){return{...e,pushBaseline:null}}function fw(e){const{currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:a,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),x=r.useRef(""),I=r.useRef(""),C=r.useRef(new Set),D=r.useRef(new Set),U=r.useRef(new Map),L=r.useRef(null),X=r.useRef(Yu()),me=r.useRef(""),se=r.useRef(null),ae=r.useRef(null),O=r.useRef(null),_=r.useRef(null);if(!me.current){const A=Date.now().toString(36),b=Math.random().toString(36).slice(2,10);me.current=`sync-lease-${A}-${b}`}const de=r.useCallback(()=>{h.current=0,S.current=null,k.current!==null&&typeof window<"u"&&(window.clearTimeout(k.current),k.current=null),y(null)},[]),ke=r.useCallback((A,b)=>{if(typeof window>"u")return;const R=Math.max(1,h.current+1);h.current=R;const F=PS(R),Q=Number(b?.minDelayMs),M=Number.isFinite(Q)&&Q>0?Math.max(F,Math.floor(Q)):F,$=Date.now()+M;S.current=$,y(new Date($).toISOString()),k.current!==null&&window.clearTimeout(k.current),k.current=window.setTimeout(()=>{k.current=null,S.current=null,y(null),A()},M)},[]),Y=r.useCallback(()=>{const A=S.current;return typeof A=="number"&&Number.isFinite(A)&&A>Date.now()},[]),P=r.useCallback(A=>{if(typeof window>"u")return null;const b=String(A||"").trim();return ed(b)?dw(window.localStorage.getItem(yp(b))):null},[]),z=r.useCallback(A=>{const b=String(A||"").trim();if(b)try{_.current?.postMessage({workspaceId:b})}catch{}},[]),ie=r.useCallback((A,b)=>{if(typeof window>"u")return null;const R=String(A||"").trim();if(!ed(R))return null;const F=uw(me.current,R,b,Date.now());try{window.localStorage.setItem(yp(R),JSON.stringify(F))}catch{return null}return z(R),F},[z]),fe=r.useCallback(()=>{O.current!==null&&typeof window<"u"&&(window.clearInterval(O.current),O.current=null)},[]),q=r.useCallback((A,b)=>{if(typeof window>"u")return;const R=String(A||se.current||"").trim();if(!R)return;const F=P(R),Q=F?.ownerId===me.current;if(!(!b?.force&&F&&!Q)){fe();try{window.localStorage.removeItem(yp(R))}catch{}se.current=null,ae.current=null,z(R)}},[z,P,fe]),Me=r.useCallback((A,b)=>{typeof window>"u"||(fe(),O.current=window.setInterval(()=>{const R=String(se.current||"").trim(),F=ae.current;if(!R||!F){fe();return}if(P(R)?.ownerId!==me.current){fe(),se.current=null,ae.current=null;return}ie(R,F)},cw),se.current=A,ae.current=b)},[P,fe,ie]),xe=r.useCallback(async(A,b)=>{if(typeof window>"u")return!0;const R=String(A||"").trim();if(!ed(R))return!1;const F=P(R);if(F?.ownerId===me.current)return ie(R,b)?(Me(R,b),!0):!1;if(F&&!mw(F)||!ie(R,b))return!1;const $=P(R);return!$||$.ownerId!==me.current?!1:(Me(R,b),!0)},[P,Me,ie]),oe=r.useCallback(A=>{q(A,{force:!0})},[q]),le=r.useCallback(A=>{const b=X.current,R=kp(b,{enabled:!!A.enabled,phase:A.phase||b.phase,setupIntent:A.setupIntent,pullCursor:A.pullCursor,lastPullAt:A.lastPullAt,lastPushAt:A.lastPushAt,lastSyncedAt:A.lastSyncedAt,lastErrorMessage:A.lastErrorMessage});X.current=R,L.current=R.pullCursor,a(R.enabled),s(R.phase),o(R.setupIntent??null),l(R.lastPullAt),i(R.lastPushAt),d(R.lastErrorMessage??null)},[a,s,o,l,i,d]),Ie=r.useCallback(A=>{const b=kp(X.current,A);return le(b),b},[le]),Ee=r.useCallback(()=>X.current,[]),je=r.useCallback(async A=>{const b=kp(X.current,A);X.current=b,L.current=b.pullCursor;const R=await pf({workspaceId:t,stateKey:"workspace-sync",patch:pw(b),throwOnError:!0,respectFailureCooldown:!1}),F=R.response,Q=R.payload;if(R.skipped)return le(b),b;if(!F)throw new Error("Failed to persist workspace sync state (missing response)");if(!F.ok||Q?.success===!1)throw new Error(Q?.error||`Failed to persist workspace sync state (${F.status})`);return le(b),b},[le,t]),Pe=r.useCallback(async()=>{if(!ed(t)){const A=Yu();X.current=A,le(A);return}try{const A=await fetch(`/api/taskforce/ui-state?key=workspace-sync&workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!A.ok)return;const b=await A.json().catch(()=>({})),R=sw(b?.state&&typeof b.state=="object"?b.state:null);X.current=R.state,le(R.state),R.changed&&je(R.state)}catch{}},[le,t,je]),K=r.useCallback(async(A,b)=>{if(!ed(t))return{success:!1,error:"Workspace setup is required before enabling sync."};try{if(!A.enabled)return await je({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 je({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,je]);return r.useEffect(()=>{x.current="",I.current="",C.current=new Set,D.current=new Set,U.current=new Map,L.current=null,X.current=Yu(),g.current=!1,v.current=!1,q(),de()},[de,t,q]),r.useEffect(()=>{if(typeof window>"u"||typeof BroadcastChannel>"u")return;const A=new BroadcastChannel(iw);return _.current=A,()=>{A.close(),_.current===A&&(_.current=null)}},[]),r.useEffect(()=>()=>{k.current!==null&&typeof window<"u"&&(window.clearTimeout(k.current),k.current=null),q()},[q]),{workspaceRetryAt:m,isWorkspaceRetryPending:Y,workspacePushInFlightRef:g,workspacePullInFlightRef:v,workspaceLastPushedSignatureRef:x,workspacePendingSignatureRef:I,workspaceLastPushedTaskIdsRef:C,workspaceDeletedTaskIdsRef:D,workspaceDeletedTaskWatermarksRef:U,workspacePullCursorRef:L,clearWorkspaceRetry:de,scheduleWorkspaceRetry:ke,persistWorkspaceSyncPatch:je,applyWorkspaceSyncPatchLocally:Ie,readWorkspaceSyncStateSnapshot:Ee,loadWorkspaceSyncState:Pe,applyWorkspaceSyncStateSnapshot:le,saveWorkspaceCloudSyncSettings:K,acquireWorkspaceSyncLease:xe,releaseWorkspaceSyncLease:q,forceClearWorkspaceSyncLease:oe,readWorkspaceSyncLease:P}}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 a=typeof t.eventId=="string"?t.eventId.trim():"";if(a&&this.seenEventIds.has(a))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 a?(this.rememberEventId(a),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,a&&this.rememberEventId(a),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};if(!this.activeEpoch)return this.activeEpoch=s,this.lastSeq=i,a&&this.rememberEventId(a),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,a&&this.rememberEventId(a),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 a=this.seenEventIdQueue.shift();a&&this.seenEventIds.delete(a)}}}function Jg(e){const{enabled:t,workspaceId:a,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),x=r.useRef(0),I=r.useRef(""),C=r.useRef(!1),D=r.useRef(null),U=r.useRef(null),L=r.useRef(new hw),X=r.useRef(m),me=r.useRef(y);r.useEffect(()=>{X.current=m},[m]),r.useEffect(()=>{me.current=y},[y]);const[se,ae]=r.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),O=r.useMemo(()=>String(a||"").trim(),[a]),_=r.useMemo(()=>String(s||"").trim(),[s]);return r.useEffect(()=>{let de=!1;const ke=()=>{v.current!==null&&(window.clearTimeout(v.current),v.current=null)},Y=()=>{const le=g.current;if(g.current=null,le)try{le.close()}catch{}},P=le=>le==="taskforce:replay-gap"||le==="taskforce:replay-reset"?4:le==="taskforce:mutation"||le==="taskforce:replay"?3:1,z=le=>{const Ie=U.current;if(Ie){const Ee=P(Ie.type),je=P(le.type);if(je<Ee||je===Ee&&Ie.eventId&&!le.eventId)return}U.current=le,D.current!==null&&window.clearTimeout(D.current),D.current=window.setTimeout(()=>{D.current=null;const Ee=X.current;if(!U.current||typeof Ee!="function")return;const je=U.current;U.current=null,Ee(je)},80)},ie=le=>{try{const Ie=JSON.parse(String(le.data||""));return!Ie||typeof Ie!="object"?null:Ie}catch{return null}},fe=le=>{const Ie=typeof le.serverEpoch=="string"?le.serverEpoch.trim():"",Ee=Number(le.seq);!Ie||!Number.isFinite(Ee)||Ee<0||(I.current=`${Ie}:${Math.floor(Ee)}`,C.current=!1)},q=()=>{const le=L.current.getTelemetry();ae(le);const Ie=me.current;typeof Ie=="function"&&Ie(le)},Me=le=>{const Ie={type:"taskforce:replay",workspaceId:O,limit:d},Ee=I.current;Ee&&(Ie.cursor=Ee),le.send(JSON.stringify(Ie))},xe=()=>{if(!t||de)return;ke(),x.current+=1;const le=x.current,Ie=Math.max(50,Math.floor(o)),Ee=Math.max(Ie,Math.floor(l)),je=Math.min(Ee,Ie*Math.pow(2,Math.max(0,le-1)));h(le>=i?"degraded-fallback":"reconnecting"),v.current=window.setTimeout(()=>{de||(v.current=null,oe())},je)},oe=()=>{if(!t||de||!O||!_)return;Y();let le;try{le=new WebSocket(_)}catch{xe();return}g.current=le,le.addEventListener("open",()=>{x.current=0,h("connected"),le.send(JSON.stringify({type:"taskforce:subscribe",workspaceId:O,userId:k||void 0})),Me(le)}),le.addEventListener("message",Ie=>{const Ee=ie(Ie);if(!Ee||typeof Ee.type!="string")return;const je=typeof Ee.workspaceId=="string"?Ee.workspaceId.trim():O;if(!(!je||je!==O)){if(Ee.type==="taskforce:update"){z({type:"taskforce:update",workspaceId:O,eventId:typeof Ee.eventId=="string"?Ee.eventId.trim():void 0});return}if(Ee.type==="taskforce:mutation"){const Pe=L.current.process({eventId:Ee.eventId,serverEpoch:Ee.serverEpoch,seq:Ee.seq});if(!Pe.accepted){q(),Pe.shouldRecover&&(I.current="",C.current||(C.current=!0,z({type:"taskforce:replay-gap",workspaceId:O})));return}fe(Ee),q(),z({type:Ee.type,workspaceId:O,eventId:typeof Ee.eventId=="string"?Ee.eventId.trim():void 0});return}if(Ee.type==="taskforce:replay"){const Pe=Array.isArray(Ee.events)?Ee.events:[];let K=0;for(const A of Pe)L.current.process({eventId:A.eventId,serverEpoch:A.serverEpoch,seq:A.seq}).accepted&&(K+=1,fe(A));C.current=!1,q(),(K>0||Ee.truncated===!0)&&z({type:"taskforce:replay",workspaceId:O}),Ee.truncated===!0&&Me(le);return}if(Ee.type==="taskforce:replay-gap"||Ee.type==="taskforce:replay-reset"){if(I.current="",C.current)return;C.current=!0,z({type:Ee.type,workspaceId:O})}}}),le.addEventListener("close",Ie=>{if(g.current===le&&(g.current=null),!de&&t){const Ee=Number(Ie?.code||0),je=String(Ie?.reason||"").trim();console.warn(`[Taskforce] Realtime socket closed workspace=${O} user=${String(k||"anonymous").trim()||"anonymous"} code=${Ee}${je?` reason=${je}`:""}`)}xe()}),le.addEventListener("error",()=>{try{le.close()}catch{}})};return!t||!O||!_?(h("degraded-fallback"),ke(),Y(),()=>{ke(),Y()}):(h("reconnecting"),oe(),()=>{de=!0,ke(),D.current!==null&&(window.clearTimeout(D.current),D.current=null),U.current=null,Y()})},[t,O,_,o,l,i,d,k]),{connectionState:S,telemetry:se}}const Up="taskforce:context-assets-mutated";function H5(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Up,{detail:e}))}const zp="taskforce:ai-profiles-mutated";function G5(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(zp,{detail:e}))}const gw=4,Bu=100;function sd(e,t,a){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,a));if(e instanceof Set)return Array.from(e.values()).slice(0,Bu).map(s=>sd(s,t+1,a));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,a);return s}if(typeof e=="object"){if(a.has(e))return"[Circular]";a.add(e);const s={};for(const[o,l]of Object.entries(e).slice(0,Bu))s[o]=sd(l,t+1,a);return a.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,yh="Another local window is already syncing this workspace. Wait a few seconds, or press Repair in that window.";function oi(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 Ga(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:Gr(e?.avatarUpdatedAt??e?.avatar_updated_at),description:ia(e?.description),role:ia(e?.role),provider:ia(e?.provider),model:ia(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:Gr(e?.archivedAt??e?.archived_at),archivedBy:lm(e?.archivedBy??e?.archived_by),archivedReason:ia(e?.archivedReason??e?.archived_reason),mergedIntoProfileId:lm(e?.mergedIntoProfileId??e?.merged_into_profile_id),rosterStateUpdatedAt:Gr(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:Gr(e?.lastActiveAt??e?.last_active_at)}}function kh(){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 xw(e){if(!(typeof window>"u"))try{window.localStorage.setItem(Qg,JSON.stringify(e))}catch{}}function _w(e){try{return JSON.stringify(e&&typeof e=="object"?e:null)}catch{return"null"}}function Cw(e){return e.flatMap(t=>{const a=String(t?.id||"").trim();return!a||!Array.isArray(t?.comments)?[]:t.comments.map(s=>({id:String(s?.id||"").trim(),sessionId:a,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,a=[],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 a||[]){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 a=typeof e.taxonomyStateFingerprint=="string"?e.taxonomyStateFingerprint:"",s=!t||!a||a===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 vh(e,t){if(typeof window>"u")return null;try{const a=`${Xg}.${e}`,s=window.localStorage.getItem(a);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 Sh(e,t){if(typeof window>"u")return!1;try{const a=`${Xg}.${e}`;return window.localStorage.setItem(a,JSON.stringify({v:11,savedAt:new Date().toISOString(),...ey(t)})),!0}catch{return!1}}function Aw({currentWorkspaceId:e,workspaceSyncPhase:t,clearWorkspaceRetry:a,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 x=async(C,D)=>{a(),s(!1),o("error");const U="Session expired. Sign in again to resume cloud sync.";l(U),i(U),d(new Date().toISOString()),m(e,{eventType:C==="handshake"?"handshake":C,status:"error",statusCode:D,errorMessage:U}),y(!0),k(!1),await S()};return{handleSyncAuthFailure:x,ensureWorkspaceSyncReady:async()=>{if(!oi(e)){const U="Workspace sync blocked: local workspace ID is unresolved.";return i(U),d(new Date().toISOString()),l(U),o("error"),!1}const C=await h();if(C.success)return!0;if(C.statusCode===401)return await x("handshake",401),!1;const D=C.error||"Workspace sync handshake failed.";return i(D),d(new Date().toISOString()),l(D),o("error"),m(e,{eventType:"handshake",status:"error",statusCode:C.statusCode,errorMessage:D}),C.transient||Bs(C.statusCode)?g(C.retryAfterMs):(t==="active"||t==="attach-cloud"||t==="provision-local")&&v({phase:"error",lastErrorMessage:D}),!1}}}function Iw({workspaceSyncPhase:e,lastBootstrapPhaseRef:t,bootstrapPhaseStartedAtRef:a,bootstrapLastProgressAtRef:s}){if(e==="attach-cloud"||e==="provision-local"){t.current=e,a.current===null&&(a.current=Date.now()),s.current=null;return}a.current=null,s.current=null}function Tw({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:a,workspacePullInFlightRef:s,workspacePushInFlightRef:o,bootstrapPhaseStartedAtRef:l,bootstrapLastProgressAtRef:i,setWorkspaceLastErrorMessage:d,setWorkspaceLastErrorAt:m,setUserGlobalSyncStatus:y,setUserGlobalSyncError:k,setWorkspaceSyncBusy:S,persistWorkspaceSyncPatchSafely:h}){if(!t||a!=="attach-cloud"&&a!=="provision-local")return;const g=window.setInterval(()=>{if(a!=="attach-cloud"&&a!=="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 I=`Workspace sync ${a==="attach-cloud"?"initial cloud pull":"initial cloud upload"} stalled. Press Repair to restart sync for this workspace.`;d(I),m(new Date().toISOString()),y("error"),k(I),S(!1),h({phase:"error",lastErrorMessage:I}),Ga("workspace_sync_bootstrap_timeout",{workspaceId:e,phase:a})},1e4);return()=>window.clearInterval(g)}function Rw(e){const{workspaceSyncPhase:t,lastBootstrapPhase:a,workspaceLastPullAt:s}=e;return t==="provision-local"?"provision-local":t==="attach-cloud"?"attach-cloud":t==="active"||a==="active"?"active":a==="provision-local"||a==="attach-cloud"?a:s?"attach-cloud":"provision-local"}const yf={allowed:!0};function ar(e,t){return{allowed:!1,reason:e,retainPendingSignature:t?.retainPendingSignature===!0}}function kf(e,t){return e.cloudAuthConfigured?e.runtimeMode!=="local"?ar("runtime-not-local"):e.workspaceCloudSyncEnabled?(t?.requireValidWorkspace??!0)&&!oi(e.currentWorkspaceId)?ar("invalid-workspace"):null:ar("sync-disabled"):ar("cloud-auth-unconfigured")}function Hp(e){const t=kf(e);return t||(e.repairModeActive&&!e.repairModeBypass?ar("repair-active",{retainPendingSignature:!0}):e.workspaceSyncPhase==="attach-cloud"?ar("attach-cloud",{retainPendingSignature:!0}):e.isAuthenticated?e.pushInFlight?ar("push-in-flight",{retainPendingSignature:!0}):e.pullInFlight?ar("pull-in-flight",{retainPendingSignature:!0}):yf:ar("auth-required"))}function Gp(e){const t=kf(e);return t||(e.repairModeActive&&!e.repairModeBypass?ar("repair-active"):e.workspaceSyncPhase==="provision-local"?ar("provision-local"):e.retryPending?ar("retry-pending"):e.isAuthenticated?e.pullInFlight?ar("pull-in-flight"):e.pushInFlight?ar("push-in-flight"):yf:ar("auth-required"))}function Vp(e){const t=kf(e,{requireValidWorkspace:!1});return t||(e.isAuthenticated?yf:ar("auth-required"))}function jw(e){return ar("lease-held",{retainPendingSignature:e==="push"})}function xd(e){return e.cloudAuthConfigured&&e.runtimeMode==="local"&&e.workspaceCloudSyncEnabled&&e.authSessionResolved}function Nw({enabled:e,phase:t,busy:a,retryAt:s,lastErrorMessage:o}){return e?t==="provision-local"?{status:"syncing",summary:a?"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:a?"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."}:a?{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 xd(e)&&e.workspaceSyncPhase!=="attach-cloud"&&e.workspaceSyncReferenceSnapshotsReady}function Mw(e){return xd(e)&&e.workspaceSyncPhase==="active"&&e.workspaceSyncReferenceSnapshotsReady}function Ew(e){return xd(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 xd(e)&&e.isAuthenticated&&e.workspaceSyncPhase==="active"}function Lw(e){return xd(e)&&e.isAuthenticated&&e.workspaceSyncPhase!=="provision-local"&&e.workspaceSyncPhase!=="attach-cloud"&&!e.alreadyRan}function Bw({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:a,workspaceSyncPhase:s,workspacePullInFlightRef:o,realtimePullDebounceRef:l,realtimeSuppressedEventIdsRef:i,clearWorkspaceRetry:d,isWorkspaceRetryPending:m,pullWorkspaceChangesFromCloud:y}){return{handleRealtimeSignal:g=>{if(!e||t!=="local"||!a||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 x=v?.queueRef,I=Number.isFinite(v?.maxQueueSize)?Math.max(1,Number(v?.maxQueueSize)):2048,C=Number.isFinite(v?.ttlMs)?Math.max(0,Number(v?.ttlMs)):null;for(const D of g){const U=String(D||"").trim();!U||i.current.has(U)||(i.current.add(U),x&&x.current.push(U),C!==null&&window.setTimeout(()=>{i.current.delete(U)},C))}if(x)for(;x.current.length>I;){const D=x.current.shift();D&&i.current.delete(D)}},clearRealtimePullDebounce:()=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null)}}}function ny(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){ny(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:a,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:x,workspaceLastPushedTaskChangeKeysRef:I,workspaceLastPushedInitiativeIdsRef:C,workspaceLastPushedInitiativeWatermarksRef:D,workspaceLastPushedWorkstreamIdsRef:U,workspaceLastPushedWorkstreamWatermarksRef:L,workspaceLastPushedAiProfileIdsRef:X,workspaceLastPushedAiProfileWatermarksRef:me,workspaceLastPushedAiProfileChangeKeysRef:se,workspaceLastPushedDocumentPathsRef:ae,workspaceLastPushedDocumentWatermarksRef:O,workspaceLastPushedAssetPathsRef:_,workspaceLastPushedAssetWatermarksRef:de,workspaceLastPushedDocumentReviewSessionIdsRef:ke,workspaceLastPushedDocumentReviewSessionWatermarksRef:Y,workspaceLastPushedDocumentReviewCommentIdsRef:P,workspaceLastPushedDocumentReviewCommentWatermarksRef:z,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:ie,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:fe,workspaceLastPushedTaskEventWatermarksRef:q,workspaceBaselineResetReasonRef:Me,bootstrapPhaseStartedAtRef:xe,bootstrapLastProgressAtRef:oe,acquireWorkspaceSyncLease:le,releaseWorkspaceSyncLease:Ie,forceClearWorkspaceSyncLease:Ee,clearWorkspaceRetry:je,clearWorkspaceIssue:Pe,reportWorkspaceWindowContention:K,reportSyncEvent:A,persistWorkspaceSyncPatch:b,persistWorkspaceSyncWatermarksSnapshotBestEffort:R,buildWorkspaceSyncSignature:F,pullWorkspaceChangesFromCloud:Q,pushWorkspaceChangesToCloud:M,cloudAuthConfigured:$,runtimeMode:be,isAuthenticated:H,checkAuthSession:ce}){const he=a==="provision-local"?"push":a==="attach-cloud"?"bootstrap":"pull";return{retryWorkspaceCloudSync:async()=>{je();let ue=Vp({cloudAuthConfigured:$,runtimeMode:be,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:H});if(!ue.allowed&&ue.reason==="auth-required"){if(!await ce())return A(e,{eventType:he,status:"error",errorMessage:"Manual sync retry blocked: sign in is required.",details:{source:"retry.blocked",reason:"auth-required",phase:a}}),!1;ue=Vp({cloudAuthConfigured:$,runtimeMode:be,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:!0})}if(!ue.allowed)return A(e,{eventType:he,status:"error",errorMessage:`Manual sync retry blocked: ${ue.reason}.`,details:{source:"retry.blocked",reason:ue.reason,phase:a}}),!1;if(i.current=!0,a==="provision-local"){const De=F();return De?M(De,{forceAllAiProfiles:!0}):!1}const Re=await Q();if(a==="attach-cloud")return Re;const Te=F();if(Te){g.current=Te;const De=await M(Te,{forceAllAiProfiles:i.current===!0});return Re||De}return Re},resetWorkspaceSyncCursorAndPull:async()=>{if(!await le(e,"repair")&&(Ee(e),!await le(e,"repair"))){K("repair"),A(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:a}});return}const Re=Rw({workspaceSyncPhase:a,lastBootstrapPhase:o.current,workspaceLastPullAt:s}),Te=Re==="provision-local",De=Re==="active";je(),Pe();try{if(!t){A(e,{eventType:"bootstrap",status:"error",errorMessage:"Manual sync repair blocked because workspace sync is turned off.",details:{source:"repair.blocked",reason:"sync-disabled",phase:a}});return}if(xe.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:x,workspaceLastPushedTaskChangeKeysRef:I,workspaceLastPushedInitiativeIdsRef:C,workspaceLastPushedInitiativeWatermarksRef:D,workspaceLastPushedWorkstreamIdsRef:U,workspaceLastPushedWorkstreamWatermarksRef:L,workspaceLastPushedAiProfileIdsRef:X,workspaceLastPushedAiProfileWatermarksRef:me,workspaceLastPushedAiProfileChangeKeysRef:se,workspaceLastPushedDocumentPathsRef:ae,workspaceLastPushedDocumentWatermarksRef:O,workspaceLastPushedAssetPathsRef:_,workspaceLastPushedAssetWatermarksRef:de,workspaceLastPushedDocumentReviewSessionIdsRef:ke,workspaceLastPushedDocumentReviewSessionWatermarksRef:Y,workspaceLastPushedDocumentReviewCommentIdsRef:P,workspaceLastPushedDocumentReviewCommentWatermarksRef:z,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:ie,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:fe,workspaceLastPushedTaskEventWatermarksRef:q,workspaceBaselineResetReasonRef:Me}):De&&ny({workspaceLastPushedWatermarksRef:x,workspaceLastPushedTaskChangeKeysRef:I,workspaceLastPushedInitiativeIdsRef:C,workspaceLastPushedInitiativeWatermarksRef:D,workspaceLastPushedWorkstreamIdsRef:U,workspaceLastPushedWorkstreamWatermarksRef:L,workspaceLastPushedAiProfileIdsRef:X,workspaceLastPushedAiProfileWatermarksRef:me,workspaceLastPushedAiProfileChangeKeysRef:se,workspaceLastPushedDocumentPathsRef:ae,workspaceLastPushedDocumentWatermarksRef:O,workspaceLastPushedAssetPathsRef:_,workspaceLastPushedAssetWatermarksRef:de,workspaceBaselineResetReasonRef:Me}),R(),l.current=!0,A(e,{eventType:"bootstrap",status:"success",errorMessage:"Manual sync repair started.",details:{source:"repair.started",phase:a,repairPhase:Re,lastBootstrapPhase:o.current}}),await b({phase:Re,pullCursor:null,startupFullReconcileCompletedAt:null,lastErrorMessage:null}),Re==="provision-local"){const st=F();if(!st)return;await M(st,{forceAllAiProfiles:!0,repairMode:!0});return}const Oe=await Q({repairMode:!0});if(Re!=="active"||!Oe)return;const vt=F();if(!vt)return;g.current=vt,await M(vt,{forceAllAiProfiles:!0,repairMode:!0})}finally{l.current=!1,Ie(e)}}}}function Ow({workspaceSyncPhase:e,forceCursorNull:t,currentCursor:a}){const s=e==="attach-cloud";return{bootstrap:s,cursor:s||t===!0?null:a,successEventType:s?"bootstrap":"pull"}}function $w({workspaceSyncPhase:e,forceCursorNull:t,startupFullReconcileRan:a,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&&!a,deferredPushSignature:m}}function Uw({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:a,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:x,persistWorkspaceSyncPatchBestEffort:I,persistWorkspaceSyncWatermarksSnapshotBestEffort:C,reportSyncEvent:D,acquireWorkspaceSyncLease:U,releaseWorkspaceSyncLease:L,reportWorkspaceWindowContention:X,refreshWorkspaceSyncMarkdownDocumentsSnapshot:me,refreshWorkspaceSyncAiProfilesSnapshot:se,refreshWorkspaceSyncAssetsSnapshot:ae,refreshWorkspaceSyncPlanningEntitiesSnapshot:O,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:_,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:de,refreshLocalWorkspaceTaskCollections:ke,buildWorkspaceSyncPayload:Y,buildWorkspaceSyncSignature:P,seedWorkspaceSnapshotPushBaseline:z,shouldSuppressAttachBootstrapPush:ie,recordSuppressedEventIds:fe,workspaceRepairModeRef:q,workspaceForceFullAiProfilePushRef:Me,workspacePushInFlightRef:xe,workspacePullInFlightRef:oe,workspacePendingPushReplayRef:le,workspaceLastPushedSignatureRef:Ie,workspacePendingSignatureRef:Ee,workspaceLastPushedTaskIdsRef:je,workspaceDeletedTaskIdsRef:Pe,workspaceDeletedTaskWatermarksRef:K,workspacePullCursorRef:A,workspaceLastPushedWatermarksRef:b,workspaceLastPushedTaskChangeKeysRef:R,workspaceLastPushedInitiativeIdsRef:F,workspaceLastPushedInitiativeWatermarksRef:Q,workspaceLastPushedWorkstreamIdsRef:M,workspaceLastPushedWorkstreamWatermarksRef:$,workspaceLastPushedAiProfileIdsRef:be,workspaceLastPushedAiProfileWatermarksRef:H,workspaceLastPushedAiProfileChangeKeysRef:ce,workspaceLastPushedDocumentPathsRef:he,workspaceLastPushedDocumentWatermarksRef:G,workspaceLastPushedAssetPathsRef:re,workspaceLastPushedAssetWatermarksRef:ue,workspaceLastPushedDocumentReviewSessionIdsRef:Re,workspaceLastPushedDocumentReviewSessionWatermarksRef:Te,workspaceLastPushedDocumentReviewCommentIdsRef:De,workspaceLastPushedDocumentReviewCommentWatermarksRef:Oe,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:vt,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:st,workspaceLastPushedTaskEventWatermarksRef:kt,workspaceBaselineResetReasonRef:Ye,workspaceCaptureAttachBootstrapBaselineRef:_t,workspaceStartupFullReconcileRanRef:dt,workspaceFullReconcileInFlightRef:Qe,bootstrapLastProgressAtRef:Rt,realtimeSuppressedEventQueueRef:ee,setWorkspaceSyncBusy:ze,setUserGlobalSyncStatus:ft,setUserGlobalSyncError:it,setWorkspaceLastErrorMessage:Et,setWorkspaceLastErrorAt:ht,setWorkspaceLastPullAt:Ot,setWorkspaceLastPushAt:Dt,setWorkspaceSyncPendingChanges:We,setTasks:tt,setArchivedTasks:Fe}){const Ze=async(ot,te)=>{let Le=Hp({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:a,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:l,repairModeActive:q.current===!0,repairModeBypass:te?.repairMode===!0,pushInFlight:xe.current,pullInFlight:oe.current});if(!Le.allowed&&Le.reason==="auth-required"){if(!await i())return!1;Le=Hp({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:a,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:!0,repairModeActive:q.current===!0,repairModeBypass:te?.repairMode===!0,pushInFlight:xe.current,pullInFlight:oe.current})}if(!Le.allowed)return Le.retainPendingSignature&&(Ee.current=ot),!1;if(ie(ot))return!1;if(!await U(s,"push")){const c=jw("push");return!c.allowed&&c.retainPendingSignature&&(Ee.current=ot),X("push"),!1}xe.current=!0,ze(!0),ft("syncing"),it(null);const jt=Date.now(),Wt=te?.forceAllAiProfiles===!0||Me.current===!0,Ge=te?.repairMode===!0||q.current===!0;let $t=null,yt=!1,E=ot;try{if(await me(),await se(),await ae(),await O(),await _(),!await y())return!1;const J=P();if(J&&(E=J),ie(E))return!1;const we=le.current,Ke=we&&we.signature===E&&(!Wt||we.forceAllAiProfiles===!0)&&(!Ge||we.repairMode===!0)?we:null,Je=Ke?.payload||Y({forceAllAiProfiles:Wt});$t=Je,yt=Ke!==null,We(Je.changes.length);const Ne=await RS({resolveCloudAuthUrl:d,workspaceId:s,payload:Je,ensureCloudWorkspaceReadyForSync:m,repairMode:Ke?.repairMode??Ge});if(!Ne.success){if(Ne.status===401)return le.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."),ft("error"),it(Pt),Et(Pt),ht(new Date().toISOString()),D(s,{eventType:"push",status:"error",statusCode:Ne.status,errorMessage:Pt,requestMs:Ne.requestMs,details:{payloadDiagnostics:Je.deltaDiagnostics||null,replayedPayload:yt}}),Ee.current=E,Ne.transient||Bs(Ne.status)?(le.current={signature:E,payload:Je,forceAllAiProfiles:Ke?.forceAllAiProfiles??Wt,repairMode:Ke?.repairMode??Ge},v(Ne.retryAfterMs)):(le.current=null,o==="active"&&x({phase:"error",lastErrorMessage:Pt})),!1}le.current=null,Ie.current=E,je.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),F.current=new Set(Ne.currentInitiativeIds),Q.current=new Map(Ne.currentInitiativeWatermarks),M.current=new Set(Ne.currentWorkstreamIds),$.current=new Map(Ne.currentWorkstreamWatermarks),be.current=new Set(Ne.currentAiProfileIds),H.current=new Map(Ne.currentAiProfileWatermarks),ce.current=Ne.currentAiProfileChangeKeys?new Map(Ne.currentAiProfileChangeKeys):new Map(ce.current),he.current=new Set(Ne.currentDocumentPaths),G.current=new Map(Ne.currentDocumentWatermarks),re.current=new Set(Ne.currentAssetPaths),ue.current=new Map(Ne.currentAssetWatermarks),Re.current=new Set(Ne.currentDocumentReviewSessionIds),Te.current=new Map(Ne.currentDocumentReviewSessionWatermarks),De.current=new Set(Ne.currentDocumentReviewCommentIds),Oe.current=new Map(Ne.currentDocumentReviewCommentWatermarks),vt.current=new Set(Ne.currentAnnotatedAttachmentSessionIds),st.current=new Map(Ne.currentAnnotatedAttachmentSessionWatermarks),kt.current=new Map(Ne.currentTaskEventWatermarks),Wt&&(Me.current=!1);for(const[Pt,Ft]of Ne.pushedWatermarks)b.current.set(Pt,Ft);for(const[Pt,Ft]of Ne.pushedTaskChangeKeys||new Map)R.current.set(Pt,Ft);if(Ne.deleteTaskIds.size>0)for(const Pt of Ne.deleteTaskIds)Pe.current.delete(Pt),K.current.delete(Pt),b.current.delete(Pt),R.current.delete(Pt);const zt=await C();if(Ye.current=zt?null:"storage-write-failed",Array.isArray(Ne.emittedEventIds)&&Ne.emittedEventIds.length>0&&fe(Ne.emittedEventIds,{queueRef:ee,maxQueueSize:2048}),Array.isArray(Ne.appliedTaskUpserts)&&Ne.appliedTaskUpserts.length>0){const Pt=await Op(s,Ne.appliedTaskUpserts.map(Ft=>({op:"upsert",archived:Ft.archived===!0,task:Ft.task})));if(Pt.ok){for(const Ft of Ne.appliedTaskUpserts){const Lt=String(Ft?.task?.id||"").trim(),Ht=String(Ft?.task?.updatedAt||Ft?.task?.createdAt||"").trim();!Lt||!Ht||b.current.set(Lt,Ht)}try{await ke()}catch{Ga("push_local_task_refresh_failed",{workspaceId:s,taskCount:Ne.appliedTaskUpserts.length})}}else Ga("push_local_task_apply_failed",{workspaceId:s,taskCount:Ne.appliedTaskUpserts.length,status:Pt.status,failures:Pt.failures})}S(),h();const Jt=Ne.syncedAt||new Date().toISOString();return Ie.current=P(),Dt(Jt),We(0),ft("idle"),x({phase:"active",lastPushAt:Jt,lastSyncedAt:Jt,lastErrorMessage:null}),D(s,{eventType:o==="provision-local"?"bootstrap":"push",status:"success",changeCount:Ne.changeCount,requestMs:Ne.requestMs,details:{payloadDiagnostics:Je.deltaDiagnostics||null,replayedPayload:yt}}),!0}catch(c){const J="Workspace sync push failed.";return ft("error"),it(J),Et(J),ht(new Date().toISOString()),Ee.current=E,$t&&(le.current={signature:E,payload:$t,forceAllAiProfiles:Wt,repairMode:Ge}),v(),D(s,{eventType:"push",status:"error",errorMessage:`${J} ${String(c?.message||"").trim()}`.trim(),details:{replayedPayload:yt}}),Ga("push_failed_exception",{workspaceId:s,elapsedMs:Date.now()-jt}),!1}finally{xe.current=!1,ze(oe.current),L(s);const c=Ee.current,J=P();c&&J&&J!==Ie.current&&!oe.current&&!g()&&(Ee.current="",window.setTimeout(()=>{Ze(J)},120))}},St=async ot=>{let te=Gp({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:a,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:l,repairModeActive:q.current===!0,repairModeBypass:ot?.repairMode===!0,retryPending:g(),pullInFlight:oe.current,pushInFlight:xe.current});if(!te.allowed&&te.reason==="auth-required"){if(!await i())return!1;te=Gp({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:a,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:!0,repairModeActive:q.current===!0,repairModeBypass:ot?.repairMode===!0,retryPending:g(),pullInFlight:oe.current,pushInFlight:xe.current})}if(!te.allowed)return!1;if(!await U(s,"pull"))return X("pull"),!1;oe.current=!0,ze(!0),ft("syncing"),it(null);const Ct=Date.now();try{if(!await y())return!1;const Wt=Ow({workspaceSyncPhase:o,forceCursorNull:ot?.forceCursorNull===!0,currentCursor:A.current}),Ge=await jS({resolveCloudAuthUrl:d,workspaceId:s,cursor:Wt.cursor,bootstrap:Wt.bootstrap,ensureCloudWorkspaceReadyForSync:m,maxPages:20,repairMode:ot?.repairMode===!0||q.current===!0,onPagePulled:()=>{Rt.current=Date.now()},onChangesApplied:()=>{Rt.current=Date.now()}});if(!Ge.success){if(Ge.kind==="pull_http"&&Ge.status===401)return await k("pull",401),!1;if(Ge.kind==="apply_auth")return await k("apply",401),!1;if(Ge.kind==="pull_http"&&Ge.errorCode==="INVALID_SYNC_CURSOR"){const we="Saved sync cursor was invalid. Clearing it and retrying from the beginning.";return A.current=null,x({pullCursor:null}),ft("error"),it(we),Et(we),ht(new Date().toISOString()),D(s,{eventType:"pull",status:"error",statusCode:Ge.status,errorMessage:we,requestMs:Ge.pullRequestMs,details:{recovery:"cursor-reset",...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),v(150),!1}let J=Ge.kind==="apply_payload"||Ge.kind==="apply_all_candidates"||Ge.kind==="exception"?String(Ge.error||"Workspace sync apply failed."):`Workspace sync pull failed (${Ge.status||0})`;return Ge.status===413&&(J="Local sync failed because the downloaded payload is too large. This usually happens when the workspace contains massive attachments."),ft("error"),it(J),Et(J),ht(new Date().toISOString()),D(s,{eventType:Ge.kind?.startsWith("apply")?"apply":"pull",status:"error",statusCode:Ge.status,errorMessage:J,requestMs:Ge.pullRequestMs,details:{pages:Ge.pages,applyMs:Ge.applyMs,...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),Ge.transient||Ge.hasTransientApplyFailure||Bs(Ge.status)?v(Ge.retryAfterMs):x({phase:"error",lastErrorMessage:J}),!1}Array.isArray(Ge.emittedEventIds)&&fe(Ge.emittedEventIds,{ttlMs:6e4}),Ge.pulledDeleteTaskIds.size>0&&(tt(J=>J.filter(we=>!Ge.pulledDeleteTaskIds.has(String(we.id||"")))),Fe(J=>J.filter(we=>!Ge.pulledDeleteTaskIds.has(String(we.id||"")))));const $t=Array.isArray(Ge.documentDecryptFailures)?Ge.documentDecryptFailures.filter(J=>String(J||"").trim().length>0):[];if($t.length>0&&Ga("pull_document_decrypt_failures",{workspaceId:s,failureCount:$t.length}),A.current=Ge.cursor||null,Ge.appliedChanges>0&&(Ge.pulledActiveUpserts||Ge.pulledArchivedUpserts||Ge.pulledTaskEventUpserts||Ge.pulledPlanningUpserts))try{await ke()}catch{Ga("pull_local_refresh_failed",{workspaceId:s,appliedChanges:Ge.appliedChanges})}S(),h();const yt=Ge.syncedAt||new Date().toISOString();Ot(yt),We(0),ft("idle");const E=$w({workspaceSyncPhase:o,forceCursorNull:ot?.forceCursorNull===!0,startupFullReconcileRan:dt.current,pendingSignature:Ee.current,fallbackSignature:P(),lastPushedSignature:Ie.current});if(E.shouldCaptureAttachBootstrapBaseline&&(_t.current=!0),E.shouldClearPendingSignature&&(Ee.current="",le.current=null),await I({phase:"active",pullCursor:A.current,lastPullAt:yt,lastSyncedAt:yt,...ot?.forceCursorNull===!0?{startupFullReconcileCompletedAt:yt}:{},lastErrorMessage:null}),D(s,{eventType:E.successEventType,status:"success",changeCount:Ge.appliedChanges,requestMs:Ge.pullRequestMs,details:{pages:Ge.pages,applyMs:Ge.applyMs,...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),E.shouldRefreshReferenceSnapshots&&(await me(),await ae(),await _(),await de()),E.shouldSeedWorkspaceSnapshotPushBaseline&&z(),E.shouldRefreshReferenceSnapshots||E.shouldSeedWorkspaceSnapshotPushBaseline)return!0;if(E.shouldScheduleStartupFullReconcile&&(dt.current=!0,window.setTimeout(()=>{Qe.current||(Qe.current=!0,St({forceCursorNull:!0}).finally(()=>{Qe.current=!1}))},250)),ot?.forceCursorNull===!0&&ot?.repairMode!==!0&&o==="active"){const J=P();J&&(Me.current=!0,Ee.current=J,window.setTimeout(()=>{Ze(J,{forceAllAiProfiles:!0})},120))}else if(E.deferredPushSignature){const J=E.deferredPushSignature;window.setTimeout(()=>{Ze(J)},120)}return!0}catch(jt){const Wt=String(jt?.message||"").trim(),Ge=Wt?`Workspace sync pull failed. ${Wt}`:"Workspace sync pull failed.";return ft("error"),it(Ge),Et(Ge),ht(new Date().toISOString()),v(),D(s,{eventType:"pull",status:"error",errorMessage:Ge,requestMs:Date.now()-Ct}),Ga("pull_failed_exception",{workspaceId:s,elapsedMs:Date.now()-Ct,error:Wt||null}),!1}finally{oe.current=!1,ze(xe.current),L(s)}};return{pushWorkspaceChangesToCloud:Ze,pullWorkspaceChangesFromCloud:St}}const wh={documents:!1,aiProfiles:!1,assets:!1,documentReviewSessions:!1,annotatedAttachmentSessions:!1};function zw(e){const{currentWorkspaceId:t,cloudAuthConfigured:a,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:x,taxonomies:I,taxonomyState:C,setupState:D,globalTheme:U,locale:L,globalWeekStartsOn:X,themeUseGlobalDefault:me,setTasks:se,setArchivedTasks:ae,setAuthBlocked:O,setIsAuthenticated:_,checkAuthSession:de,setGlobalTheme:ke,setCurrentTheme:Y,setSetupState:P,setLocale:z,setGlobalWeekStartsOn:ie,fetchPlanningEntities:fe}=e,q=r.useMemo(()=>_w(C),[C]),[Me,xe]=r.useState("disconnected"),[oe,le]=r.useState(null),[Ie,Ee]=r.useState(null),[je,Pe]=r.useState(null),[K,A]=r.useState(null),[b,R]=r.useState(null),[F,Q]=r.useState(!1),[M,$]=r.useState("idle"),[be,H]=r.useState(null),[ce,he]=r.useState(!1),[G,re]=r.useState(0),[ue,Re]=r.useState([]),[Te,De]=r.useState(""),Oe=r.useRef(S||[]),vt=r.useRef(h||[]),st=r.useRef(v||[]),kt=r.useRef(x||[]),Ye=r.useRef([]),_t=r.useRef(new Set),[dt,Qe]=r.useState([]),[Rt,ee]=r.useState(""),[ze,ft]=r.useState(null),[it,Et]=r.useState(null),[ht,Ot]=r.useState(0),[Dt,We]=r.useState(null),tt=r.useRef([]),[Fe,Ze]=r.useState([]),[St,ot]=r.useState(""),te=r.useRef([]),Le=r.useRef(new Set),[Ct,jt]=r.useState([]),[Wt,Ge]=r.useState(""),$t=r.useRef([]),yt=r.useRef([]),[E,c]=r.useState([]),[J,we]=r.useState(""),Ae=r.useRef([]),[Ke,Je]=r.useState(wh),[Ne,zt]=r.useState("degraded-fallback"),[Jt,Pt]=r.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),Ft=r.useRef(!1),Lt=r.useRef(null),Ht=r.useRef("missing-baseline"),rn=r.useRef(0),Vt=r.useRef(!1),Vn=r.useRef(new Set),qn=r.useRef(""),Kn=r.useRef(""),ca=r.useRef(""),ye=r.useRef(""),rt=r.useRef(""),Ce=r.useRef(""),Nt=r.useRef(!1),pt=r.useRef(null),wt=r.useRef(new Set),Cn=r.useRef([]),kn=r.useRef(null),cn=r.useRef(()=>Promise.resolve(!1)),ln=r.useRef(async()=>{}),$n=r.useRef(null),gt=r.useRef(null),rr=r.useRef("idle"),mn=r.useCallback(()=>{Lt.current!==null&&(window.clearTimeout(Lt.current),Lt.current=null)},[]),tn=r.useCallback(T=>{if(typeof window>"u")return;mn();const j=Math.max(1,Math.floor(rn.current)+1);rn.current=j;const nt=1500*2**Math.max(0,j-1),bt=Number.isFinite(Number(T))?Math.max(0,Math.floor(Number(T))):0,ve=Math.max(Math.min(12e4,nt),bt);Lt.current=window.setTimeout(()=>{Lt.current=null,ln.current({preferCloudOnFirstSync:!1})},ve)},[mn]),bn=r.useCallback(T=>{Je(j=>j[T]?j:{...j,[T]:!0})},[]),Kt=Object.values(Ke).every(Boolean),{workspaceRetryAt:vr,isWorkspaceRetryPending:Rn,workspacePushInFlightRef:Xn,workspacePullInFlightRef:jn,workspaceLastPushedSignatureRef:Zt,workspacePendingSignatureRef:Zn,workspaceLastPushedTaskIdsRef:nn,workspaceDeletedTaskIdsRef:la,workspaceDeletedTaskWatermarksRef:ya,workspacePullCursorRef:Sr,clearWorkspaceRetry:dn,scheduleWorkspaceRetry:wr,persistWorkspaceSyncPatch:qr,applyWorkspaceSyncPatchLocally:Va,readWorkspaceSyncStateSnapshot:ka,loadWorkspaceSyncState:Un,applyWorkspaceSyncStateSnapshot:br,saveWorkspaceCloudSyncSettings:da,acquireWorkspaceSyncLease:Dn,releaseWorkspaceSyncLease:Nn,forceClearWorkspaceSyncLease:xr}=fw({currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:Q,setWorkspaceSyncPhase:$,setWorkspaceSyncSetupIntent:H,setWorkspaceLastPullAt:Ee,setWorkspaceLastPushAt:Pe,setWorkspaceLastErrorMessage:R}),At=r.useCallback(T=>{(T.phase==="attach-cloud"||T.phase==="provision-local")&&(rr.current=T.phase,$n.current===null&&($n.current=Date.now()),gt.current=null),br(T)},[br]),va=r.useRef(new Map),Sa=r.useRef(new Map),ua=r.useRef(new Set),zn=r.useRef(new Map),sr=r.useRef(new Set),Pn=r.useRef(new Map),vn=r.useRef(new Set),La=r.useRef(new Map),wa=r.useRef(new Map),Sn=r.useRef(new Set),Yt=r.useRef(new Map),ba=r.useRef(new Set),Hn=r.useRef(new Map),Mn=r.useRef(new Set),Ba=r.useRef(new Map),En=r.useRef(new Set),Mr=r.useRef(new Map),an=r.useRef(new Set),un=r.useRef(new Map),ea=r.useRef(new Map),or=r.useCallback(T=>T?(nn.current=new Set(T.taskIds),va.current=T.taskWatermarks,Sa.current=T.taskChangeKeys||new Map,ua.current=new Set(Array.from(T.initiativeWatermarks.keys())),zn.current=T.initiativeWatermarks,sr.current=new Set(Array.from(T.workstreamWatermarks.keys())),Pn.current=T.workstreamWatermarks,vn.current=new Set(Array.from(T.aiProfileWatermarks.keys())),La.current=T.aiProfileWatermarks,wa.current=T.aiProfileChangeKeys||new Map,Sn.current=new Set(Array.from(T.documentWatermarks.keys())),Yt.current=T.documentWatermarks,ba.current=new Set(Array.from(T.assetWatermarks.keys())),Hn.current=T.assetWatermarks,Mn.current=new Set(Array.from(T.documentReviewSessionWatermarks.keys())),Ba.current=T.documentReviewSessionWatermarks,En.current=new Set(Array.from(T.documentReviewCommentWatermarks.keys())),Mr.current=T.documentReviewCommentWatermarks,an.current=new Set(Array.from(T.annotatedAttachmentSessionWatermarks.keys())),un.current=T.annotatedAttachmentSessionWatermarks,ea.current=T.taskEventWatermarks,Ht.current=null,!0):!1,[nn]),Er=r.useCallback(()=>({taskIds:nn.current,taskWatermarks:va.current,taskChangeKeys:Sa.current,initiativeWatermarks:zn.current,workstreamWatermarks:Pn.current,aiProfileWatermarks:La.current,aiProfileChangeKeys:wa.current,documentWatermarks:Yt.current,assetWatermarks:Hn.current,documentReviewSessionWatermarks:Ba.current,documentReviewCommentWatermarks:Mr.current,annotatedAttachmentSessionWatermarks:un.current,taskEventWatermarks:ea.current}),[]),_r=r.useRef(!1),Xt=r.useRef(!1),xa=r.useRef(!1),_a=r.useRef(""),Cr=r.useRef(!1),Ar=3e4,qa=k?3e4:15e3,Ka=Math.max(3e4,qa),ir=r.useMemo(()=>{const T=Ie?Date.parse(Ie):NaN,j=je?Date.parse(je):NaN;return Number.isFinite(T)&&Number.isFinite(j)?T>=j?Ie:je:Number.isFinite(T)?Ie:Number.isFinite(j)?je:null},[Ie,je]),ta=r.useMemo(()=>Nw({enabled:F,phase:M,busy:ce,retryAt:vr,lastErrorMessage:b}),[F,M,ce,vr,b]),Ca=ta.status,Za=ta.summary,na=ta.recommendedAction,cs=r.useCallback(T=>{const j=String(T||"").trim();if(!j)return null;const bt=kh()[j]?.updatedAt;return typeof bt=="string"&&bt.trim().length>0?bt.trim():null},[]),Yn=r.useCallback((T,j)=>{const nt=String(T||"").trim(),bt=String(j||"").trim();if(!nt||!bt)return;const ve=kh();ve[nt]={updatedAt:bt},xw(ve)},[]),Kr=r.useCallback(()=>{const T=D?.mode==="operations"?"operations":"core";return{theme:U,operatingMode:T,localization:{locale:L,weekStartsOn:X}}},[U,D?.mode,L,X]),Dr=r.useCallback(async T=>{if(!(!T||typeof T!="object")){Vt.current=!0;try{const j={},nt=Kc(T.theme);if(nt&&(ke(nt),me&&Y(nt),j.theme=nt),(T.operatingMode==="core"||T.operatingMode==="operations")&&(P(bt=>bt&&{...bt,mode:T.operatingMode}),j.setup={mode:T.operatingMode}),T.localization&&typeof T.localization=="object"){const bt={};if(typeof T.localization.locale=="string"&&T.localization.locale.trim().length>0){const ne=Lg(T.localization.locale.trim());z(ne)}const ve=String(T.localization.weekStartsOn||"").trim().toLowerCase();(ve==="sunday"||ve==="monday")&&(ie(ve),bt.weekStartsOn=ve),Object.keys(bt).length>0&&(j.schedulePreferences=bt)}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{Vt.current=!1}}},[me,ke,Y,P,z,ie]),Aa=r.useCallback(async T=>{const j=T?.preferCloudOnFirstSync!==!1;if(!a)return;if(s!=="local"||!l){mn(),rn.current=0,xe("disconnected");return}const nt=String(i||"").trim();if(!nt||nt==="anonymous"){mn(),rn.current=0,xe("disconnected");return}if(!Ft.current){xe("syncing"),le(null),Ft.current=!0;try{const bt=await NS({resolveCloudAuthUrl:m,userId:nt,preferCloudOnFirstSync:j,getLocalUpdatedAt:cs,buildLocalSettings:Kr,applyRemoteSettings:Dr});if(!bt.success){xe("error"),bt.transient?(le(bt.error||"Sync failed temporarily. Retrying automatically."),tn(bt.retryAfterMs)):(mn(),rn.current=0,le(bt.error||"Sync failed."));return}mn(),rn.current=0;const ve=String(bt.updatedAt||"").trim()||new Date().toISOString();Yn(nt,ve),xe("idle"),le(null),Vn.current.add(nt),bt.mode==="pulled"&&(qn.current="")}catch{xe("error"),le("Sync failed temporarily. Retrying automatically."),tn()}finally{Ft.current=!1}}},[a,s,l,i,m,cs,Kr,Dr,Yn,mn,tn]);r.useEffect(()=>{ln.current=Aa},[Aa]),r.useEffect(()=>()=>{mn()},[mn]);const cr=r.useCallback(()=>{R(null),A(null)},[]),Wa=r.useCallback(T=>{R(yh),A(new Date().toISOString()),xe("error"),le(yh),Ga("workspace_sync_window_contention",{workspaceId:t,operation:T})},[t]),ma=r.useCallback(async T=>{try{return await qr(T)}catch{return Va(T)}},[Va,qr]),lr=r.useCallback(T=>{ma(T).catch(()=>{})},[ma]),Zr=r.useCallback(()=>{const T={...Er(),taxonomyStateFingerprint:q},j=Sh(t,T);return ma({pushBaseline:ey(T)}).catch(()=>{}),j},[Er,t,ma,q]);r.useEffect(()=>{Kn.current="",ca.current="",ye.current="",rt.current="",Ce.current="",_a.current="",Cr.current=!1,Re([]),De(""),tt.current=[],Qe([]),ee(""),Ze([]),ot(""),$t.current=[],yt.current=[],jt([]),Ge(""),Ae.current=[],c([]),we(""),Je(wh),R(null),A(null),re(0),wt.current=new Set,Cn.current=[],va.current=new Map,Sa.current=new Map,ua.current=new Set,zn.current=new Map,sr.current=new Set,Pn.current=new Map,vn.current=new Set,La.current=new Map,wa.current=new Map,Sn.current=new Set,Yt.current=new Map,ba.current=new Set,Hn.current=new Map,Mn.current=new Set,Ba.current=new Map,En.current=new Set,Mr.current=new Map,an.current=new Set,un.current=new Map,ea.current=new Map,Xt.current=!!ka().startupFullReconcileCompletedAt,Ln.current=!1;const T=vh(t,q);or(T)||(Ht.current="missing-baseline")},[t,or,q]),r.useEffect(()=>{if(Ht.current!=="missing-baseline")return;const T=vh(t,q);if(or(T))return;const j=ty(ka().pushBaseline,q);or(j)&&Sh(t,{...Er(),taxonomyStateFingerprint:q})},[Er,t,or,ka,q,F,M]),r.useEffect(()=>{Xt.current=!!ka().startupFullReconcileCompletedAt},[t,ka,Ie,M]);const ls=r.useCallback(T=>{wr(()=>cn.current(),{minDelayMs:T})},[wr]);r.useEffect(()=>{Iw({workspaceSyncPhase:M,lastBootstrapPhaseRef:rr,bootstrapPhaseStartedAtRef:$n,bootstrapLastProgressAtRef:gt})},[M]),r.useEffect(()=>Tw({currentWorkspaceId:t,workspaceCloudSyncEnabled:F,workspaceSyncPhase:M,workspacePullInFlightRef:jn,workspacePushInFlightRef:Xn,bootstrapPhaseStartedAtRef:$n,bootstrapLastProgressAtRef:gt,setWorkspaceLastErrorMessage:T=>R(T),setWorkspaceLastErrorAt:T=>A(T),setUserGlobalSyncStatus:xe,setUserGlobalSyncError:T=>le(T),setWorkspaceSyncBusy:he,persistWorkspaceSyncPatchSafely:lr}),[t,F,M,lr,jn,Xn]);const et=r.useCallback(async()=>IS({cloudAuthConfigured:a,runtimeMode:s,isAuthenticated:l,resolveCloudAuthUrl:m,workspaceId:t,workspaceName:d||t,allowProvisionOnMismatch:M!=="attach-cloud"}),[a,s,l,m,t,d,M]);r.useEffect(()=>{Oe.current=S||[]},[S]),r.useEffect(()=>{vt.current=h||[]},[h]),r.useEffect(()=>{la.current=new Set((g||[]).map(T=>String(T?.taskId||"").trim()).filter(T=>T.length>0)),ya.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,la,ya]),r.useEffect(()=>{st.current=v||[]},[v]),r.useEffect(()=>{kt.current=x||[]},[x]);const Bt=r.useRef(!1),Ln=r.useRef(!1),An=r.useCallback(T=>{const j=T?.forceAllAiProfiles===!0;return ew({tasks:Oe.current,archivedTasks:vt.current,taskEvents:Wu(Oe.current,vt.current,st.current,kt.current),lastPushedTaskIds:nn.current,pendingDeletedTaskIds:la.current,pendingDeletedTaskWatermarks:ya.current,initiatives:st.current,workstreams:kt.current,taxonomies:I||[],taxonomyState:C,lastPushedInitiativeIds:ua.current,lastPushedInitiativeWatermarks:zn.current,lastPushedWorkstreamIds:sr.current,lastPushedWorkstreamWatermarks:Pn.current,aiProfiles:tt.current,lastPushedAiProfileIds:j?new Set:vn.current,lastPushedAiProfileWatermarks:j?new Map:La.current,lastPushedAiProfileChangeKeys:j?new Map:wa.current,documents:Ye.current,assets:te.current,currentDocumentPaths:_t.current,currentAssetPaths:Le.current,documentReviewSessions:$t.current,documentReviewComments:yt.current,annotatedAttachmentSessions:Ae.current,lastPushedDocumentPaths:Sn.current,lastPushedDocumentWatermarks:Yt.current,lastPushedAssetPaths:ba.current,lastPushedAssetWatermarks:Hn.current,lastPushedDocumentReviewSessionIds:Mn.current,lastPushedDocumentReviewSessionWatermarks:Ba.current,lastPushedDocumentReviewCommentIds:En.current,lastPushedDocumentReviewCommentWatermarks:Mr.current,lastPushedAnnotatedAttachmentSessionIds:an.current,lastPushedAnnotatedAttachmentSessionWatermarks:un.current,lastPushedTaskEventWatermarks:ea.current,baselineResetReason:Ht.current,lastPushedWatermarks:va.current,lastPushedTaskChangeKeys:Sa.current})},[I,C]),wn=r.useCallback((T,j)=>{if(s==="local")try{const nt={...j,workspaceId:T,details:Im(j.details)};fetch("/api/taskforce/sync/events",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(nt)}).catch(bt=>{Ga("sync_event_post_failed",{workspaceId:T,eventType:j.eventType,status:j.status,error:String(bt?.message||bt||"")})})}catch(nt){Ga("sync_event_post_failed",{workspaceId:T,eventType:j.eventType,status:j.status,error:String(nt?.message||nt||"")})}},[s]),Ia=r.useCallback(()=>tw({workspaceId:t,tasks:Oe.current,archivedTasks:vt.current,taskEvents:Wu(Oe.current,vt.current,st.current,kt.current),pendingDeletedTaskIds:la.current,initiatives:st.current,workstreams:kt.current,taxonomies:I||[],aiProfiles:tt.current,documents:Ye.current,assets:te.current,documentReviewSessions:$t.current,documentReviewComments:yt.current,annotatedAttachmentSessions:Ae.current}),[t,I,C]),Ya=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:(x||[]).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||[],x||[]).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(I)?I:[],taxonomyState:C&&typeof C=="object"?C:null}),[S,h,g,v,x,I,C]),ds=r.useMemo(()=>{const T=[];for(const j of S||[]){const nt=Array.isArray(j.attachments)?j.attachments.length:0;nt>0&&T.push(`${j.id}:${nt}`)}return T.join("|")},[S]),Fa=r.useCallback(T=>{if(!T)return!1;if(Cr.current)return Cr.current=!1,_a.current=T,Zt.current=T,re(0),!0;const j=_a.current;return j?T===j?(Zt.current=T,re(0),!0):(_a.current="",!1):!1},[]),Oa=r.useCallback(async()=>{if(s==="local"&&oi(t)&&!(a&&(!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(()=>({})),nt=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):[],bt=new Set(Array.isArray(j?.knownPaths)?j.knownPaths.map(ne=>String(ne||"").trim()).filter(ne=>ne.length>0):nt.map(ne=>ne.path)),ve=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify(nt.map(ne=>`${ne.path}:${ne.updatedAt}:${ne.content.length}`).sort());if(ve===Kn.current)return;Kn.current=ve,Ye.current=nt,_t.current=bt,Re(nt),De(ve)}catch(T){Ga("documents_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}finally{bn("documents")}},[s,t,a,o,l,bn]),Ta=r.useCallback(async()=>{if(s!=="local"){We("runtime-not-local");return}if(!oi(t)){We("workspace-id-invalid");return}if(a&&(!o||!l)){We(o?"auth-required":"auth-unresolved");return}We(null);try{const T=await fetch(`/api/taskforce/sync/workspace/ai-profiles?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!T.ok){Et(`HTTP ${T.status}`),ft(new Date().toISOString());return}const j=await T.json().catch(()=>({})),nt=Array.isArray(j?.aiProfiles)?j.aiProfiles:[];Ot(nt.length);const bt=Array.isArray(j?.aiProfiles)?j.aiProfiles.map(ne=>bw(ne)).filter(ne=>ne.id.length>0&&ne.workspaceId.length>0):[];Et(null),ft(new Date().toISOString());const ve=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify(bt.map(ne=>[ne.id,ne.updatedAt,ne.name,ne.username,ne.archivedAt??"",ne.archivedReason??"",ne.mergedIntoProfileId??"",ne.rosterStateUpdatedAt??""].join(":")).sort());if(ve===ca.current)return;ca.current=ve,tt.current=bt,Qe(bt),ee(ve)}catch(T){Et(String(T?.message||T||"unknown-error")),ft(new Date().toISOString()),Ga("ai_profiles_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}finally{bn("aiProfiles")}},[s,t,a,o,l,bn]),Gt=r.useCallback(async()=>{if(s==="local"&&oi(t)&&!(a&&(!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(()=>({})),nt=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):[],bt=new Set(Array.isArray(j?.knownPaths)?j.knownPaths.map(ne=>String(ne||"").trim()).filter(ne=>ne.length>0):nt.map(ne=>ne.path)),ve=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify(nt.map(ne=>`${ne.path}:${ne.updatedAt}:${ne.contentBase64.length}`).sort());if(ve===ye.current)return;ye.current=ve,te.current=nt,Le.current=bt,Ze(nt),ot(ve)}catch(T){Ga("assets_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}finally{bn("assets")}},[s,t,a,o,l,bn]),$a=r.useCallback(async()=>{if(s==="local"&&oi(t)&&!(a&&(!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(()=>({})),nt=Array.isArray(j?.initiatives)?j.initiatives.filter(ve=>!!(ve&&typeof ve=="object"&&typeof ve.id=="string")):[],bt=Array.isArray(j?.workstreams)?j.workstreams.filter(ve=>!!(ve&&typeof ve=="object"&&typeof ve.id=="string")):[];st.current=nt,kt.current=bt}catch(T){Ga("planning_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}},[s,t,a,o,l]),pa=r.useCallback(async()=>{if(s==="local"&&oi(t)&&!(a&&(!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(()=>({})),nt=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):[],bt=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):Cw(nt),ve=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify([...nt.map(ne=>`${ne.id}:${ne.updatedAt}:${ne.status}:${ne.deletedAt||""}:${ne.comments.length}`).sort(),...bt.map(ne=>`${ne.id}:${ne.sessionId}:${ne.updatedAt}:${ne.deletedAt||""}`).sort()]);if(ve===rt.current)return;rt.current=ve,$t.current=nt,yt.current=bt,jt(nt),Ge(ve)}catch(T){Ga("document_review_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}finally{bn("documentReviewSessions")}},[s,t,a,o,l,bn]),Bn=r.useCallback(async()=>{if(s==="local"&&oi(t)&&!(a&&(!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(()=>({})),nt=Array.isArray(j?.sessions)?j.sessions.map(ve=>({id:String(ve?.id||"").trim(),workspaceId:String(ve?.workspaceId||"").trim(),taskId:String(ve?.taskId||"").trim(),baseImageAssetId:String(ve?.baseImageAssetId||"").trim(),title:typeof ve?.title=="string"&&ve.title.trim().length>0?ve.title.trim():null,globalInstruction:typeof ve?.globalInstruction=="string"&&ve.globalInstruction.trim().length>0?ve.globalInstruction.trim():null,annotations:Array.isArray(ve?.annotations)?ve.annotations:[],createdByActorId:typeof ve?.createdByActorId=="string"&&ve.createdByActorId.trim().length>0?ve.createdByActorId.trim():null,updatedByActorId:typeof ve?.updatedByActorId=="string"&&ve.updatedByActorId.trim().length>0?ve.updatedByActorId.trim():null,createdAt:String(ve?.createdAt||"").trim(),updatedAt:String(ve?.updatedAt||ve?.createdAt||"").trim(),deletedAt:typeof ve?.deletedAt=="string"&&ve.deletedAt.trim().length>0?ve.deletedAt.trim():null})).filter(ve=>ve.id.length>0&&ve.workspaceId.length>0&&ve.taskId.length>0&&ve.baseImageAssetId.length>0):[],bt=typeof j?.fingerprint=="string"?j.fingerprint:JSON.stringify(nt.map(ve=>`${ve.id}:${ve.updatedAt}:${ve.taskId}:${ve.baseImageAssetId}:${ve.annotations.length}:${ve.deletedAt||""}`).sort());if(bt===Ce.current)return;Ce.current=bt,Ae.current=nt,c(nt),we(bt)}catch(T){Ga("annotated_attachment_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(T?.message||T||"")})}finally{bn("annotatedAttachmentSessions")}},[s,t,a,o,l,bn]),Lr=r.useCallback(()=>{nn.current=new Set([...Oe.current,...vt.current].map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),va.current=new Map([...Oe.current,...vt.current].map(j=>[String(j?.id||"").trim(),_s.getWatermark(j)]).filter(([j])=>j.length>0)),Sa.current=new Map([...Oe.current.map(j=>[String(j?.id||"").trim(),_s.getChangeKey({...j,isArchived:!1})]),...vt.current.map(j=>[String(j?.id||"").trim(),_s.getChangeKey({...j,isArchived:!0})])].filter(([j])=>j.length>0)),ua.current=new Set(st.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),zn.current=new Map(st.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),sr.current=new Set(kt.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),Pn.current=new Map(kt.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),vn.current=new Set(tt.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),La.current=new Map(tt.current.map(j=>[String(j?.id||"").trim(),md.getWatermark(j)]).filter(([j])=>j.length>0)),wa.current=new Map(tt.current.map(j=>[String(j?.id||"").trim(),md.getChangeKey(j)]).filter(([j])=>j.length>0)),Sn.current=new Set(Ye.current.map(j=>String(j?.path||"").trim()).filter(j=>j.length>0)),Yt.current=new Map(Ye.current.map(j=>[String(j?.path||"").trim(),String(j?.updatedAt||"").trim()]).filter(([j])=>j.length>0)),ba.current=new Set(te.current.map(j=>String(j?.path||"").trim()).filter(j=>j.length>0)),Hn.current=new Map(te.current.map(j=>[String(j?.path||"").trim(),String(j?.updatedAt||"").trim()]).filter(([j])=>j.length>0)),Mn.current=new Set($t.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),Ba.current=new Map($t.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),En.current=new Set(yt.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),Mr.current=new Map(yt.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),an.current=new Set(Ae.current.map(j=>String(j?.id||"").trim()).filter(j=>j.length>0)),un.current=new Map(Ae.current.map(j=>[String(j?.id||"").trim(),String(j?.updatedAt||j?.createdAt||"").trim()]).filter(([j])=>j.length>0)),ea.current=new Map(Wu(Oe.current,vt.current,st.current,kt.current).map(j=>[String(j?.id||"").trim(),String(j?.createdAt||"").trim()]).filter(([j])=>j.length>0));const T=Zr();Ht.current=T?null:"storage-write-failed"},[Zr]),Br=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 nt=await T.json().catch(()=>({})),bt=Array.isArray(nt?.tasks)?nt.tasks.map(ve=>Do(ve)):[];se(bt)}if(j.ok){const nt=await j.json().catch(()=>({})),bt=Array.isArray(nt?.archived)?nt.archived.map(ve=>({...Do(ve),isArchived:!0})):[];ae(bt)}await fe().catch(()=>{Ga("refresh_planning_entities_failed",{workspaceId:t})})},[t,fe,ae,se]),{handleSyncAuthFailure:dr,ensureWorkspaceSyncReady:ur}=r.useMemo(()=>Aw({currentWorkspaceId:t,workspaceSyncPhase:M,clearWorkspaceRetry:dn,setWorkspaceSyncBusy:he,setUserGlobalSyncStatus:xe,setUserGlobalSyncError:T=>le(T),setWorkspaceLastErrorMessage:T=>R(T),setWorkspaceLastErrorAt:T=>A(T),reportSyncEvent:wn,setAuthBlocked:O,setIsAuthenticated:_,checkAuthSession:de,ensureCloudWorkspaceReadyForSync:et,scheduleWorkspaceSyncRetry:ls,persistWorkspaceSyncPatchSafely:lr}),[t,M,dn,wn,O,_,de,et,ls,lr]),Fs=r.useMemo(()=>Uw({cloudAuthConfigured:a,runtimeMode:s,workspaceCloudSyncEnabled:F,currentWorkspaceId:t,workspaceSyncPhase:M,isAuthenticated:l,checkAuthSession:de,resolveCloudAuthUrl:m,ensureCloudWorkspaceReadyForSync:et,ensureWorkspaceSyncReady:ur,handleSyncAuthFailure:dr,clearWorkspaceRetry:dn,clearWorkspaceIssue:cr,isWorkspaceRetryPending:Rn,scheduleWorkspaceSyncRetry:ls,persistWorkspaceSyncPatchSafely:lr,persistWorkspaceSyncPatchBestEffort:ma,persistWorkspaceSyncWatermarksSnapshotBestEffort:Zr,reportSyncEvent:wn,acquireWorkspaceSyncLease:Dn,releaseWorkspaceSyncLease:Nn,reportWorkspaceWindowContention:Wa,refreshWorkspaceSyncMarkdownDocumentsSnapshot:Oa,refreshWorkspaceSyncAiProfilesSnapshot:Ta,refreshWorkspaceSyncAssetsSnapshot:Gt,refreshWorkspaceSyncPlanningEntitiesSnapshot:$a,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:pa,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:Bn,refreshLocalWorkspaceTaskCollections:Br,buildWorkspaceSyncPayload:An,buildWorkspaceSyncSignature:Ia,seedWorkspaceSnapshotPushBaseline:Lr,shouldSuppressAttachBootstrapPush:Fa,recordSuppressedEventIds:(...T)=>so.current.recordSuppressedEventIds(...T),workspaceRepairModeRef:xa,workspaceForceFullAiProfilePushRef:Bt,workspacePushInFlightRef:Xn,workspacePullInFlightRef:jn,workspacePendingPushReplayRef:kn,workspaceLastPushedSignatureRef:Zt,workspacePendingSignatureRef:Zn,workspaceLastPushedTaskIdsRef:nn,workspaceDeletedTaskIdsRef:la,workspaceDeletedTaskWatermarksRef:ya,workspacePullCursorRef:Sr,workspaceLastPushedWatermarksRef:va,workspaceLastPushedTaskChangeKeysRef:Sa,workspaceLastPushedInitiativeIdsRef:ua,workspaceLastPushedInitiativeWatermarksRef:zn,workspaceLastPushedWorkstreamIdsRef:sr,workspaceLastPushedWorkstreamWatermarksRef:Pn,workspaceLastPushedAiProfileIdsRef:vn,workspaceLastPushedAiProfileWatermarksRef:La,workspaceLastPushedAiProfileChangeKeysRef:wa,workspaceLastPushedDocumentPathsRef:Sn,workspaceLastPushedDocumentWatermarksRef:Yt,workspaceLastPushedAssetPathsRef:ba,workspaceLastPushedAssetWatermarksRef:Hn,workspaceLastPushedDocumentReviewSessionIdsRef:Mn,workspaceLastPushedDocumentReviewSessionWatermarksRef:Ba,workspaceLastPushedDocumentReviewCommentIdsRef:En,workspaceLastPushedDocumentReviewCommentWatermarksRef:Mr,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:an,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:un,workspaceLastPushedTaskEventWatermarksRef:ea,workspaceBaselineResetReasonRef:Ht,workspaceCaptureAttachBootstrapBaselineRef:Cr,workspaceStartupFullReconcileRanRef:Xt,workspaceFullReconcileInFlightRef:Ln,bootstrapLastProgressAtRef:gt,realtimeSuppressedEventQueueRef:Cn,setWorkspaceSyncBusy:he,setUserGlobalSyncStatus:xe,setUserGlobalSyncError:le,setWorkspaceLastErrorMessage:R,setWorkspaceLastErrorAt:A,setWorkspaceLastPullAt:Ee,setWorkspaceLastPushAt:Pe,setWorkspaceSyncPendingChanges:re,setTasks:se,setArchivedTasks:ae}),[a,s,F,t,M,q,l,de,m,et,ur,dr,dn,cr,ls,lr,ma,Zr,wn,Dn,Nn,Wa,Oa,Ta,Gt,$a,pa,Bn,Br,An,Ia,Lr,Fa,se,ae]),{pushWorkspaceChangesToCloud:ra,pullWorkspaceChangesFromCloud:fa}=Fs,so=r.useRef({handleRealtimeSignal:()=>{},recordSuppressedEventIds:()=>{},clearRealtimePullDebounce:()=>{}}),Wr=r.useMemo(()=>Bw({cloudAuthConfigured:a,runtimeMode:s,workspaceCloudSyncEnabled:F,workspaceSyncPhase:M,workspacePullInFlightRef:jn,realtimePullDebounceRef:pt,realtimeSuppressedEventIdsRef:wt,clearWorkspaceRetry:dn,isWorkspaceRetryPending:Rn,pullWorkspaceChangesFromCloud:fa}),[a,s,F,M,dn,Rn,fa]);so.current=Wr;const mr=y("/taskforce-ws"),W=String(i||"").trim(),It=Jg({enabled:!!(k&&a&&s==="local"&&F&&o&&l&&W&&W!=="anonymous"&&mr),workspaceId:t,websocketUrl:mr,onSignal:Wr.handleRealtimeSignal,onTelemetry:Pt,userId:W||void 0});r.useEffect(()=>{zt(It.connectionState)},[It.connectionState]),r.useEffect(()=>()=>Wr.clearRealtimePullDebounce(),[Wr]);const Mt=r.useCallback(async T=>da(T,{cloudAuthConfigured:a,isAuthenticated:l,ensureCloudWorkspaceReadyForSync:et}),[da,a,l,et]),Gn=r.useCallback(async()=>{await Aa({preferCloudOnFirstSync:!1})},[Aa]),Ja=r.useMemo(()=>Fw({currentWorkspaceId:t,workspaceCloudSyncEnabled:F,workspaceSyncPhase:M,workspaceLastPullAt:Ie,lastBootstrapPhaseRef:rr,workspaceRepairModeRef:xa,workspaceForceFullAiProfilePushRef:Bt,workspaceStartupRepairRanRef:_r,workspaceStartupFullReconcileRanRef:Xt,workspaceFullReconcileInFlightRef:Ln,workspacePullCursorRef:Sr,workspaceAttachBootstrapBaselineSignatureRef:_a,workspaceCaptureAttachBootstrapBaselineRef:Cr,workspacePendingSignatureRef:Zn,workspaceLastPushedSignatureRef:Zt,workspaceLastPushedWatermarksRef:va,workspaceLastPushedTaskChangeKeysRef:Sa,workspaceLastPushedInitiativeIdsRef:ua,workspaceLastPushedInitiativeWatermarksRef:zn,workspaceLastPushedWorkstreamIdsRef:sr,workspaceLastPushedWorkstreamWatermarksRef:Pn,workspaceLastPushedAiProfileIdsRef:vn,workspaceLastPushedAiProfileWatermarksRef:La,workspaceLastPushedAiProfileChangeKeysRef:wa,workspaceLastPushedDocumentPathsRef:Sn,workspaceLastPushedDocumentWatermarksRef:Yt,workspaceLastPushedAssetPathsRef:ba,workspaceLastPushedAssetWatermarksRef:Hn,workspaceLastPushedDocumentReviewSessionIdsRef:Mn,workspaceLastPushedDocumentReviewSessionWatermarksRef:Ba,workspaceLastPushedDocumentReviewCommentIdsRef:En,workspaceLastPushedDocumentReviewCommentWatermarksRef:Mr,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:an,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:un,workspaceLastPushedTaskEventWatermarksRef:ea,workspaceBaselineResetReasonRef:Ht,bootstrapPhaseStartedAtRef:$n,bootstrapLastProgressAtRef:gt,acquireWorkspaceSyncLease:Dn,releaseWorkspaceSyncLease:Nn,forceClearWorkspaceSyncLease:xr,clearWorkspaceRetry:dn,clearWorkspaceIssue:cr,reportWorkspaceWindowContention:Wa,reportSyncEvent:wn,persistWorkspaceSyncPatch:qr,persistWorkspaceSyncWatermarksSnapshotBestEffort:Zr,buildWorkspaceSyncSignature:Ia,pullWorkspaceChangesFromCloud:fa,pushWorkspaceChangesToCloud:ra,cloudAuthConfigured:a,runtimeMode:s,isAuthenticated:l,checkAuthSession:de}),[t,q,F,M,Ie,Dn,Nn,xr,dn,cr,Wa,wn,qr,Zr,Ia,fa,ra,a,s,l,de]),{retryWorkspaceCloudSync:Yr,resetWorkspaceSyncCursorAndPull:Wn}=Ja,Fr=r.useCallback(()=>{const T=Hp({cloudAuthConfigured:a,runtimeMode:s,workspaceCloudSyncEnabled:F,currentWorkspaceId:t,workspaceSyncPhase:M,isAuthenticated:l,repairModeActive:xa.current===!0,repairModeBypass:!1,pushInFlight:Xn.current,pullInFlight:jn.current}),j=Rn(),nt=Gp({cloudAuthConfigured:a,runtimeMode:s,workspaceCloudSyncEnabled:F,currentWorkspaceId:t,workspaceSyncPhase:M,isAuthenticated:l,repairModeActive:xa.current===!0,repairModeBypass:!1,retryPending:j,pushInFlight:Xn.current,pullInFlight:jn.current}),bt=Vp({cloudAuthConfigured:a,runtimeMode:s,workspaceCloudSyncEnabled:F,currentWorkspaceId:t,isAuthenticated:l});return{workspaceId:t,enabled:F,phase:M,status:Ca,summary:Za,lastSuccessfulSyncAt:ir,lastPullAt:Ie,lastPushAt:je,lastErrorAt:K,pendingChanges:G,lastErrorMessage:b,recommendedAction:na,pushBlockedReason:T.allowed?null:T.reason,pullBlockedReason:nt.allowed?null:nt.reason,retryBlockedReason:bt.allowed?null:bt.reason,repairActive:xa.current===!0,pushInFlight:Xn.current===!0,pullInFlight:jn.current===!0,retryPending:j,documentSnapshotCount:ue.length,aiProfileSnapshotCount:dt.length,aiProfileSnapshotRawCount:ht,aiProfileSnapshotLastFetchAt:ze,aiProfileSnapshotLastFetchError:it,aiProfileSnapshotLastSkipReason:Dt,assetSnapshotCount:Fe.length,documentReviewSessionSnapshotCount:Ct.length,documentReviewSessionSnapshotFingerprint:Wt,annotatedAttachmentSessionSnapshotCount:E.length,annotatedAttachmentSessionSnapshotFingerprint:J,lastPushedAiProfileCount:vn.current.size,lastPushedAiProfileWatermarkCount:La.current.size,forceFullAiProfilePushQueued:Bt.current===!0}},[a,t,s,F,M,l,Ca,Za,ir,Ie,je,K,G,b,na,ue.length,dt.length,ht,ze,it,Dt,Fe.length,Ct.length,Wt,E.length,J,Rn]);r.useEffect(()=>{cn.current=Yr},[Yr]);const Fn=r.useCallback(()=>{Oa(),Gt()},[Oa,Gt]);return r.useEffect(()=>{if(!a||s!=="local"||!F||!o||!l)return;Oa(),Ta(),Gt(),pa(),Bn();const T=ja=>{const ha=ja.detail;(String(ha?.workspaceId||"").trim()||"default")===t&&Fn()},j=ja=>{const ha=ja.detail;(String(ha?.workspaceId||"").trim()||"default")===t&&(Ta(),Gt())};window.addEventListener(Up,T),window.addEventListener(zp,j);const nt=window.setInterval(()=>{Oa()},Ar),bt=window.setInterval(()=>{Ta()},Ar),ve=window.setInterval(()=>{Gt()},Ar),ne=window.setInterval(()=>{pa()},Ar),Ra=window.setInterval(()=>{Bn()},Ar);return()=>{window.removeEventListener(Up,T),window.removeEventListener(zp,j),window.clearInterval(nt),window.clearInterval(bt),window.clearInterval(ve),window.clearInterval(ne),window.clearInterval(Ra)}},[a,s,F,o,l,t,Fn,Oa,Ta,Gt,pa,Bn,Ar]),r.useEffect(()=>{!a||s!=="local"||!F||!o||!l||ds&&Fn()},[a,s,F,o,l,ds,Fn]),r.useEffect(()=>{if(!Pw({cloudAuthConfigured:a,runtimeMode:s,workspaceCloudSyncEnabled:F,authSessionResolved:o,workspaceSyncPhase:M,workspaceSyncReferenceSnapshotsReady:Kt}))return;const T=Ia();if(Fa(T)||!T||T===Zt.current)return;const j=An();if(re(j.changes.length),Xn.current||jn.current){Zn.current=T;return}const nt=window.setTimeout(()=>{ra(T)},1500);return()=>window.clearTimeout(nt)},[a,s,F,o,M,Kt,Ia,Fa,An,Ya,Rt,Te,St,Wt,J,ra,Xn,jn]),r.useEffect(()=>{if(!Mw({cloudAuthConfigured:a,runtimeMode:s,workspaceCloudSyncEnabled:F,authSessionResolved:o,workspaceSyncPhase:M,workspaceSyncReferenceSnapshotsReady:Kt}))return;const T=window.setInterval(()=>{if(Xn.current||jn.current||Rn())return;const j=Zn.current||Ia();if(!j||j===Zt.current)return;const nt=An();re(nt.changes.length),nt.changes.length!==0&&ra(j)},Ka);return()=>window.clearInterval(T)},[a,s,F,o,M,Kt,Ia,An,ra,Rn,Ka]),r.useEffect(()=>{a&&s==="local"&&F||(dn(),he(!1))},[a,s,F,dn]),r.useEffect(()=>{const T=Ew({cloudAuthConfigured:a,runtimeMode:s,workspaceCloudSyncEnabled:F,authSessionResolved:o,workspaceSyncPhase:M,lastPullAt:Ie,retryPending:Rn()});if(!T.shouldStart)return;T.shouldKickOffImmediately&&fa();const j=window.setInterval(()=>{fa()},qa);return()=>{window.clearInterval(j)}},[a,s,F,o,M,Ie,Rn,fa,qa]),r.useEffect(()=>{if(!Dw({cloudAuthConfigured:a,runtimeMode:s,workspaceCloudSyncEnabled:F,authSessionResolved:o,isAuthenticated:l,workspaceSyncPhase:M}))return;const T=window.setInterval(()=>{Ln.current||(Ln.current=!0,fa({forceCursorNull:!0}).finally(()=>{Ln.current=!1}))},Sw);return()=>window.clearInterval(T)},[a,s,F,o,l,M,fa]),r.useEffect(()=>{s!=="local"||!l||!i||i==="anonymous"||Aa({preferCloudOnFirstSync:!0})},[s,l,i,Aa]),r.useEffect(()=>{if(s!=="local"||!l||!i||i==="anonymous"||!Vn.current.has(i)||Vt.current)return;const T=Kr(),j=JSON.stringify(T);if(!qn.current){qn.current=j;return}if(j===qn.current)return;qn.current=j,Yn(i,new Date().toISOString());const nt=window.setTimeout(()=>{Aa({preferCloudOnFirstSync:!1})},350);return()=>window.clearTimeout(nt)},[s,l,i,Kr,Yn,Aa]),r.useEffect(()=>{Lw({cloudAuthConfigured:a,runtimeMode:s,workspaceCloudSyncEnabled:F,authSessionResolved:o,isAuthenticated:l,workspaceSyncPhase:M,alreadyRan:_r.current})&&(_r.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&&(Ga("startup_repair_applied",{workspaceId:t,applied:j.applied,skipped:j.skipped,failed:j.failed}),Oa(),Ta(),Gt(),pa())}).catch(()=>{}))},[a,s,F,o,l,M,t,Oa,Ta,Gt,pa]),{userGlobalSyncStatus:Me,setUserGlobalSyncStatus:xe,userGlobalSyncError:oe,setUserGlobalSyncError:le,workspaceLastPullAt:Ie,workspaceLastPushAt:je,workspaceLastErrorAt:K,workspaceLastErrorMessage:b,workspaceLastSuccessfulSyncAt:ir,workspaceCloudSyncEnabled:F,workspaceSyncPhase:M,workspaceSyncSetupIntent:be,workspaceSyncStatus:Ca,workspaceSyncSummary:Za,workspaceSyncRecommendedAction:na,workspaceSyncBusy:ce,workspaceSyncPendingChanges:G,syncInFlightRef:Nt,workspaceRetryAt:vr,isWorkspaceRetryPending:Rn,workspacePushInFlightRef:Xn,workspacePullInFlightRef:jn,workspaceLastPushedSignatureRef:Zt,workspacePendingSignatureRef:Zn,workspaceLastPushedTaskIdsRef:nn,workspaceDeletedTaskIdsRef:la,workspaceDeletedTaskWatermarksRef:ya,workspacePullCursorRef:Sr,clearWorkspaceRetry:dn,persistWorkspaceSyncPatch:qr,loadWorkspaceSyncState:Un,applyWorkspaceSyncStateSnapshot:At,syncUserGlobalSettings:Aa,buildWorkspaceSyncSignature:Ia,pushWorkspaceChangesToCloud:ra,pullWorkspaceChangesFromCloud:fa,saveWorkspaceCloudSyncSettings:Mt,retryUserGlobalSettingsSync:Gn,retryWorkspaceCloudSync:Yr,resetWorkspaceSyncCursorAndPull:Wn,getWorkspaceSyncDiagnostics:Fr}}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),a=r.useRef(null),s=r.useCallback(()=>{a.current!==null&&(window.clearTimeout(a.current),a.current=null),t(null)},[]),o=r.useCallback((l,i="info",d)=>{if(!l)return;a.current!==null&&(window.clearTimeout(a.current),a.current=null),t({message:l,tone:i,ttlMs:d});const m=Hw(i,d);a.current=window.setTimeout(()=>{a.current=null,t(null)},m)},[]);return r.useEffect(()=>()=>{a.current!==null&&(window.clearTimeout(a.current),a.current=null)},[]),{uiNotice:e,pushNotice:o,clearNotice:s}}function Vw({storagePath:e,shouldDeferProtectedApiCalls:t,shouldBlockProtectedApiCalls:a}){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||a;r.useEffect(()=>{const D=l.find(U=>U.id===s);D&&m(D.directory)},[s,l]);const x=r.useCallback(()=>{typeof window>"u"||(g.current!==null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{g.current=null,h(null)},5e3))},[]),I=r.useCallback(async()=>{if(v)return;const D=await fetch("/api/taskforce/environments");if(!D.ok)return;const U=await D.json().catch(()=>({}));U.environments&&i(U.environments)},[v]),C=r.useCallback(async(D,U)=>{k("workflows"),h(null);try{const X=await(await fetch("/api/taskforce/export-resources",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"workflows",environment:D,workflowNames:U,variables:{STORAGE_PATH:e.replace(/\/$/,"")||".Taskforce"}})})).json();X.success?h({type:"success",message:`Successfully exported ${X.count} workflows to ${D}`}):h({type:"error",message:X.error||"Export failed"})}catch{h({type:"error",message:"Network error exporting workflows"})}finally{k(null),x()}},[x,e]);return r.useEffect(()=>()=>{g.current!==null&&typeof window<"u"&&(window.clearTimeout(g.current),g.current=null)},[]),{exportEnvironment:s,setExportEnvironment:o,availableEnvironments:l,loadAvailableEnvironments:I,exportWorkflowsPath:d,setExportWorkflowsPath:m,exportingResource:y,exportResult:S,handleExportWorkflows:C}}function qw(e){const{resolveCloudAuthUrl:t,currentWorkspaceId:a,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:x,supportedLocales:I,jsonBackupUseGlobalDefault:C,manualComplexityEnabled:D,checklistDropdownEnabled:U,showTaskCardStatusLabel:L,exportWorkflowsPath:X,exportingResource:me,exportResult:se,pathSaved:ae,settingsSection:O,exportEnvironment:_,setupState:de,buildInfo:ke,saveSetupMode:Y,saveWorkspaceProfile:P,setCurrentTheme:z,handleSaveTheme:ie,handleSaveGlobalTheme:fe,setKeyShortcut:q,handleJsonBackupEnabledChange:Me,handleSaveGlobalJsonBackupEnabled:xe,handleSaveGlobalWeekStartsOn:oe,handleSaveLocale:le,handleManualComplexityEnabledChange:Ie,handleChecklistDropdownEnabledChange:Ee,handleShowTaskCardStatusLabelChange:je,handleResetProjectToGlobal:Pe,handleSaveSettings:K,setExportWorkflowsPath:A,setExportEnvironment:b,availableWorkflows:R,initiativeTemplates:F,availableEnvironments:Q,fetchWorkflows:M,fetchInitiativeTemplates:$,createInitiativeFromTemplate:be,fetchWorkflowTemplate:H,fetchWorkflowOverrideNames:ce,saveWorkflowTemplateDraft:he,resetWorkflowTemplateDraft:G,handleExportWorkflows:re,setShowFolderBrowser:ue,setBrowserTarget:Re,fetchFolders:Te,activeCategories:De,pathValidation:Oe,taxonomyDisplayLabels:vt,handleUpdateCategory:st,handleRemoveCategory:kt,handleSaveCategory:Ye,handleAddPath:_t,handleRemovePath:dt,handleUpdateCategoryIcon:Qe,handleUpdateCategoryColor:Rt,activeTypes:ee,handleSaveType:ze,handleRemoveType:ft,handleUpdateType:it,taxonomies:Et,handleUpdateTaxonomies:ht,priorities:Ot,handleUpdatePriorities:Dt,analyzeSystemTaxonomyPack:We,handleApplySystemTaxonomyPack:tt,handleUpdateTaxonomyDisplayLabels:Fe,projectRoot:Ze,projectName:St,mcpHostRoot:ot,serverHostRoot:te,mcpScriptPath:Le,tenantId:Ct,runtimeMode:jt,workspaceSwitchingEnabled:Wt,deleteWorkspace:Ge,setMcpHostRoot:$t,isAuthenticated:yt}=e,E=r.useCallback(async(J,we)=>{const Ae=t(J),Ke=new Headers(we?.headers||void 0);if(J.startsWith("/api/taskforce/settings/mcp/")){const Ne=String(a||"").trim();Ne&&Ne!=="default"&&!Ke.has("x-taskforce-workspace-id")&&Ke.set("x-taskforce-workspace-id",Ne)}const Je={...we,headers:Ke,credentials:we?.credentials??"include"};if(typeof window<"u"&&/^https?:\/\//i.test(Ae))try{new URL(Ae,window.location.origin).origin!==window.location.origin&&Je.mode===void 0&&(Je.mode="cors")}catch{}return fetch(Ae,Je)},[a,t]),c=i.find(J=>J.id===a);return{fetchCloudAuthApi:E,currentTheme:d,configLoaded:m,globalTheme:y,themeUseGlobalDefault:k,keyShortcut:S,jsonBackupEnabled:h,globalJsonBackupEnabled:g,globalWeekStartsOn:v,locale:x,supportedLocales:I,jsonBackupUseGlobalDefault:C,manualComplexityEnabled:D,checklistDropdownEnabled:U,showTaskCardStatusLabel:L,exportWorkflowsPath:X,exportingResource:me,exportResult:se,pathSaved:ae,initialSection:O,exportEnvironment:_,setupState:de,buildInfo:ke,onSaveSetupMode:Y,onSaveWorkspaceProfile:P,onThemeChange:z,onSaveTheme:ie,onSaveGlobalTheme:fe,onKeyShortcutChange:q,onJsonBackupEnabledChange:Me,onSaveGlobalJsonBackupEnabled:xe,onSaveGlobalWeekStartsOn:oe,onSaveLocale:le,onManualComplexityEnabledChange:Ie,onChecklistDropdownEnabledChange:Ee,onShowTaskCardStatusLabelChange:je,onResetProjectToGlobal:Pe,onSaveSettings:K,onExportWorkflowsPathChange:A,onExportEnvironmentChange:b,availableWorkflows:R,initiativeTemplates:F,availableEnvironments:Q,onRefreshWorkflows:M,onRefreshInitiativeTemplates:$,onCreateInitiativeFromTemplate:be,onFetchWorkflowTemplate:H,onFetchWorkflowOverrideNames:ce,onSaveWorkflowTemplateDraft:he,onResetWorkflowTemplateDraft:G,onExportWorkflows:re,onShowFolderBrowserChange:ue,onBrowserTargetChange:Re,onFetchFolders:Te,categories:De,pathValidation:Oe,taxonomyDisplayLabels:vt,onUpdateCategory:st,onRemoveCategory:kt,onSaveCategory:Ye,onAddPath:_t,onRemovePath:dt,onUpdateCategoryIcon:Qe,onUpdateCategoryColor:Rt,types:ee,onSaveType:ze,onRemoveType:ft,onUpdateType:it,taxonomies:Et,onUpdateTaxonomies:ht,priorities:Ot,onUpdatePriorities:Dt,onAnalyzeSystemTaxonomyPack:We,onApplySystemTaxonomyPack:tt,onUpdateTaxonomyDisplayLabels:Fe,projectRoot:Ze,projectName:St,mcpHostRoot:ot,serverHostRoot:te,mcpScriptPath:Le,tenantId:Ct,workspaceId:a,runtimeMode:jt,cloudAuthBaseUrl:s||l.cloudAuthBaseUrl,cloudMcpBaseUrl:o||void 0,workspaceSwitchingEnabled:Wt,currentWorkspaceRole:c?.role||"member",currentWorkspaceName:String(c?.name||""),onDeleteWorkspace:Ge,onMcpHostRootChange:$t,isAuthenticated:yt}}function Kw(e){const{keyShortcut:t,themeUseGlobalDefault:a,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:x,setChecklistDropdownEnabled:I,setShowTaskCardStatusLabel:C,setShowChecklist:D}=e,U=r.useCallback(async()=>{try{const P=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shortcut:t})});if(!P.ok)throw new Error(`Failed to save global settings (${P.status})`);return!0}catch{return console.error("[Taskforce] Failed to save shortcut"),!1}},[t]),L=r.useCallback(async P=>{d(P),m(!1);try{const z=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:P})});if(!z.ok)throw new Error(`Failed to save config (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project theme"),!1}},[d,m]),X=r.useCallback(async P=>{y(P),a&&d(P);try{const z=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:P})});if(!z.ok)throw new Error(`Failed to save global settings (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global theme"),!1}},[y,a,d]),me=r.useCallback(async P=>{if(s==="cloud")return k(!1),S(!1),!1;k(P),S(!1);try{const z=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:P})});if(!z.ok)throw new Error(`Failed to save config (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project backup setting"),!1}},[s,k,S]),se=r.useCallback(async P=>{if(s==="cloud")return h(!1),o&&k(!1),!1;h(P),o&&k(P);try{const z=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:P})});if(!z.ok)throw new Error(`Failed to save global settings (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global backup setting"),!1}},[s,h,o,k]),ae=r.useCallback(async P=>{g(P);try{const z=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schedulePreferences:{weekStartsOn:P}})});if(!z.ok)throw new Error(`Failed to save global settings (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save regional week start setting"),!1}},[g]),O=r.useCallback(async P=>{const z=Lg(P);return v(z),!0},[v]),_=r.useCallback(async P=>{x(P);try{const z=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({manualComplexityEnabled:P})});if(!z.ok)throw new Error(`Failed to save config (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save manual complexity setting"),!1}},[x]),de=r.useCallback(async P=>{I(P),P||D(!1);try{const z=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({checklistDropdownEnabled:P})});if(!z.ok)throw new Error(`Failed to save config (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save checklist dropdown setting"),!1}},[I,D]),ke=r.useCallback(async P=>{C(P);try{const z=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({showTaskCardStatusLabel:P})});if(!z.ok)throw new Error(`Failed to save config (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save task card status label setting"),!1}},[C]),Y=r.useCallback(async()=>{m(!0),S(!0),d(l),k(i),x(!1),I(!0),C(!0),D(!1);try{const P=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(!P.ok)throw new Error(`Failed to save config (${P.status})`);return!0}catch{return console.error("[Taskforce] Failed to reset project settings"),!1}},[m,S,d,l,k,i,x,I,C,D]);return{handleSaveSettings:U,handleSaveTheme:L,handleSaveGlobalTheme:X,handleJsonBackupEnabledChange:me,handleSaveGlobalJsonBackupEnabled:se,handleSaveGlobalWeekStartsOn:ae,handleSaveLocale:O,handleManualComplexityEnabledChange:_,handleChecklistDropdownEnabledChange:de,handleShowTaskCardStatusLabelChange:ke,handleResetProjectToGlobal:Y}}function Zw(e){const{activeCategories:t,activeTab:a,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:x,setCategory:I,setCustomCategories:C,setCustomTypes:D,setFilterCategories:U,setPathValidation:L,setPriorities:X,setShowFolderBrowser:me,setTaxonomies:se,tasks:ae}=e,O=r.useCallback(async(A,b)=>{const R=await A.json().catch(()=>({}));return String(R?.error||b)},[]),_=r.useCallback(()=>[...ae,...o],[o,ae]),de=r.useCallback(A=>A.priorities.find(b=>b.value===2)?.value||A.priorities[0]?.value||2,[]),ke=r.useCallback(async A=>{if(A.length!==0)try{const b=await fetch("/api/taskforce/validate-paths",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:A})});if(b.ok){const R=await b.json();L(F=>({...F,...R.results}))}}catch(b){console.error("[Taskforce] Failed to validate paths:",b)}},[L]);r.useEffect(()=>{if(a!=="settings"||!d)return;const A=[];t.forEach(R=>{h(R).forEach(Q=>{A.includes(Q)||A.push(Q)})});const b=A.filter(R=>!v[R]);b.length>0&&ke(b)},[t,a,d,h,v,ke]);const Y=r.useCallback(async(A,b)=>{if(d){C(R=>(R.length>0?R:t).map(Q=>Q.value===A.value?A:Q)),b&&b!==A.label&&(i===b&&I(A.label),S.includes(b)&&U(R=>R.map(F=>F===b?A.label:F)));try{const Q={categories:(m.length>0?m:t).map(M=>M.value===A.value?A:M)};b&&b!==A.label&&(Q.reassignFrom=b,Q.reassignTo=A.label),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Q)}),b&&await k()}catch(R){console.error("[Taskforce] Failed to update category",R)}}},[t,i,d,m,k,S,I,C,U]),P=r.useCallback(async A=>{if(!d)return;const b=A.trim().toLowerCase().replace(/\s+/g,"-");if(t.some(F=>F.value===b))return;const R={value:b,label:A.trim(),color:"blue-200",icon:"Folder"};C(F=>[...F.length>0?F:t,R]);try{const Q=[...m.length>0?m:t,R];await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:Q})})}catch(F){console.error("[Taskforce] Failed to create category",F)}},[t,d,m,C]),z=r.useCallback((A,b)=>{if(!b.trim())return;const R=t.find($=>$.value===A);if(!R)return;const F=h(R),Q=b.trim();if(F.includes(Q))return;const M=[...F,Q];Y({...R,path:void 0,paths:M}),ke(M)},[t,h,Y,ke]),ie=r.useCallback((A,b)=>{const R=t.find(F=>F.value===A);R&&Y({...R,icon:b})},[t,Y]),fe=r.useCallback((A,b)=>{const R=t.find(F=>F.value===A);R&&Y({...R,color:b})},[t,Y]),q=r.useCallback((A,b)=>{const R=t.find(M=>M.value===A);if(!R)return;const Q=h(R).filter(M=>M!==b);Y({...R,path:void 0,paths:Q})},[t,h,Y]),Me=r.useCallback(A=>{const b=g(A);if(l&&typeof l=="object"&&l.type==="category"){const R=t.find(F=>F.value===l.value);if(R){const F=h(R);if(!F.includes(b)){const Q=[...F,b];Y({...R,path:void 0,paths:Q})}}}me(!1),x(null)},[t,l,h,Y,g,x,me]),xe=r.useCallback(async A=>{if(!d)return;const b=Qc,R=t.find($=>$.value===b),F=R?{...R}:{value:b,label:_m,icon:"Inbox"},Q=F.label,M=t.find($=>$.value===A);C($=>{let H=($.length>0?$:t).filter(ce=>ce.value!==A);return H.some(ce=>ce.value===b)||(H=[F,...H]),H}),M&&((i===M.label||i===M.value)&&I(b),(S.includes(M.label)||S.includes(M.value))&&U($=>{const be=$.filter(H=>H!==M.label&&H!==M.value);return be.includes(b)?be:[...be,b]}));try{let $=(m.length>0?m:t).filter(be=>be.value!==A);$.some(be=>be.value===b)||($=[F,...$]),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:$,reassignFrom:M?.label||A,reassignTo:Q})}),await k()}catch($){console.error("[Taskforce] Failed to remove category",$)}},[t,i,d,m,k,S,I,C,U]),oe=r.useCallback(async A=>{if(!A.trim())return;const b=A.trim().toLowerCase().replace(/\s+/g,"-");if(s.some(F=>F.value===b))return;const R=[...s,{value:b,label:A.trim(),status:"active"}];D(R);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:R})})}catch(F){console.error("Failed to save type",F)}},[s,D]),le=r.useCallback(async A=>{const b=s.map(R=>R.value===A?{...R,status:"retired"}:R);D(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,D]),Ie=r.useCallback(async(A,b)=>{const R=s.find($=>$.value===A);if(!R)return;const F=typeof b.label=="string"?b.label.trim():R.label;if(!F)return;const Q=s.map($=>$.value===A?{...$,...b,label:F}:$);if(JSON.stringify(Q)!==JSON.stringify(s)){D(Q);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:Q})})}catch($){console.error("Failed to update type",$)}}},[s,D]),Ee=r.useCallback(async A=>{if(d){se(A);try{await fetch("/api/taskforce/taxonomies",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taxonomies:A})})}catch(b){console.error("[Taskforce] Failed to save taxonomies",b)}}},[d,se]),je=r.useCallback(async A=>{if(d){X(A);try{await fetch("/api/taskforce/priorities",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({priorities:A})})}catch(b){console.error("[Taskforce] Failed to save priorities",b)}}},[d,X]),Pe=r.useCallback(A=>{const b=_(),R=new Set(A.categories.map(H=>H.value)),F=new Set(A.types.map(H=>H.value)),Q=new Set(A.priorities.map(H=>Number(H.value))),M=Array.from(new Set(b.map(H=>String(H.category||"").trim()).filter(H=>H.length>0&&!R.has(H)))).sort(),$=Array.from(new Set(b.map(H=>String(H.type||"").trim()).filter(H=>H.length>0&&!F.has(H)))).sort(),be=Array.from(new Set(b.map(H=>Number(H.priority)).filter(H=>Number.isFinite(H)&&H>0&&!Q.has(H)))).sort((H,ce)=>H-ce);return{unmatchedCategoryValues:M,unmatchedTypeValues:$,incompatiblePriorityValues:be}},[_]),K=r.useCallback(async A=>{if(!d)return{success:!1,error:"Settings are still loading."};const{pack:b,sections:R,remapExistingValuesToDefault:F,workspaceIdOverride:Q}=A,M=String(Q||"").trim(),$=M.length>0,be=$?[]:_(),H=he=>{if(!M)return he;const G=he.includes("?")?"&":"?";return`${he}${G}workspaceId=${encodeURIComponent(M)}`},ce=()=>{const he={"Content-Type":"application/json"};return M&&(he["x-taskforce-workspace-id"]=M),he};try{if(R.categories){const he=new Set(b.categories.map(ue=>ue.value)),G=F?[...b.categories]:[...b.categories,...t.filter(ue=>!he.has(ue.value)).map(ue=>({...ue,disabled:!0}))];$||C(G);const re=await fetch(H("/api/taskforce/categories"),{method:"POST",headers:ce(),body:JSON.stringify({categories:G})});if(!re.ok)return{success:!1,error:await O(re,"Failed to apply category library pack.")}}if(R.types){const he=new Set(b.types.map(Re=>Re.value)),G=b.types.find(Re=>Re.value===Vr)?.value||b.types[0]?.value||Vr;if(F){const Re=be.filter(Te=>Te.type&&!he.has(String(Te.type))).map(Te=>({id:Te.id,type:G}));if(Re.length>0){const Te=await fetch(H("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ce(),body:JSON.stringify({updates:Re})});if(!Te.ok)return{success:!1,error:await O(Te,"Failed to remap task types to the pack default.")}}}const re=F?[...b.types]:[...b.types,...s.filter(Re=>!he.has(Re.value)).map(Re=>({...Re,status:"retired"}))];$||D(re);const ue=await fetch(H("/api/taskforce/types"),{method:"POST",headers:ce(),body:JSON.stringify({types:re})});if(!ue.ok)return{success:!1,error:await O(ue,"Failed to apply task type library pack.")}}if(R.priorities){const he=new Set(b.priorities.map(Re=>Re.value)),G=Array.from(new Set(be.map(Re=>Number(Re.priority)).filter(Re=>Number.isFinite(Re)&&Re>0&&!he.has(Re)))).sort((Re,Te)=>Re-Te);if(G.length>0&&!F)return{success:!1,error:`This workspace still uses priority levels ${G.join(", ")}. Enable "Remap unmatched existing values to default" to replace them before applying this pack.`};if(G.length>0){const Re=de(b),Te=be.filter(De=>G.includes(Number(De.priority))).map(De=>({id:De.id,priority:Re}));if(Te.length>0){const De=await fetch(H("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ce(),body:JSON.stringify({updates:Te})});if(!De.ok)return{success:!1,error:await O(De,"Failed to remap task priorities to the pack default.")}}}const re=b.priorities.map(Re=>({...Re,value:Number(Re.value)}));$||X(re);const ue=await fetch(H("/api/taskforce/priorities"),{method:"POST",headers:ce(),body:JSON.stringify({priorities:re})});if(!ue.ok)return{success:!1,error:await O(ue,"Failed to apply priority library pack.")}}return $||await y({isSilent:!0}),{success:!0}}catch(he){return console.error("[Taskforce] Failed to apply system taxonomy pack",he),{success:!1,error:he instanceof Error?he.message:"Failed to apply system taxonomy pack."}}},[t,s,d,_,de,O,y,C,D,X]);return{getCategoryPaths:h,validatePaths:ke,handleUpdateCategory:Y,handleSaveCategory:P,handleAddPath:z,handleUpdateCategoryIcon:ie,handleUpdateCategoryColor:fe,handleRemovePath:q,handleSelectPath:Me,handleRemoveCategory:xe,handleSaveType:oe,handleRemoveType:le,handleUpdateType:Ie,handleUpdateTaxonomies:Ee,handleUpdatePriorities:je,analyzeSystemTaxonomyPack:Pe,handleApplySystemTaxonomyPack:K}}function Yw({shouldDeferProtectedApiCalls:e,shouldBlockProtectedApiCalls:t}){const[a,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(),x=Array.isArray(v?.templates)?v.templates:[];return l(x),x}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 x of v){const I=await fetch(x);if(!I.ok)continue;const C=await I.json();if(C?.template)return C.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 x=await fetch("/api/taskforce/workflow-editor/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g,draft:v})}),I=await x.json().catch(()=>({}));return!x.ok||!I.success?{success:!1,error:I.error||`Save failed (${x.status})`}:(d(),{success:!0})}catch(x){return{success:!1,error:x.message}}},[d]),h=r.useCallback(async g=>{try{const v=await fetch(`/api/taskforce/workflow-editor/reset/${encodeURIComponent(g)}`,{method:"POST"}),x=await v.json().catch(()=>({}));return!v.ok||!x.success?{success:!1,error:x.error||`Reset failed (${v.status})`}:(d(),{success:!0})}catch(v){return{success:!1,error:v.message}}},[d]);return{availableWorkflows:a,initiativeTemplates:o,fetchWorkflows:d,fetchInitiativeTemplates:m,fetchWorkflowTemplate:y,fetchWorkflowOverrideNames:k,saveWorkflowTemplateDraft:S,resetWorkflowTemplateDraft:h}}function Jw(){const[e,t]=r.useState(!1),a=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:a}}async function Qw(e,t,a){if(e.current){t.current=!0;return}e.current=!0;try{do t.current=!1,await a();while(t.current)}finally{e.current=!1}}function Xw({tasks:e,archivedTasks:t,setTasks:a,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([]),x=r.useRef(!1),I=r.useRef(!1),C=r.useRef(null),D=r.useRef(null);r.useEffect(()=>{g.current=e},[e]),r.useEffect(()=>{v.current=t},[t]);const U=r.useCallback(P=>`${P.updatedAt||P.createdAt||""}|${P.status}|${P.priority}|${P.title}`,[]),L=r.useCallback((P,z)=>z.aborted?P===z.reason?!0:P instanceof DOMException?P.name==="AbortError":String(P?.name||"").toLowerCase()==="aborterror":!1,[]),[X,me]=r.useState([]),se=r.useRef(new Map),ae=r.useCallback(P=>{!P.length||typeof window>"u"||(me(z=>Array.from(new Set([...z,...P]))),P.forEach(z=>{const ie=se.current.get(z);ie&&window.clearTimeout(ie);const fe=window.setTimeout(()=>{se.current.delete(z),me(q=>q.filter(Me=>Me!==z))},4e3);se.current.set(z,fe)}))},[]);r.useEffect(()=>()=>{typeof window>"u"||(se.current.forEach(P=>window.clearTimeout(P)),se.current.clear())},[]),r.useEffect(()=>{S.current=new Map,h.current=!1,x.current=!1,I.current=!1,C.current?.abort("workspace-reset"),C.current=null,D.current?.abort("workspace-reset"),D.current=null,typeof window<"u"&&(se.current.forEach(P=>window.clearTimeout(P)),se.current.clear()),me([])},[i]);const O=r.useCallback(async(P=!1,z)=>{if(!(z?.ignoreAuthGuard===!0)&&(d||m))return;o(!P);const fe=String(l()||"").trim();C.current?.abort("superseded");const q=new AbortController;C.current=q;try{const Me=await fetch("/api/taskforce/tasks",{signal:q.signal});if(Me.status===401){y(),a([]),P||o(!1);return}if(Me.ok){const oe=((await Me.json()).tasks||[]).map(je=>Do(je));if(String(l()||"").trim()!==fe)return;const Ie=new Map,Ee=[];for(const je of oe){const Pe=U(je);if(Ie.set(je.id,Pe),!h.current)continue;const K=S.current.get(je.id);(!K||K!==Pe)&&Ee.push(je.id)}S.current=Ie,h.current?ae(Ee):h.current=!0,a(oe)}}catch(Me){if(L(Me,q.signal))return;console.error("[Taskforce] Failed to fetch tasks:",Me)}finally{C.current===q&&(C.current=null,o(!1))}},[U,l,ae,y,a,o,k,d,m]),_=r.useCallback(async(P=!1,z)=>{if(!(z?.ignoreAuthGuard===!0)&&(d||m))return;const fe=String(l()||"").trim();D.current?.abort("superseded");const q=new AbortController;D.current=q;try{const Me=await fetch("/api/taskforce/archive",{signal:q.signal});if(Me.ok){const xe=await Me.json();if(String(l()||"").trim()!==fe)return;const le=(xe.archived||[]).map(Ie=>({...Do(Ie),isArchived:!0}));s(le)}}catch(Me){if(L(Me,q.signal))return;console.error("[Taskforce] Failed to fetch archive:",Me)}finally{D.current===q&&(D.current=null)}},[l,L,s,d,m]),de=r.useCallback(async P=>{const z=P?.isSilent!==!1,ie=P?.ignoreAuthGuard===!0;await Promise.all([O(z,{ignoreAuthGuard:ie}),_(z,{ignoreAuthGuard:ie})])},[_,O]),ke=r.useCallback(async()=>{await Qw(x,I,async()=>{await de({isSilent:!0})})},[de]),Y=r.useCallback(P=>{const z=Lv(P,g.current,v.current);g.current=z.tasks,v.current=z.archivedTasks,a(z.tasks),s(z.archivedTasks)},[a,s]);return{tasksRef:g,archivedTasksRef:v,recentlyChangedTaskIds:X,markRecentlyChangedTasks:ae,fetchTasks:O,fetchArchive:_,refreshTaskCollections:de,refreshTaskCollectionsFromInvalidation:ke,mergeTaskFromServer:Y,getTaskRevisionKey:U}}function eb(e){const{editingTaskId:t,relationshipTasks:a,initiatives:s=[],workstreams:o=[],supplementalTasks:l=[],setComments:i}=e,d=r.useMemo(()=>{if(l.length===0)return a;const S=new Map;return a.forEach(h=>S.set(h.id,h)),l.forEach(h=>S.set(h.id,h)),Array.from(S.values())},[a,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 vf="WS-",Sf="IN-";function Eo(e){return el(vf,e)}function ay(e){return of(vf,e)}function um(e){return Cm(vf,e)}function os(e){return el(Sf,e)}function tb(e){return of(Sf,e)}function ry(e){return Cm(Sf,e)}function vp(e,t){const a=String(t||"").trim();if(!a)return null;const s=tb(a);return e.find(o=>o.id===a||os(o)===a||s!==null&&o.referenceNumber===s)||null}function nb(e){const t={};return e.forEach(a=>{const s=a.defaultValue;if(s!=null){if(Array.isArray(s)){s.length>0&&(t[a.id]=s.map(o=>typeof o=="number"?o:String(o)));return}t[a.id]=typeof s=="number"?s:String(s)}}),t}function ab(e,t){return e.filter(a=>{const s=t[a.id],o=Array.isArray(s)?s.length>0:s!=null&&s!=="";return a.status==="retired"&&!o?!1:a.formEnabled!==!1||a.isRequired===!0||o})}function rb(e){const{activeCategories:t,activeTypes:a,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:x,taxonomies:I,setActiveTab:C,setApproach:D,setAssignee:U,setAttachments:L,setAttachmentsDirty:X,setCategory:me,setChecklistItems:se,setComments:ae,setComplexity:O,setDescription:_,setDueDate:de,setEditingTaskId:ke,setError:Y,setFormTaxonomies:P,setIsOpen:z,setNewCommentText:ie,setPendingNavigation:fe,setWorkstreamInput:q,setPriority:Me,setScheduledDate:xe,setShowArchive:oe,setStatus:le,setTaskReturnTrail:Ie,setTitle:Ee,setType:je,setUnsavedModalOpen:Pe,taskReturnTrail:K,title:A}=e,b=r.useCallback(()=>a.find(G=>String(G.value||"").trim().length>0)?.value||Vr,[a]),R=r.useCallback(G=>{if(m){y(),G();return}if(!(A.trim()!==""||d.trim()!==""||l.length>0||h.trim()!==""||i.length>0||o.length>0)){G();return}fe(()=>G),Pe(!0)},[o,i.length,d,m,y,l,h,fe,Pe,A]),F=r.useCallback(()=>{z(!1)},[z]),Q=r.useCallback(()=>{ke(null),Ee(""),_("");const G=S,re=t.some(ue=>ue.label===G||ue.value===G);if(G&&re){const ue=t.find(Re=>Re.label===G||Re.value===G);me(ue?.value||G)}else me(k(t));je(b()),Me(2),O(3),le("task"),D("default"),U("unassigned"),xe(""),de(""),q(""),se([]),P(nb(I)),ae([]),ie(""),L([]),X(!1),Y("")},[t,k,b,S,D,U,L,X,me,se,ae,O,_,de,ke,Y,P,ie,Me,xe,le,Ee,je,I]),M=r.useCallback(G=>{const re=G.trim();if(!re)return null;const ue=jg(re);if(ue){const De=g.find(Oe=>Oe.referenceNumber===ue);if(De)return De}const Re=g.find(De=>De.id===re);if(Re)return Re;const Te=g.find(De=>Xi(De)===re);return Te||null},[g]),$=r.useCallback(G=>{const re=G.trim();if(!re)return null;const ue=re.toLowerCase(),Re=ay(re);if(Re){const Oe=v.find(vt=>vt.referenceNumber===Re);if(Oe)return Oe}const Te=v.find(Oe=>Oe.id===re);if(Te)return Te;const De=v.find(Oe=>Oe.title.trim().toLowerCase()===ue);return De||null},[v]),be=r.useCallback((G,re)=>{re?.preserveReturnTrail||Ie([]),ke(G.id),Ee(G.title),_(G.description||""),me(G.category||k(t)),je(G.type||b()),Me(typeof G.priority=="number"?G.priority:2),O(typeof G.complexity=="number"?G.complexity:3),le(G.status||"task"),D(G.approach||"default"),U(G.assignee||"unassigned"),xe(G.scheduledDate||""),de(G.dueDate||"");const ue=G.workstreamId&&v.find(Re=>Re.id===G.workstreamId)||null;q(ue?Eo(ue)||ue.id:""),se(G.checklistItems||[]),ae(G.comments||[]),P(G.taxonomies||{}),G.taxonomies?.approach&&D(G.taxonomies.approach),L(G.attachments||[]),X(!1),C("add")},[t,k,b,C,D,U,L,X,me,se,ae,O,_,de,ke,P,Me,xe,le,Ie,Ee,je,v]),H=r.useCallback(G=>{const re=g.find(ue=>ue.id===G);re&&(s==="add"&&m&&m!==re.id&&Ie(ue=>ue[ue.length-1]===m?ue:[...ue,m]),re.isArchived&&!x&&oe(!0),be(re,{preserveReturnTrail:!0}))},[s,m,be,g,oe,Ie,x]),ce=r.useCallback(()=>{if(s!=="add"||!m||K.length===0)return!1;const G=[...K];for(;G.length>0;){const re=G.pop();if(!re)continue;const ue=g.find(Re=>Re.id===re);if(ue)return ue.isArchived&&!x&&oe(!0),Ie(G),be(ue,{preserveReturnTrail:!0}),!0}return Ie([]),!1},[s,m,be,g,oe,Ie,x,K]),he=r.useCallback(()=>{Ie([])},[Ie]);return{handleNavigation:R,handleClose:F,resetForm:Q,resolveTaskIdInput:M,resolveWorkstreamIdInput:$,handleEdit:be,handleOpenTaskById:H,returnToPreviousTask:ce,clearReturnToParentTask:he}}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:_m,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"}],no=Yc.map(({value:e,label:t,icon:a,color:s})=>({value:e,label:t,icon:a,color:s}));function pd(e){const t=String(e||"task").trim().toLowerCase();return t==="completed"?Yc.find(a=>a.value==="done")||Yc[0]:Yc.find(a=>a.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]=Cs[t]||Ji,e),{}),V5=oy,mm=Object.fromEntries(sy().flatMap(e=>e.types).filter(e=>e.icon&&e.color).reduce((e,t)=>(e.some(([a])=>a===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"},bh={"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"},q5=["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 Da(e){if(e)return bh[e]?bh[e]:e}function ub(e){const t=String(e||"").trim().toLowerCase();return Da(mm[t]?.color)||Da("violet-200")||"#9c7aeb"}function K5(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 Da(db[t])||"var(--text-muted)"}const pb=/[\u2010-\u2015\u2212]/g;function wf(e){return String(e??"").trim().replace(pb,"-").replace(/\s+/g," ").toLowerCase()}function Tm(e){const t=wf(e);if(!t)return null;const a=t.match(/^(l\s*t|t)\s*(?:-\s*)?(\d+)$/i);return a?`${a[1].replace(/\s+/g,"").toLowerCase()}-${a[2]}`:null}function Rm(e){const t=wf(e);return{raw:t,tokens:t?t.split(" ").filter(Boolean):[],referenceToken:Tm(e)}}function ss(e,t){const a=String(t??"").trim();a&&e.push(a)}function Vc(e,t,a){const s=String(a??"").trim();if(!s)return;const o=t?.find(l=>String(l.value)===s);ss(e,o?.label)}function fb(e,t={}){const a=[];return ss(a,e.title),ss(a,e.description),ss(a,e.id),ss(a,Xi(e)),ss(a,e.category),ss(a,e.type),ss(a,e.priority),ss(a,e.status),ss(a,e.assignee||"unassigned"),ss(a,e.canceledReason),Vc(a,t.categories,e.category),Vc(a,t.types,e.type),Vc(a,t.priorities,e.priority),Vc(a,no,e.status),Vc(a,t.assigneeOptions,e.assignee||"unassigned"),Object.entries(e.taxonomies||{}).forEach(([s,o])=>{const l=t.taxonomies?.find(d=>d.id===s);ss(a,l?.label),(Array.isArray(o)?o:[o]).forEach(d=>{ss(a,d),Vc(a,l?.options,d)})}),a}function pm(e,t,a={}){const s=typeof t=="string"?Rm(t):t;if(!s.raw)return!0;const o=fb(e,a),i=o.map(wf).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 a=e.taxonomies?.[t];return a==null||a===""?!1:Array.isArray(a)?a.some(s=>String(s).trim().length>0):String(a).trim().length>0}function _d(e,t){const a=e.filter(o=>o.status!=="retired"),s=e.filter(o=>o.status==="retired"&&t.some(l=>hb(l,o.id)));return[...a,...s.filter(o=>!a.some(l=>l.id===o.id))]}function iy(e,t=[]){return _d(e,t).filter(a=>a.sortEnabled===!0).map(a=>({value:`taxonomy:${a.id}`,label:a.status==="retired"?`${a.label} (Retired)`:a.label}))}function xh(e,t){const a=e.taxonomies?.[t.id];if(a==null||a==="")return null;const s=Array.isArray(a)?a.map(o=>String(o)):[String(a)];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,a,s,o=[]){let l=0;if(a==="created")return l=Hi(e,t),s==="desc"?l:-l;if(a==="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(a==="priority"){const i=sm(e.priority),d=sm(t.priority);return l=i!==d?d-i:Hi(e,t),s==="desc"?l:-l}if(a==="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(a.startsWith("taxonomy:")){const i=a.slice(9),d=o.find(k=>k.id===i);if(!d)return l=Hi(e,t),s==="desc"?l:-l;const m=xh(e,d),y=xh(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,a){const s=e.taxonomies?.[t];return s==null||s===""?!1:Array.isArray(s)?s.some(o=>String(o)===String(a)):String(s)===String(a)}function bf(e,t){const a=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[...a,...s.filter(o=>!a.some(l=>String(l.value)===String(o.value)))]}function yb({tasks:e,archivedTasks:t,activeCategories:a,activeTypes:s,priorities:o,taxonomies:l,configLoaded:i,referenceDataLoaded:d,assigneeOptionsLoaded:m,assigneeOptions:y}){const k=r.useMemo(()=>Ug(y),[y]),S=r.useMemo(()=>_d(l,[...e,...t]).filter(H=>H.filterEnabled!==!1).map(H=>({...H,options:bf(H,[...e,...t])})),[t,e,l]),h=r.useMemo(()=>k.map(H=>H.value),[k]),[g,v]=r.useState(""),[x,I]=r.useState([]),[C,D]=r.useState([]),[U,L]=r.useState([]),[X,me]=r.useState(!1),[se,ae]=r.useState(no.map(H=>H.value)),[O,_]=r.useState(h),[de,ke]=r.useState(!0),[Y,P]=r.useState({}),[z,ie]=r.useState("created"),[fe,q]=r.useState("desc"),Me=r.useCallback(()=>{q(H=>H==="asc"?"desc":"asc")},[]),[xe,oe]=r.useState("status"),[le,Ie]=r.useState("show"),[Ee,je]=r.useState({}),Pe=r.useCallback((H,ce)=>ce.length===0?!0:ce.every(he=>H.includes(he)),[]),K=r.useCallback((H,ce)=>H.length===ce.length&&H.every((he,G)=>he===ce[G]),[]);r.useEffect(()=>{xe==="approach"&&oe("status")},[xe]),r.useEffect(()=>{if(!(!i||!d)&&m&&!X&&a.length>0&&s.length>0&&o.length>0){I(a.map(ce=>ce.value)),D(o.map(ce=>ce.value)),L(s.map(ce=>ce.value)),_(h),ke(!0);const H={};S.forEach(ce=>{H[ce.id]=ce.options.map(he=>he.value)}),P(H),me(!0)}},[i,d,m,a,s,o,S,X,h]),r.useEffect(()=>{if(!X||!m)return;const H=new Set(h),ce=O.filter(re=>H.has(re)),he=de?h:ce.length>0||O.length===0?ce:h;(he.length!==O.length||he.some((re,ue)=>re!==O[ue]))&&_(he)},[h,O,de,X,m]),r.useEffect(()=>{if(!X||!m)return;const H=O.filter(he=>h.includes(he)),ce=h.length>0&&h.every(he=>H.includes(he));ce!==de&&ke(ce)},[h,O,de,X,m]),r.useEffect(()=>{if(!i||!d||!X||a.length===0)return;const H=Wv(x,a);(H.length!==x.length||H.some((he,G)=>he!==x[G]))&&I(H)},[i,d,a,X,x]),r.useEffect(()=>{if(!i||!d||!X||o.length===0||C.length===0)return;const H=Bv(C,o),ce=Array.from(new Set(C.map(G=>Number(G)).filter(G=>Number.isFinite(G))));(H.length!==ce.length||H.some((G,re)=>G!==ce[re]))&&D(H)},[i,d,X,o,C]),r.useEffect(()=>{if(!i||!d||!X||s.length===0)return;const H=new Set(s.map(G=>G.value)),ce=U.filter(G=>H.has(G)),he=ce.length>0||U.length===0?ce:s.map(G=>G.value);K(he,U)||L(he)},[s,i,U,X,K,d]),r.useEffect(()=>{if(!i||!d||!X)return;const H={};S.forEach(ue=>{const Re=ue.options.map(Oe=>Oe.value);if(Re.length===0)return;const Te=Array.isArray(Y[ue.id])?Y[ue.id]:[],De=Te.filter(Oe=>Re.includes(Oe));H[ue.id]=De.length>0||Te.length===0?De:Re});const ce=Object.keys(Y).sort(),he=Object.keys(H).sort(),G=ce.length!==he.length||ce.some((ue,Re)=>ue!==he[Re]),re=he.some(ue=>!K(Y[ue]||[],H[ue]||[]));(G||re)&&P(H)},[i,Y,S,X,K,d]);const A=r.useCallback(()=>{v(""),I(a.map(ce=>ce.value)),D(o.map(ce=>ce.value)),L(s.map(ce=>ce.value)),ae(no.map(ce=>ce.value)),_(h),ke(!0);const H={};S.forEach(ce=>{H[ce.id]=ce.options.map(he=>he.value)}),P(H),ie("created"),q("desc")},[a,o,s,S,h]),b=r.useCallback(H=>{_(ce=>{const he=typeof H=="function"?H(ce):H,G=Array.from(new Set(he.filter(ue=>typeof ue=="string"&&ue.trim().length>0))),re=h.length>0&&h.every(ue=>G.includes(ue));return ke(re),G})},[h]),R=r.useMemo(()=>Rm(g),[g]),F=r.useMemo(()=>({categories:a,types:s,priorities:o,assigneeOptions:k,taxonomies:l}),[a,s,o,k,l]),Q=r.useMemo(()=>{const H=Pe(x,a.map(re=>re.value)),ce=Pe(U,s.map(re=>re.value)),he=Pe(Array.from(new Set(C.map(re=>Number(re)).filter(re=>Number.isFinite(re)))),o.map(re=>Number(re.value)).filter(re=>Number.isFinite(re))),G=Pe(se,no.map(re=>re.value));return e.filter(re=>{const ue=pm(re,R,F),Re=!X||H||x.includes(re.category),Te=!X||he||up(re.priority,C),De=!X||ce||U.includes(re.type||Vr),Oe=!X||G||se.includes(re.status),vt=!X||de||O.includes(re.assignee||"unassigned"),st=Object.entries(Y).every(([kt,Ye])=>{const _t=S.find(Rt=>Rt.id===kt);if(!_t)return!0;const dt=_t?.options.every(Rt=>Ye.includes(Rt.value))??!0;if(dt)return!0;const Qe=re.taxonomies?.[kt];return Qe?Array.isArray(Qe)?Qe.some(Rt=>Ye.includes(Rt)):Ye.includes(Qe):dt||Ye.includes("")});return ue&&Re&&Te&&De&&Oe&&vt&&st}).sort((re,ue)=>fm(re,ue,z,fe,l))},[e,t,R,F,x,C,U,se,O,de,Y,z,fe,X,S,a,s,o,Pe,l]),M=r.useMemo(()=>{const H=Pe(x,a.map(re=>re.value)),ce=Pe(U,s.map(re=>re.value)),he=Pe(Array.from(new Set(C.map(re=>Number(re)).filter(re=>Number.isFinite(re)))),o.map(re=>Number(re.value)).filter(re=>Number.isFinite(re))),G=Pe(se,no.map(re=>re.value));return e.filter(re=>{const ue=!X||H||x.includes(re.category),Re=!X||he||up(re.priority,C),Te=!X||ce||U.includes(re.type||Vr),De=!X||G||se.includes(re.status),Oe=!X||de||O.includes(re.assignee||"unassigned"),vt=Object.entries(Y).every(([st,kt])=>{const Ye=S.find(Qe=>Qe.id===st);if(!Ye)return!0;const _t=Ye?.options.every(Qe=>kt.includes(Qe.value))??!0;if(_t)return!0;const dt=re.taxonomies?.[st];return dt?Array.isArray(dt)?dt.some(Qe=>kt.includes(Qe)):kt.includes(dt):_t||kt.includes("")});return ue&&Re&&Te&&De&&Oe&&vt})},[e,t,x,C,U,se,O,de,Y,X,S,a,s,o,Pe]),$=r.useMemo(()=>{const H=a.every(G=>x.includes(G.value)),ce=Pe(U,s.map(G=>G.value)),he=Pe(Array.from(new Set(C.map(G=>Number(G)).filter(G=>Number.isFinite(G)))),o.map(G=>Number(G.value)).filter(G=>Number.isFinite(G)));return t.filter(G=>{const re=pm(G,R,F),ue=!X||H||x.includes(G.category),Re=!X||he||up(G.priority,C),Te=!X||ce||U.includes(G.type||Vr),De=!X||de||O.includes(G.assignee||"unassigned"),Oe=Object.entries(Y).every(([vt,st])=>{const kt=S.find(dt=>dt.id===vt);if(!kt)return!0;const Ye=kt?.options.every(dt=>st.includes(dt.value))??!0;if(Ye)return!0;const _t=G.taxonomies?.[vt];return _t?Array.isArray(_t)?_t.some(dt=>st.includes(dt)):st.includes(_t):Ye||st.includes("")});return re&&ue&&Re&&Te&&De&&Oe}).sort((G,re)=>fm(G,re,z,fe,l))},[t,R,F,x,C,U,O,de,Y,z,fe,X,a,s,o,S,Pe,l]),be=r.useMemo(()=>{const H={};return Q.forEach(ce=>{const he=a.find(re=>re.value===ce.category),G=he?he.label:ce.category||"General";H[G]||(H[G]=[]),H[G].push(ce)}),H},[Q,a]);return{searchQuery:g,setSearchQuery:v,filterCategories:x,setFilterCategories:I,filterPriorities:C,setFilterPriorities:D,filterTypes:U,setFilterTypes:L,filterStatus:se,setFilterStatus:ae,filterAssignees:O,setFilterAssignees:b,filterAssigneesAllSelected:de,setFilterAssigneesAllSelected:ke,filterTaxonomies:Y,setFilterTaxonomies:P,hasInitedFilters:X,setHasInitedFilters:me,sortBy:z,setSortBy:ie,sortOrder:fe,setSortOrder:q,toggleSortOrder:Me,groupBy:xe,setGroupBy:oe,emptyColumnMode:le,setEmptyColumnMode:Ie,collapsedCategories:Ee,setCollapsedCategories:je,clearFilters:A,filteredTasks:Q,searchAgnosticTasks:M,filteredArchive:$,groupedTasks:be}}const kb=yb;function vb(e){const{activeCategories:t,activeTab:a,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:x,formTaxonomies:I,getPreferredCategoryValue:C,mergeTaskFromServer:D,workstreamInput:U,priority:L,pushNotice:X,queueWorkspaceSyncFromAuthoritativeTaskState:me,relationshipTasks:se,resetForm:ae,resolveWorkstreamIdInput:O,scheduledDate:_,setActiveTab:de,setAttachmentsDirty:ke,setComments:Y,setError:P,setLastUsedCategory:z,setLoading:ie,setNewCommentText:fe,status:q,title:Me,taxonomies:xe,type:oe}=e,[le,Ie]=r.useState(null),[Ee,je]=r.useState("idle"),[Pe,K]=r.useState(null),A=r.useRef(null),b=r.useCallback(()=>JSON.stringify({title:Me.trim(),description:h||"",category:typeof m=="string"?m:m.label||C(t),type:typeof oe=="string"?oe:oe.label||Vr,priority:Number(L),complexity:Number(S)||3,approach:o||"default",assignee:l||"agent",scheduledDate:_||"",dueDate:g||"",workstreamInput:U.trim(),checklistItems:y,comments:k,taxonomies:I,attachments:i}),[t,o,l,i,m,y,k,S,h,g,I,C,L,_,Me,oe,U]),R=r.useCallback(()=>{A.current!==null&&(window.clearTimeout(A.current),A.current=null)},[]),F=r.useCallback(async he=>{const G=he?.quiet??!1,re=he?.source??"manual";if(!Me.trim())return P("Title is required"),v&&je(re==="autosave"?"error":"idle"),!1;const ue=xe.filter(Re=>Re.isRequired).filter(Re=>{const Te=I[Re.id];return Array.isArray(Te)?Te.filter(De=>String(De).trim().length>0).length===0:typeof Te!="string"&&typeof Te!="number"||String(Te).trim().length===0}).map(Re=>Re.label);if(ue.length>0)return P(`Required taxonomy values are missing: ${ue.join(", ")}`),v&&je(re==="autosave"?"error":"idle"),!1;if(v&&se.find(Te=>Te.id===v)?.isArchived)return P("Archived tasks are read-only. Unarchive first to make changes."),je(re==="autosave"?"error":"idle"),!1;ie(!0),P(""),v&&je("saving");try{const Re=v?`/api/taskforce/task/${v}`:s.replace("/api/dev/task","/api/taskforce/task").replace("/api/taskforce/task","/api/taskforce/task"),Te=v?"PATCH":"POST",De=typeof m=="string"?m:m.label||C(t),Oe=typeof oe=="string"?oe:oe.label||Vr,vt=U.trim()?O(U):null,st={title:Me,description:h||null,category:De||C(t),type:Oe,priority:L,complexity:Number(S)||3,status:v?void 0:q,completedAt:v?void 0:q==="done"?new Date().toISOString():null,approach:o||"default",assignee:l||"agent",scheduledDate:_||null,dueDate:g||null,workstreamId:U.trim()?vt?.id||U.trim():null,checklistItems:y,comments:k,taxonomies:I,...v?{}:{createdAt:new Date().toISOString(),createdBy:"user"}};(!v||d)&&(st.attachments=i),v&&(st.saveSource=re);const kt=await fetch(Re,{method:Te,headers:{"Content-Type":"application/json"},body:JSON.stringify(st)});if(!kt.ok){const dt=(await kt.json()).message||`Failed to ${v?"update":"save"} task`;return P(dt),G||X(dt,"error"),ie(!1),v&&je("error"),!1}const Ye=await kt.json().catch(()=>null);return v&&Ye&&typeof Ye=="object"&&(D(Ye),me()),z(De),ke(!1),ie(!1),v&&je("saved"),!0}catch{return P("Failed to connect to server"),G||X("Failed to connect to server","error"),ie(!1),v&&je("error"),!1}},[t,s,o,l,i,d,m,y,k,S,h,g,v,I,C,D,U,L,X,me,O,ke,P,z,ie,_,q,Me,xe,oe]),Q=r.useCallback(async()=>{await F({source:"manual"})&&(v||X("Task added successfully","success"),a==="add"&&!v&&(ae(),de("tasks"),await x()))},[a,v,x,X,ae,F,de]);r.useEffect(()=>{if(R(),!v){K(null),je("idle");return}K(b()),je("idle")},[R,v]);const M=r.useCallback(async()=>{if(R(),!v||Pe===null)return;const he=b();if(he===Pe||!Me.trim()||g&&_&&g<_)return;await F({quiet:!0,source:"autosave"})&&K(he)},[b,R,g,v,Pe,F,_,Me]);r.useEffect(()=>{if(!v||Pe===null)return;const he=b();if(he!==Pe){if(!Me.trim()){je("idle");return}if(g&&_&&g<_){je("error");return}return je(G=>G==="error"?"error":"idle"),R(),A.current=window.setTimeout(async()=>{await F({quiet:!0,source:"autosave"})&&K(he)},700),()=>{R()}}},[b,R,g,v,Pe,F,_,Me]);const $=r.useCallback(async he=>{if(he.preventDefault(),g&&_&&g<_){Ie({dueDate:g,scheduledDate:_});return}await Q()},[g,Q,_]),be=r.useCallback(async()=>{Ie(null),await Q()},[Q]),H=r.useCallback(()=>{Ie(null)},[]),ce=r.useCallback(async he=>{if(!v||!he.trim())return;const G=he.trim();try{const re=await fetch(`/api/taskforce/task/${v}/comment`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:G,author:"user"})});if(!re.ok){const Te=(await re.json().catch(()=>({}))).error||"Failed to add comment.";P(Te),X(Te,"error");return}const ue=await re.json().catch(()=>null);if(fe(""),ue&&typeof ue=="object"){const Re=Do(ue);Y(Re.comments||[]),D(ue),K(b()),je("saved")}else await x(!0);me()}catch(re){console.error("Failed to add comment",re),P("Failed to add comment."),X("Failed to add comment.","error")}},[v,x,b,D,X,me,Y,P,fe]);return{autoSaveState:Ee,flushAutoSave:M,scheduleWarningPrompt:le,saveTask:F,handleSubmit:$,confirmScheduleWarning:be,cancelScheduleWarning:H,handleAddComment:ce}}function Sb(e){const{editingTaskId:t,fetchTasks:a,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(I=>I.id===t);if(!h)return;const g=typeof S=="string"?S.trim():S===null?"":o.trim(),v=g?m(g):null,x=g.length>0?v?.id||g:null;if((h.workstreamId||null)===x){l(x?"Task already belongs to that workstream.":"Task is already standalone.","info");return}try{const I=await fetch(`/api/taskforce/task/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({workstreamId:x})});if(!I.ok){const U=(await I.json().catch(()=>({}))).error||"Failed to set workstream.";y(U),l(U,"error");return}y(""),l(x?"Workstream set":"Workstream removed","info");const C=await I.json().catch(()=>null);C?(s(C),i()):(await a(!0),i())}catch{y("Failed to set workstream."),l("Failed to set workstream.","error")}},[t,a,s,o,l,i,d,m,y])}}function wb({tasks:e,archivedTasks:t,editingTaskId:a,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:x,isAuthenticated:I,workspaceCloudSyncEnabled:C,buildWorkspaceSyncSignature:D,pushWorkspaceChangesToCloud:U,workspacePendingSignatureRef:L,workspaceDeletedTaskIdsRef:X,workspaceDeletedTaskWatermarksRef:me}){const[se,ae]=r.useState(null),O=r.useRef(null),_=r.useRef(null),de=r.useRef(null);r.useEffect(()=>()=>{typeof window>"u"||(_.current!==null&&(window.clearTimeout(_.current),_.current=null),de.current=null)},[]);const ke=r.useCallback((K=0)=>{if(!(v&&x==="local"&&I&&C)||typeof window>"u")return;const A=Math.max(0,K),b=Date.now()+A,R=de.current;if(_.current!==null){if(A<=0||R!==null&&R>=b)return;window.clearTimeout(_.current),_.current=null}de.current=b,_.current=window.setTimeout(()=>{_.current=null,de.current=null;const F=D();F&&(L.current=F,U(F))},A)},[v,x,I,C,D,L,U]),Y=r.useCallback(async(K,A)=>{let b=await fetch(`/api/taskforce/deleted${K}`,A);return b.status===404&&(b=await fetch(`/api/taskforce/trash${K}`,A)),b},[]),P=async(K,A=!1,b={})=>{if(!b.skipConfirm&&!confirm("Move this task to Trash? You can restore it later."))return!1;const R=A||t.some(F=>F.id===K);try{const F=await fetch(`/api/taskforce/task/${K}`,{method:"DELETE"});if(!F.ok){const be=(await F.json().catch(()=>({}))).error||"Failed to delete task.";return i(be),g(be,"error"),!1}const Q=await F.json().catch(()=>({})),M=Q?.deleted&&typeof Q.deleted=="object"&&Q.deleted.taskSnapshot?{...Q.deleted,taskSnapshot:Do(Q.deleted.taskSnapshot)}:null;if(window.location.search.includes(K)){const $=new URL(window.location.href);$.searchParams.delete("task"),window.history.pushState({},"",$.toString())}if(R?o($=>$.filter(be=>be.id!==K)):s($=>$.filter(be=>be.id!==K)),M){l(be=>[M,...be.filter(H=>H.taskId!==K)]);const $=String(M.deletedAt||"").trim();Number.isFinite(Date.parse($))&&me.current.set(K,$)}else await S(!0),me.current.set(K,new Date().toISOString());if(X.current.add(K),v&&x==="local"&&I&&C){const $=D();L.current=$,U($)}return a===K&&(d(),m("tasks")),i(""),g("Task moved to Trash.","info"),!0}catch(F){return console.error("Failed to delete task:",F),i("Failed to delete task."),g("Failed to delete task.","error"),!1}},z=r.useCallback(async K=>{try{const A=await Y(`/${K}/restore`,{method:"POST"});if(!A.ok){const Q=(await A.json().catch(()=>({}))).error||"Failed to restore deleted task.";return i(Q),g(Q,"error"),null}const b=await A.json().catch(()=>null);b?h(b):await y(!0),l(F=>F.filter(Q=>Q.id!==K&&Q.taskId!==K));const R=String(b?.id||"").trim();return X.current.delete(K),me.current.delete(K),R&&(X.current.delete(R),me.current.delete(R)),ke(),i(""),g("Task restored from Trash.","info"),b?Do(b):null}catch(A){return console.error("Failed to restore deleted task:",A),i("Failed to restore deleted task."),g("Failed to restore deleted task.","error"),null}},[y,h,g,ke,Y,l,i]),ie=r.useCallback(async K=>{try{const A=await Y(`/${K}`,{method:"DELETE"});if(!A.ok){const R=(await A.json().catch(()=>({}))).error||"Failed to permanently delete deleted task.";return i(R),g(R,"error"),!1}return l(b=>b.filter(R=>R.id!==K&&R.taskId!==K)),ke(),i(""),g("Deleted task permanently removed.","info"),!0}catch(A){return console.error("Failed to permanently delete deleted task:",A),i("Failed to permanently delete deleted task."),g("Failed to permanently delete deleted task.","error"),!1}},[g,ke,Y,l,i]),fe=r.useCallback(async()=>{try{const K=await Y("/empty",{method:"POST"});if(!K.ok){const F=(await K.json().catch(()=>({}))).error||"Failed to permanently delete deleted tasks.";return i(F),g(F,"error"),null}const A=await K.json().catch(()=>({})),b=Number(A?.deleted||0);return l([]),ke(),i(""),g(b===1?"Deleted task permanently removed.":`${b} deleted tasks permanently removed.`,"info"),b}catch(K){return console.error("Failed to empty deleted tasks:",K),i("Failed to permanently delete deleted tasks."),g("Failed to permanently delete deleted tasks.","error"),null}},[g,ke,Y,l,i]),q=r.useCallback(async(K,A)=>{const b=e,R=t;s(F=>F.map(Q=>Q.id===K?{...Q,...A}:Q)),o(F=>F.map(Q=>Q.id===K?{...Q,...A}:Q));try{const F=await fetch(`/api/taskforce/task/${K}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)});if(!F.ok){const $=(await F.json().catch(()=>({}))).error||`Failed to update task ${K}.`;i($),g($,"error"),s(b),o(R);return}const Q=await F.json().catch(()=>null);h(Q),ke(A.attachments!==void 0?150:0),i("")}catch(F){console.error("Failed to update task",F);const Q=`Failed to update task ${K}.`;i(Q),g(Q,"error"),s(b),o(R)}},[e,t,g,h,ke]);return{copiedId:se,handleDelete:P,handleUpdateTask:q,handleToggleComplete:async K=>{const A=K.status==="done"?"task":"done",b=A==="done"?new Date().toISOString():void 0,R={status:A,completedAt:b,completed:A==="done",inProgress:!1,readyForReview:!1,cancelled:!1},F=e,Q=t;s(M=>M.map($=>$.id===K.id?{...$,...R}:$)),o(M=>M.map($=>$.id===K.id?{...$,...R}:$));try{const M=await fetch(`/api/taskforce/task/${K.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:A,completedAt:b})});if(!M.ok){const H=(await M.json().catch(()=>({}))).error||"Failed to update task status.";i(H),g(H,"error"),s(F),o(Q);return}const $=await M.json().catch(()=>null);$?(h($),ke()):(await y(!0),ke()),i("")}catch(M){console.error("Failed to toggle complete",M),i("Failed to update task status."),g("Failed to update task status.","error"),s(F),o(Q)}},handleToggleCancel:async K=>{const A=K.status==="cancelled"?"task":"cancelled";try{const b=await fetch(`/api/taskforce/task/${K.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:A})});if(!b.ok){const Q=(await b.json().catch(()=>({}))).error||"Failed to update task status.";i(Q),g(Q,"error"),await y(!0);return}const R=await b.json().catch(()=>null);R?(h(R),ke()):(await y(!0),ke()),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 K=>{const A=K.status==="in-progress"?"task":"in-progress";s(b=>b.map(R=>R.id===K.id?{...R,status:A}:R));try{const b=await fetch(`/api/taskforce/task/${K.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:A})});if(!b.ok){await y(!0);return}const R=await b.json().catch(()=>null);h(R),ke()}catch{y()}},handleToggleReview:async K=>{const A=K.status==="review"?"task":"review";s(b=>b.map(R=>R.id===K.id?{...R,status:A}:R));try{const b=await fetch(`/api/taskforce/task/${K.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:A})});if(!b.ok){await y(!0);return}const R=await b.json().catch(()=>null);h(R),ke()}catch{y()}},handleArchiveTask:async K=>{try{const b=K.status==="cancelled"?"cancel":"complete",R=await fetch(`/api/taskforce/task/${K.id}/${b}`,{method:"POST"});if(R.ok){const F=await R.json().catch(()=>null),Q=[];if(F&&typeof F=="object"&&Q.push(F),Q.length>0){for(const $ of Q)h($);ke()}else k();const M=new Set(Q.map($=>String($?.id||"").trim()).filter($=>$.length>0));a&&M.has(a)&&(d(),m("tasks"))}else{const Q=(await R.json().catch(()=>({}))).error||"Failed to archive task.";i(Q),g(Q,"error")}}catch(A){console.error("Failed to archive",A),i("Failed to archive task."),g("Failed to archive task.","error")}},handleBulkArchive:async()=>{const K=e.filter(A=>A.status==="done"||A.status==="cancelled");if(K.length!==0&&confirm(`Archive ${K.length} completed/cancelled tasks?`))try{const A=await fetch("/api/taskforce/bulk-archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:K.map(b=>b.id)})});if(A.ok){const b=await A.json(),R=Array.isArray(b?.results?.archived)?b.results.archived:[];if(R.length>0){for(const F of R)h(F);ke()}else s(F=>F.filter(Q=>!["done","cancelled"].includes(Q.status))),k();g(`${b.archived||K.length} tasks archived`,"info"),i("")}else{const R=(await A.json().catch(()=>({}))).error||"Failed to bulk archive tasks.";i(R),g(R,"error")}}catch(A){console.error("Failed to bulk archive",A),i("Failed to bulk archive tasks."),g("Failed to bulk archive tasks.","error")}},handleUnarchive:async K=>{try{const A=await fetch(`/api/taskforce/task/${K}/unarchive`,{method:"POST"});if(A.ok){const b=await A.json().catch(()=>null);b?(h(b),ke()):(o(R=>R.filter(F=>F.id!==K)),await y(!0),ke()),i(""),g("Task restored from archive.","info")}}catch(A){console.error("Failed to unarchive",A),i("Failed to unarchive task."),g("Failed to unarchive task.","error")}},handleRestoreDeletedTask:z,handlePermanentlyDeleteDeletedTask:ie,handleEmptyDeletedTasks:fe,handleCopyId:(K,A)=>{K.stopPropagation(),navigator.clipboard.writeText(A),ae(A),O.current!==null&&window.clearTimeout(O.current),O.current=window.setTimeout(()=>{O.current=null,ae(null)},2e3)},queueWorkspaceSyncFromAuthoritativeTaskState:ke}}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 xb(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 _b({currentWorkspaceIdRef:e,resolveApiUrl:t,runtimeMode:a}){r.useEffect(()=>{if(typeof window>"u"||typeof window.fetch!="function")return;const s=window.fetch.bind(window),o=l=>{if(typeof l=="string")return a!=="cloud"?l:l.startsWith("/api/taskforce")&&!Fu(l)?t(l):l;if(l instanceof URL)return a!=="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(a!=="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=xb(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((x,I)=>h.set(I,x)),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,a])}const od=12e3,Cb=3e4,Ab=2e4;function Ou(e){return e==="cloud"?Cb:od}function _h(){return typeof performance<"u"?performance.now():Date.now()}function Ib({runtimeConfigReady:e,shouldProbeCloudAuth:t,authSessionResolved:a,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:x,setAuthUserDisplayName:I,setAuthUserAvatarUrl:C,setUserGlobalSyncStatus:D,setUserGlobalSyncError:U,setHasBetaAccess:L,setAvailableWorkspaces:X,setHydratedWorkspaceRole:me,setAssigneeOptions:se,setAuthBlocked:ae,setAuthSessionResolved:O,setError:_,applyResolvedWorkspaceId:de,readPersistedWorkspaceId:ke,authSessionRequestRef:Y,authSessionEpochRef:P,authSessionLastCheckedAtRef:z,authSessionLastResultRef:ie,isLoopbackHost:fe,setAuthStateReadyRefs:q}){const Me=r.useCallback(async oe=>{const le=oe?.force===!0;if(m("auth"),!e)return ie.current;if(!t)return k("local"),S(!1),h(!1),g("anonymous"),v(""),rd(null),x(""),I(""),C(""),D("disconnected"),U(null),L(!0),X([]),me(null),se(li()),ae(!1),O(!0),q(!1,!0,!1),ie.current=!1,z.current=Date.now(),!1;const Ie=s("/api/taskforce/auth/session"),Ee=Date.now();if(!le&&Y.current)return Y.current;if(!le&&a&&Ee-z.current<1500)return ie.current;const je=++P.current;let Pe=null;return Pe=(async()=>{const K=_h(),A=new AbortController,b=typeof window<"u"?window.setTimeout(()=>A.abort(),Ab):null,R=()=>P.current!==je,F=(Q,M)=>{Ut(Q,{durationMs:Math.max(0,Math.round(_h()-K)),force:le,sessionUrl:Ie,...M})};try{const Q=await fetch(Ie,{method:"GET",credentials:"include",mode:"cors",signal:A.signal});if(R())return ie.current;if(Q.status===429)return O(!0),q(ie.current,!0,!1),F("auth_session_rate_limited",{status:Q.status}),ie.current;if(!Q.ok)return R()?ie.current:(fe&&rd(null),O(!0),q(!1,!0,!1),ie.current=!1,F("auth_session_request_failed",{status:Q.status}),!1);const M=await Q.json();if(R())return ie.current;const $=!!M.authRequiredForApi,be=!!M.authenticated,H=be?M.betaAccess!==!1:!0,ce=typeof M.workspaceId=="string"&&M.workspaceId.trim().length>0?M.workspaceId.trim():"",he=typeof M.userId=="string"&&M.userId.trim().length>0?M.userId.trim():"anonymous",G=typeof M.email=="string"&&M.email.trim().length>0?M.email.trim().toLowerCase():"",re=typeof M.displayName=="string"?M.displayName.trim():"",ue=typeof M.avatarUrl=="string"?M.avatarUrl.trim():"",Re=i==="local",Te=i==="local"||o,De=o||Re?!1:$;return S(De),h(be),g(be?he:"anonymous"),v(be?ce:""),fe&&rd(be?he:null),x(be?G:""),I(be?re:""),C(be?ue:""),be&&_(Oe=>Oe===l?"":Oe),D(be?"idle":"disconnected"),U(null),L(H),Te||de(ce||ke(d)||"default",{preserveNonDefaultDefault:!0}),ae(o||Re?!1:$&&!be),O(!0),q(be,!0,De),ie.current=be,be&&m("ready"),F("auth_session_resolved",{status:Q.status,authenticated:be,workspaceId:be?ce:"",userId:be?he:"anonymous",authRequiredForApi:De}),be}catch(Q){return R()||(fe&&rd(null),O(!0),q(!1,!0,!1),ie.current=!1,y("Unable to verify your session."),F("auth_session_exception",{error:Q instanceof Error?Q.message:String(Q)})),ie.current}finally{b!==null&&typeof window<"u"&&window.clearTimeout(b),R()||(z.current=Date.now()),Pe&&Y.current===Pe&&(Y.current=null)}})(),Y.current=Pe,Pe},[e,t,a,s,o,l,i,d,m,y,k,S,h,g,v,x,I,C,D,U,L,X,me,se,ae,O,_,de,ke,Y,P,z,ie,fe,q]),xe=i==="local"&&fe&&t?hf():"";return r.useEffect(()=>{xe&&(h(!0),O(!0),g(xe),q(!0,!0,!1),ie.current=!0)},[xe,O,q,g,h,ie]),r.useEffect(()=>{if(i!=="local"||!t||typeof window>"u")return;const oe=()=>{Me()},le=()=>{document.visibilityState==="visible"&&oe()};window.addEventListener("focus",oe),window.addEventListener("online",oe),document.addEventListener("visibilitychange",le);const Ie=window.setInterval(oe,3e4);return()=>{window.removeEventListener("focus",oe),window.removeEventListener("online",oe),document.removeEventListener("visibilitychange",le),window.clearInterval(Ie)}},[i,t,Me]),{checkAuthSession:Me}}function Tb(e){const t=e.runtimeMode==="cloud",a=!!(e.shouldGateProtectedApiCalls&&t&&!e.authSessionResolved),s=!!(e.shouldGateProtectedApiCalls&&t&&e.authSessionResolved&&e.authRequiredForApi&&!e.isAuthenticated);return{shouldDeferProtectedApiCalls:a,shouldBlockProtectedApiCalls:s,canCallProtectedApi:!(a||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(a=>typeof a=="string"&&a.trim().length>0).map(a=>a.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 In(){return typeof performance<"u"?performance.now():Date.now()}function Mb(e){const{shouldDeferProtectedApiCalls:t,shouldBlockProtectedApiCalls:a,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:x,fetchInitiativeTemplates:I,loadAvailableEnvironments:C,setReferenceDataLoaded:D,setCustomCategories:U,setCustomTypes:L,setPriorities:X,setTaxonomies:me,setTaxonomyDisplayLabels:se,setConfigLoaded:ae,hasLoadedUiStateRef:O,currentWorkspaceIdRef:_,referenceDataRequestRef:de,referenceDataAbortRef:ke,bootstrapConfigAbortRef:Y,workspaceListAbortRef:P,assigneeOptionsAbortRef:z,workspaceListHydratedRef:ie,setAvailableWorkspaces:fe,runtimeMode:q,applyResolvedWorkspaceId:Me,workspaceSwitchingEnabled:xe,authSessionResolved:oe,isAuthenticated:le,authUserId:Ie,authUserAvatarUrl:Ee,setHydratedWorkspaceRole:je,setAssigneeOptions:Pe,setAssigneeOptionsLoaded:K,commitCurrentWorkspaceId:A,currentWorkspaceId:b,workspaceSelectionScope:R,abortWorkspaceScopedRequests:F,setWorkspaceBootstrapPending:Q,checkAuthSession:M,lastConfigRefreshKeyRef:$,lastAssigneeOptionsLoadKeyRef:be,lastWorkspaceSyncStateLoadKeyRef:H,lastTaskSurfaceLoadKeyRef:ce,lastSettingsSurfaceLoadKeyRef:he,isOpen:G,activeTab:re,showArchive:ue,taskScope:Re,settingsSection:Te,workspaceBootstrapPending:De,fetchTasks:Oe,fetchArchive:vt,fetchPlanningEntities:st,refreshTaskCollections:kt,loadWorkspaceSyncState:Ye,archiveBootstrapTimerRef:_t,hasBootstrappedDataRef:dt}=e,Qe=r.useCallback(async We=>{const tt=We?.ignoreAuthGuard===!0,Fe=We?.force===!0;if(!tt&&(t||a)){Ut("bootstrap_reference_data_skipped",{reason:a?"auth_blocked":"auth_deferred",runtimeMode:q,workspaceId:String(s().workspaceId||"").trim()||"default",force:Fe});return}const Ze=s(),St=String(Ze.workspaceId||"").trim()||"default";if(!(q!=="cloud"||!oe||!le||St!==""&&St!=="default")){Ut("bootstrap_reference_data_skipped",{reason:"workspace_unresolved",runtimeMode:q,workspaceId:St,force:Fe});return}if(!Fe&&de.current?.workspaceId===Ze.workspaceId){Ut("bootstrap_reference_data_reused",{workspaceId:St,force:Fe}),await de.current.promise;return}D(!1);const te=In(),Le=new AbortController;ke.current=Le;const Ct=(async()=>{await Promise.allSettled([(async()=>{let jt="empty-taxonomy-state";const Wt=await fetch("/api/taskforce/taxonomy-state",{signal:Le.signal});if(!Wt.ok)return;const Ge=await Wt.json().catch(()=>({}));if(Nb(Ge))jt="taxonomy-state";else{jt="fallback-endpoints";const[yt,E,c,J]=await Promise.all([fetch("/api/taskforce/categories",{signal:Le.signal}),fetch("/api/taskforce/types",{signal:Le.signal}),fetch("/api/taskforce/priorities",{signal:Le.signal}),fetch("/api/taskforce/taxonomies",{signal:Le.signal})]),[we,Ae,Ke,Je]=await Promise.all([yt.ok?yt.json().catch(()=>({})):Promise.resolve({}),E.ok?E.json().catch(()=>({})):Promise.resolve({}),c.ok?c.json().catch(()=>({})):Promise.resolve({}),J.ok?J.json().catch(()=>({})):Promise.resolve({})]);Ge.categories=we.categories,Ge.types=Ae.types,Ge.priorities=Ke.priorities,Ge.taxonomies=Je.taxonomies}const $t=Pb(Ge);if(o(Ze)){Ut("bootstrap_reference_data_stale_drop",{workspaceId:St,source:jt});return}$t.categories.length>0&&U($t.categories),$t.types.length>0&&L($t.types),$t.priorities.length>0&&X($t.priorities),me($t.taxonomies),se($t.displayLabels||{}),Ut("bootstrap_reference_data_source",{workspaceId:St,source:jt,categories:$t.categories.length,types:$t.types.length,priorities:$t.priorities.length,taxonomies:$t.taxonomies.length})})(),x(),I(),C()]),!o(Ze)&&(D(!0),Ut("bootstrap_reference_data_loaded",{durationMs:Math.max(0,Math.round(In()-te)),workspaceId:St,force:Fe}))})();de.current={workspaceId:Ze.workspaceId,promise:Ct};try{await Ct}finally{de.current?.promise===Ct&&(de.current=null),ke.current===Le&&(ke.current=null)}},[oe,I,x,s,le,o,C,ke,de,q,U,L,X,D,me,se,a,t]),Rt=r.useCallback(async We=>{if(!(We?.ignoreAuthGuard===!0)&&(t||a))return;g("config");const Fe=s(),Ze=In(),St=new AbortController;Y.current=St;try{const ot=await m("/api/taskforce/config",void 0,Ou(q),{signal:St.signal});if(l(Fe))return;if(ot.status===401){y(),ae(!0);return}let te="";if(ot.ok){const Le=await ot.json();if(l(Fe))return;te=typeof Le?.workspaceId=="string"&&Le.workspaceId.trim().length>0?Le.workspaceId.trim():"",k(Le)}if(l(Fe)){const Le=String(_.current||"default").trim()||"default";if(!te||Le!==te)return}if(O.current||(O.current=!0,await S(te||Fe.workspaceId)),l(Fe)){const Le=String(_.current||"default").trim()||"default";if(!te||Le!==te)return}ae(!0),g("ready"),Ut("bootstrap_config_loaded",{durationMs:Math.max(0,Math.round(In()-Ze)),status:ot.status,workspaceId:te||Fe.workspaceId}),h()}catch(ot){if(i(ot)||l(Fe))return;O.current||(O.current=!0,await S(Fe.workspaceId)),v(d(ot)?"Startup checks timed out.":"Unable to finish startup checks."),ae(!0),Ut("bootstrap_config_failed",{durationMs:Math.max(0,Math.round(In()-Ze)),workspaceId:Fe.workspaceId,error:ot instanceof Error?ot.message:String(ot)})}finally{Y.current===St&&(Y.current=null)}},[k,Y,_,h,m,s,y,O,i,d,l,S,g,v,q,ae,a,t]),ee=r.useCallback(async We=>{await Rt(We),await Qe(We)},[Rt,Qe]),ze=r.useCallback(()=>{typeof window>"u"||(_t.current!==null&&window.clearTimeout(_t.current),_t.current=window.setTimeout(()=>{_t.current=null,vt(!0).then(()=>Ut("bootstrap_archive_loaded_deferred",{}))},1500))},[_t,vt]),ft=r.useCallback(async()=>{if(!xe)return fe([]),ie.current=!1,{success:!0,workspaces:[]};const We=s(),tt=In(),Fe=new AbortController;P.current=Fe;try{const Ze=await m("/api/taskforce/workspaces",{method:"GET",credentials:"include"},Ou(q),{signal:Fe.signal});if(l(We))return{success:!1,error:"Workspace changed while loading workspaces."};if(Ze.status===401)return fe([]),ie.current=!1,{success:!1,error:"Authentication required."};const St=await Ze.json().catch(()=>({}));if(l(We))return{success:!1,error:"Workspace changed while loading workspaces."};if(!Ze.ok||St?.success===!1)return fe([]),ie.current=!1,{success:!1,error:St?.error||`Failed to load workspaces (${Ze.status})`};const ot=Array.isArray(St?.workspaces)?St.workspaces.map(te=>({id:String(te?.id||"").trim(),name:String(te?.name||"").trim(),role:String(te?.role||"member").trim().toLowerCase(),slug:typeof te?.slug=="string"?te.slug:null,description:typeof te?.description=="string"?te.description:null,status:typeof te?.status=="string"?te.status:"",betaAccess:te?.betaAccess===!0})).filter(te=>te.id&&te.name):[];return fe(ot),ie.current=!0,q!=="local"&&typeof St?.currentWorkspaceId=="string"&&St.currentWorkspaceId.trim().length>0&&Me(St.currentWorkspaceId.trim(),{preserveNonDefaultDefault:!0}),Ut("bootstrap_workspaces_loaded",{durationMs:Math.max(0,Math.round(In()-tt)),workspaceId:We.workspaceId,count:ot.length,status:Ze.status}),{success:!0,workspaces:ot}}catch(Ze){return d(Ze)&&v("Startup checks timed out."),fe([]),ie.current=!1,Ut("bootstrap_workspaces_failed",{durationMs:Math.max(0,Math.round(In()-tt)),workspaceId:We.workspaceId,error:Ze instanceof Error?Ze.message:String(Ze)}),{success:!1,error:i(Ze)?"Workspace list request aborted.":"Failed to load workspaces."}}finally{P.current===Fe&&(P.current=null)}},[Me,m,s,i,d,l,v,q,fe,P,ie,xe]),it=r.useCallback(async()=>{const We=s(),tt=In(),Fe=new AbortController;z.current=Fe,K(!1);try{const[Ze,St]=await Promise.all([m("/api/taskforce/workspace/assignee-options",{method:"GET",credentials:"include"},Ou(q),{signal:Fe.signal}),oe&&le?m("/api/taskforce/auth/workspace-members",{method:"GET",credentials:"include"},Ou(q),{signal:Fe.signal}).catch(()=>null):Promise.resolve(null)]);if(o(We))return{success:!1,error:"Workspace changed while loading assignee options."};if(Ze.status===401)return Pe(li()),K(!0),{success:!1,error:"Authentication required."};const ot=await Ze.json().catch(()=>({}));if(o(We))return{success:!1,error:"Workspace changed while loading assignee options."};if(!Ze.ok)return Pe(li()),K(!0),{success:!1,error:ot?.error||`Failed to load assignee options (${Ze.status})`};const te=String(Ie||"").trim(),Le=String(Ee||"").trim(),Ct=(E,c)=>{const J=typeof E?.avatarUrl=="string"&&E.avatarUrl.trim().length>0?E.avatarUrl.trim():"";if(J)return J;const we=String(E?.userId||c||"").trim();return te&&we===te&&Le?Le:null},jt=Array.isArray(ot?.assignees)?ot.assignees:[],Wt=jt.map(E=>{const c=String(E?.value||"").trim(),J=String(E?.kind||"").trim().toLowerCase();return c?J==="agent"||J==="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}:J==="member"||J==="human"?{value:c,label:String(E?.label||c).trim()||c,icon:String(E?.icon||"User"),color:String(E?.color||"#22c55e"),kind:"member",avatarUrl:Ct(E,c)}:null:null}).filter(Boolean),Ge=jt.map(E=>({userId:String(E?.userId||"").trim(),email:String(E?.email||"").trim().toLowerCase(),displayName:typeof E?.displayName=="string"?E.displayName:null,avatarUrl:Ct(E)})).filter(E=>E.userId);let $t=Ge;if(St?.ok){const E=await St.json().catch(()=>({})),c=Array.isArray(E?.users)?E.users:[],J=c.find(Ke=>String(Ke?.userId||"").trim()===te),we=String(J?.role||"").trim().toLowerCase();we==="owner"||we==="admin"||we==="member"||we==="read-only"?je(we):!xe&&c.length===0&&je(null);const Ae=c.map(Ke=>({userId:String(Ke?.userId||"").trim(),email:String(Ke?.email||"").trim().toLowerCase(),displayName:typeof Ke?.displayName=="string"?Ke.displayName:null,avatarUrl:Ct(Ke)})).filter(Ke=>Ke.userId);$t=Array.from(new Map([...Ge,...Ae].map(Ke=>[Ke.userId,Ke])).values())}else!xe&&!Ge.length&&je(null);const yt=vd([...Wt,...cS($t).filter(E=>E.kind==="member")]);return o(We)?{success:!1,error:"Workspace changed while loading assignee options."}:(Pe(yt),K(!0),Ut("bootstrap_assignee_options_loaded",{durationMs:Math.max(0,Math.round(In()-tt)),workspaceId:We.workspaceId,count:yt.length}),{success:!0})}catch(Ze){return o(We)||(Pe(li()),K(!0)),Ut("bootstrap_assignee_options_failed",{durationMs:Math.max(0,Math.round(In()-tt)),workspaceId:We.workspaceId,error:Ze instanceof Error?Ze.message:String(Ze)}),{success:!1,error:i(Ze)?"Assignee options request aborted.":"Failed to load assignee options."}}finally{z.current===Fe&&(z.current=null)}},[z,oe,Ee,Ie,m,s,i,le,o,q,Pe,K,je,xe]),Et=r.useCallback(async(We,tt)=>{if(!xe)return{success:!1,error:"Workspace switching is unavailable in local mode.",code:"WORKSPACE_SWITCHING_DISABLED"};const Fe=String(We||"").trim();if(!Fe)return{success:!1,error:"workspaceId is required."};const Ze=String(_.current||"").trim()||"default",St=In();try{Ut("bootstrap_workspace_switch_started",{fromWorkspaceId:Ze,toWorkspaceId:Fe,hydrate:tt?.hydrate!==!1});const ot=await fetch("/api/taskforce/session/workspace",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:Fe})}),te=await ot.json().catch(()=>({}));if(!ot.ok||te?.success===!1)return{success:!1,error:te?.error||`Failed to switch workspace (${ot.status})`,code:te?.code};A(Fe,{clearExplicitSelection:!1}),F(),Q(!0),g("workspace");const Le=await M({force:!0});return tt?.hydrate===!1?await ft():($.current=`${q}:${Fe}:${R}`,be.current=`${q}:${Le?"auth":"guest"}:${Fe}`,H.current=Fe,G&&re==="tasks"&&(ce.current=`${Fe}:${re}:${ue?"archive":"active"}:${Re}`),G&&re==="settings"&&(he.current=`${Fe}:${re}:${Te}`),await Promise.all([ee(),ft(),kt({isSilent:!1}),Ye()]),st({ignoreAuthGuard:!0})),Ut("bootstrap_workspace_switch_completed",{fromWorkspaceId:Ze,toWorkspaceId:Fe,hydrate:tt?.hydrate!==!1,durationMs:Math.max(0,Math.round(In()-St))}),{success:!0}}catch(ot){return Ut("bootstrap_workspace_switch_failed",{fromWorkspaceId:Ze,toWorkspaceId:Fe,hydrate:tt?.hydrate!==!1,durationMs:Math.max(0,Math.round(In()-St)),error:ot instanceof Error?ot.message:String(ot)}),{success:!1,error:"Failed to switch workspace."}}finally{Q(!1)}},[F,re,M,A,_,ee,st,ft,G,be,$,he,ce,H,Ye,g,kt,q,Te,Q,ue,Re,R,xe]),ht=r.useCallback(async We=>{g("workspace"),Q(!0);try{if(!xe){const Ct=String(b||"").trim()||"default";return A(Ct),{success:!0,workspaceSetupRequired:!1,workspaceId:Ct}}const tt=String(We?.preferredWorkspaceId||"").trim(),Fe=Wp(R),Ze=await ft();if(!Ze.success)return{success:!1,workspaceSetupRequired:!1,error:Ze.error||"Failed to load workspaces after authentication."};const St=Array.isArray(Ze.workspaces)?Ze.workspaces:[];if(St.length===0)return A("default"),{success:!0,workspaceSetupRequired:!0};const ot=new Set(St.map(Ct=>String(Ct.id||"").trim()).filter(Boolean)),te=String(_.current||"").trim(),Le=(tt&&ot.has(tt)?tt:"")||(te&&ot.has(te)?te:"")||(Fe&&ot.has(Fe)?Fe:"")||String(St[0]?.id||"").trim();if(!Le)return A("default"),{success:!0,workspaceSetupRequired:!0};if(te!==Le){const Ct=await Et(Le,{hydrate:!1});if(!Ct.success)return{success:!1,workspaceSetupRequired:!1,error:Ct.error||"Failed to set workspace after authentication.",code:Ct.code}}else A(Le);return{success:!0,workspaceSetupRequired:!1,workspaceId:Le}}catch{return v("Unable to resolve workspace access."),{success:!1,workspaceSetupRequired:!1,error:"Failed to resolve workspace access."}}finally{Q(!1)}},[A,b,_,ft,g,v,Q,Et,R,xe]),Ot=r.useCallback(async()=>{g("auth");const We=In();Ut("bootstrap_retry_started",{workspaceId:String(_.current||"default").trim()||"default"});const tt=await M({force:!0});let Fe=!1;if(xe&&tt){const Ze=await ht();if(!Ze.success||Ze.workspaceSetupRequired){await ee({ignoreAuthGuard:!0}),Ut("bootstrap_retry_completed",{workspaceId:String(_.current||"default").trim()||"default",authenticated:tt,workspaceSetupRequired:Ze.workspaceSetupRequired===!0,success:Ze.success,durationMs:Math.max(0,Math.round(In()-We))});return}}Q(!0);try{await ee({ignoreAuthGuard:!0}),tt&&!Fe&&(await Promise.all([Oe(!0,{ignoreAuthGuard:!0}),Qe({ignoreAuthGuard:!0,force:!0})]),st({ignoreAuthGuard:!0})),Ut("bootstrap_retry_completed",{workspaceId:String(_.current||"default").trim()||"default",authenticated:tt,workspaceSetupRequired:Fe,success:!0,durationMs:Math.max(0,Math.round(In()-We))})}finally{Q(!1)}},[M,_,ee,st,Qe,Oe,g,ht,Q,xe]),Dt=r.useCallback(async We=>{const tt=We?.reason||"initial-load",Fe=We?.ignoreAuthGuard===!0,Ze=We?.tasksSilent!==!1,St=We?.includeDeferredArchive!==!1,ot=In();if(g("auth"),!await M({force:!0}))return await ee({ignoreAuthGuard:!0}),Ut("cloud_bootstrap_completed",{reason:tt,durationMs:Math.max(0,Math.round(In()-ot)),authenticated:!1,workspaceSetupRequired:!1,success:!1}),{success:!1,authenticated:!1,workspaceSetupRequired:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};if(xe){const Le=await ht();if(!Le.success)return await ee({ignoreAuthGuard:!0}),Ut("cloud_bootstrap_completed",{reason:tt,durationMs:Math.max(0,Math.round(In()-ot)),authenticated:!0,workspaceSetupRequired:!1,success:!1,error:Le.error||"Workspace resolution failed."}),{success:!1,authenticated:!0,workspaceSetupRequired:!1,error:Le.error||"Unable to resolve workspace access.",code:Le.code};if(Le.workspaceSetupRequired)return await ee({ignoreAuthGuard:!0}),Ut("cloud_bootstrap_completed",{reason:tt,durationMs:Math.max(0,Math.round(In()-ot)),authenticated:!0,workspaceSetupRequired:!0,success:!0}),{success:!0,authenticated:!0,workspaceSetupRequired:!0}}Q(!0);try{await Rt({ignoreAuthGuard:Fe});const Le=String(_.current||"default").trim()||"default",Ct=In();return Oe(Ze,{ignoreAuthGuard:Fe}).then(()=>{Ut("cloud_bootstrap_tasks_loaded_deferred",{reason:tt,workspaceId:Le,durationMs:Math.max(0,Math.round(In()-Ct))})}).catch(jt=>{Ut("cloud_bootstrap_tasks_deferred_failed",{reason:tt,workspaceId:Le,error:jt instanceof Error?jt.message:String(jt)})}),Qe({ignoreAuthGuard:Fe}).then(()=>{Ut("cloud_bootstrap_reference_data_loaded_deferred",{reason:tt,workspaceId:Le,durationMs:Math.max(0,Math.round(In()-Ct))})}).catch(jt=>{Ut("cloud_bootstrap_reference_data_deferred_failed",{reason:tt,workspaceId:Le,error:jt instanceof Error?jt.message:String(jt)})}),st({ignoreAuthGuard:Fe}),St&&ze(),Ut("cloud_bootstrap_completed",{reason:tt,durationMs:Math.max(0,Math.round(In()-ot)),authenticated:!0,workspaceSetupRequired:!1,success:!0,workspaceId:Le}),{success:!0,authenticated:!0,workspaceSetupRequired:!1}}finally{Q(!1)}},[M,_,Rt,st,Qe,Oe,g,ht,ze,Q,xe]);return r.useEffect(()=>{!t&&!a&&!dt.current&&(dt.current=!0,(async()=>{const We=In();if(q==="cloud"&&oe&&le){const tt=await Dt({reason:"initial-load",tasksSilent:!1,includeDeferredArchive:!0});if(!tt.success||tt.workspaceSetupRequired)return}else await Promise.all([Rt(),Oe(!1),Qe()]),st();q!=="cloud"&&ze(),Ut("bootstrap_initial_load_completed",{durationMs:Math.max(0,Math.round(In()-We)),runtimeMode:q,workspaceId:String(_.current||"default").trim()||"default"})})())},[oe,_,Rt,st,Qe,Oe,dt,le,Dt,q,ze,a,t]),r.useEffect(()=>{if(t||a||De||R==="bootstrap"||!dt.current)return;const We=`${q}:${b}:${R}`;$.current!==We&&($.current=We,ee())},[b,ee,dt,$,q,a,t,De,R]),r.useEffect(()=>{if(t||a||De)return;const We=b;H.current!==We&&(H.current=We,Ye())},[b,H,Ye,a,t,De]),r.useEffect(()=>{if(q!=="cloud"||!oe||!le){q!=="cloud"&&fe([]),ie.current=!1;return}De||!dt.current||ie.current||ft()},[oe,ft,dt,le,q,fe,De,ie]),{fetchReferenceData:Qe,fetchBootstrapConfig:Rt,fetchConfig:ee,fetchWorkspaces:ft,fetchAssigneeOptions:it,switchWorkspace:Et,resolveWorkspaceAfterAuth:ht,retryBootstrapChecks:Ot,runCloudBootstrap:Dt}}function Eb({isOpen:e,authBlocked:t,authRequiredForApi:a,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:a,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 x=await fetch("/api/taskforce/data-version");if(!x.ok)return;const I=await x.json(),C=Number(I?.dataVersion);if(!Number.isFinite(C))return;if(y.current===null){y.current=C;return}C!==y.current&&(y.current=C,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,a,s,o,l,i,d,m,y,k])}const Db={};function si(e,t){const a=e.findIndex(s=>s.id===t.id);return a===-1?[...e,t]:e.map((s,o)=>o===a?t:s)}const No=mf(Db),Sp=(()=>{const e=No.baseUrl,t=No.cloudAuthBaseUrl;if(t)return t;const a=No.apiBaseUrl;return a||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 qp(e){return typeof e=="string"&&Lb.has(e)}function wp(e,t){return t.aborted?e===t.reason||qp(e)||qp(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 Ih(e){const t=e&&typeof e=="object"?e:{},a=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:a,workstreams:s,workstreamTaskSummaries:o}}function Bb({config:e={},initialTaskId:t,onTaskCountChange:a,onClose:s}){const o={..._v,...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",x=typeof window<"u"&&!v,[I,C]=r.useState({cloudEnvironment:"",cloudBaseUrl:"",cloudMcpBaseUrl:"",baseUrl:"",apiBaseUrl:"",cloudAuthBaseUrl:"",wsBaseUrl:"",cloudAuthViaLocalProxy:!1,authSource:"",workspaceMode:"",workspaceSwitchingEnabled:null}),[D,U]=r.useState(!1),L=r.useCallback(f=>typeof f=="string"?f.trim().replace(/\/+$/,""):"",[]);r.useEffect(()=>{if(typeof window>"u"){U(!0);return}let f=!1;return(async()=>{try{const B=await fetch("/api/taskforce/auth/runtime-config",{method:"GET",credentials:"include"});if(!B.ok)return;const V=await B.json().catch(()=>({})),Z=V?.config&&typeof V.config=="object"?V.config:{};if(f)return;const Be=String(Z.runtimeMode||"").trim().toLowerCase()==="cloud"?"cloud":"local",Ve=String(Z.workspaceMode||"").trim(),fn=Ve==="single-local"||Ve==="multi-cloud"?Ve:Be==="cloud"?"multi-cloud":"single-local";R(Be),C({cloudEnvironment:typeof Z.cloudEnvironment=="string"?String(Z.cloudEnvironment).trim().toLowerCase():"",cloudBaseUrl:L(Z.cloudBaseUrl),cloudMcpBaseUrl:L(Z.cloudMcpBaseUrl),baseUrl:L(Z.baseUrl),apiBaseUrl:L(Z.apiBaseUrl),cloudAuthBaseUrl:L(Z.cloudAuthBaseUrl),wsBaseUrl:L(Z.wsBaseUrl),cloudAuthViaLocalProxy:!!Z.cloudAuthViaLocalProxy,authSource:"cloud",workspaceMode:fn,workspaceSwitchingEnabled:typeof Z.workspaceSwitchingEnabled=="boolean"?!!Z.workspaceSwitchingEnabled:fn==="multi-cloud"})}catch{}finally{f||U(!0)}})(),()=>{f=!0}},[L]);const X=typeof window>"u"?"":v?Sp:"",me=L(No.baseUrl),se=L(No.apiBaseUrl),ae=L(No.cloudBaseUrl),O=L(No.cloudMcpBaseUrl),_=L(No.cloudAuthBaseUrl),de=L(No.wsBaseUrl),ke=L(m),Y=L(y),P=L(k),z=I.apiBaseUrl||I.baseUrl,fe=ke||z||(v?"":se||me)||"",q=Y||_||me,Me=I.cloudAuthBaseUrl||I.baseUrl,oe=((v?Me||q:q||Me)||fe||X).trim().replace(/\/+$/,""),le=L(eS(I.cloudMcpBaseUrl||I.cloudAuthBaseUrl||I.cloudBaseUrl||P||Y||O||_||ae||oe)),Ie=(I.cloudMcpBaseUrl||P||le||I.cloudBaseUrl||O||ae||oe||X).trim().replace(/\/+$/,""),Ee=!x&&!!oe&&!fe,je=x||D&&!!(oe||fe),Pe=je&&!Ee,K=!!(oe||fe||x),A=x?"cloud":"local",[b,R]=r.useState(()=>A),F=A==="local"&&v&&K?hf():"",Q=F.length>0,M=r.useCallback(f=>!f||/^https?:\/\//i.test(f)||!fe||!f.startsWith("/")?f:`${fe}${f}`,[fe]),$=r.useCallback(f=>{if(!f||/^https?:\/\//i.test(f)||!f.startsWith("/"))return f;const B=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(!x&&B&&(b==="cloud"||!D||I.cloudAuthViaLocalProxy||I.workspaceMode==="multi-cloud"))return f;const V=oe||fe;if(V){const Z=`${V}${f}`;if(typeof window<"u"&&!x&&B)try{if(new URL(Z,window.location.origin).origin===window.location.origin)return`${Sp}${f}`}catch{return`${Sp}${f}`}return Z}return f},[D,I.cloudAuthViaLocalProxy,I.workspaceMode,oe,fe,x,b]),be=r.useCallback(f=>{const B=String(f||"").trim()||"/taskforce-ws",V=B.startsWith("/")?B:`/${B}`,Z=String(S||I.wsBaseUrl||de||fe||"").trim().replace(/\/+$/,""),He=typeof window<"u"?window.location.origin:"",Be=Z||He;if(!Be)return"";try{const Ve=new URL(V,Be);return Ve.protocol==="https:"&&(Ve.protocol="wss:"),Ve.protocol==="http:"&&(Ve.protocol="ws:"),Ve.toString()}catch{return""}},[S,I.wsBaseUrl,de,fe]),[H,ce]=r.useState("tasks"),[he,G]=r.useState(!1),[re,ue]=r.useState(!1),[Re,Te]=r.useState("open"),[De,Oe]=r.useState(Kc(o.theme)||rm),[vt,st]=r.useState(Kc(o.theme)||rm),[kt,Ye]=r.useState(!0),[_t]=r.useState(".taskforce"),dt=!1,[Qe,Rt]=r.useState(!1),[ee,ze]=r.useState([]),[ft,it]=r.useState([]),[Et,ht]=r.useState(""),[Ot,Dt]=r.useState(null),[We,tt]=r.useState(null),[Fe,Ze]=r.useState(""),[St,ot]=r.useState(""),te=r.useMemo(()=>qv({projectRoot:Fe,runtimeMode:A}),[Fe,A]),[Le,Ct]=r.useState(""),[jt,Wt]=r.useState(""),Ge=Jv(b),$t=I.workspaceMode==="single-local"||I.workspaceMode==="multi-cloud"?I.workspaceMode:Ge.workspaceMode,yt=typeof I.workspaceSwitchingEnabled=="boolean"?I.workspaceSwitchingEnabled:Ge.workspaceSwitchingEnabled,[E,c]=r.useState(!1),[J,we]=r.useState(!1),[Ae,Ke]=r.useState(Q),[Je,Ne]=r.useState(Q?F:"anonymous"),[zt,Jt]=r.useState(""),[Pt,Ft]=r.useState(""),[Lt,Ht]=r.useState(""),[rn,Vt]=r.useState([]),[Vn,qn]=r.useState(""),[Kn,ca]=r.useState(!0),[ye,rt]=r.useState(null),[Ce,Nt]=r.useState(()=>{if(A==="local")return"default";const f=Wp(te);return f&&f.toLowerCase()!=="default"?f:"default"}),pt=r.useMemo(()=>Kv({projectRoot:Fe,runtimeMode:b,workspaceId:Ce}),[Fe,b,Ce]),[wt,Cn]=r.useState([]),[kn,cn]=r.useState(()=>li()),[ln,$n]=r.useState(!1),[gt,rr]=r.useState(Q),[mn,tn]=r.useState("idle"),[bn,Kt]=r.useState(null),[vr,Rn]=r.useState(null),Xn=r.useRef(null),jn=r.useRef(0),Zt=r.useRef(0),Zn=r.useRef(Q),nn=r.useRef(Ce),la=r.useRef(null),ya=r.useRef(0),Sr=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"),[dn,wr]=r.useState(0),qr=r.useRef(null),Va=r.useRef(null),ka=r.useRef(null),Un=r.useRef(null),br=r.useRef(null),da=r.useRef(null),Dn=r.useRef(null),Nn=r.useCallback((f,B)=>{const V=String(f||"").trim();if(!V)return;const Z=String(nn.current||"").trim();Z&&Z!==V&&(ya.current+=1,wr(ya.current)),nn.current=V,B?.clearExplicitSelection!==!1&&(la.current=null),Nt(V)},[]);r.useEffect(()=>{nn.current=Ce},[Ce]);const xr=r.useCallback(f=>{const B=String(f||"").trim();B&&Nt(()=>{const V=String(la.current||"").trim();let Z=B;return V&&V!==B&&(Z=V),nn.current=Z,Z})},[]),At=r.useCallback(()=>({workspaceId:String(nn.current||"default").trim()||"default",epoch:ya.current}),[]),va=r.useCallback(f=>(String(nn.current||"default").trim()||"default")!==f.workspaceId||ya.current!==f.epoch,[]),Sa=r.useCallback(f=>ya.current!==f.epoch,[]),ua=r.useCallback(f=>Ju(f)||qp(f),[]),zn=r.useCallback(()=>{[qr,Va,ka,Un,br,da].forEach(f=>{f.current?.abort("workspace-transition"),f.current=null}),Dn.current!==null&&typeof window<"u"&&(window.clearTimeout(Dn.current),Dn.current=null),Nc.current=null},[]),sr=r.useMemo(()=>Tb({shouldGateProtectedApiCalls:Pe,runtimeMode:b,authSessionResolved:gt,authRequiredForApi:E,isAuthenticated:Ae}),[Pe,b,gt,E,Ae]),Pn=sr.shouldDeferProtectedApiCalls,vn=sr.shouldBlockProtectedApiCalls,[La,wa]=r.useState(null),[Sn,Yt]=r.useState(null),[ba,Hn]=r.useState(!1),[Mn,Ba]=r.useState("unknown"),[En,Mr]=r.useState(null),[an,un]=r.useState(o.shortcut||"Alt+T"),[ea,or]=r.useState(o.priorities||[]),[Er]=r.useState(Ig()),[_r,Xt]=r.useState(""),[xa,_a]=r.useState(!1),[Cr,Ar]=r.useState(!1),[qa,Ka]=r.useState(!0),[ir,ta]=r.useState(()=>Hv()),Ca=r.useMemo(()=>zv(),[]),[Za,na]=r.useState(()=>{try{return(Intl.DateTimeFormat().resolvedOptions().locale||"").toLowerCase().startsWith("en-us")?"sunday":"monday"}catch{return"monday"}}),[cs,Yn]=r.useState(!1),[Kr,Dr]=r.useState(!0),[Aa,cr]=r.useState(!0),[Wa,ma]=r.useState(""),[lr,Zr]=r.useState(null);_b({currentWorkspaceIdRef:nn,resolveApiUrl:M,runtimeMode:b});const{availableWorkflows:ls,initiativeTemplates:et,fetchWorkflows:Bt,fetchInitiativeTemplates:Ln,fetchWorkflowTemplate:An,fetchWorkflowOverrideNames:wn,saveWorkflowTemplateDraft:Ia,resetWorkflowTemplateDraft:Ya}=Yw({shouldDeferProtectedApiCalls:Pn,shouldBlockProtectedApiCalls:vn}),{zenMode:ds,setZenModeState:Fa,toggleZenMode:Oa}=Jw(),{exportEnvironment:Ta,setExportEnvironment:Gt,availableEnvironments:$a,loadAvailableEnvironments:pa,exportWorkflowsPath:Bn,setExportWorkflowsPath:Lr,exportingResource:Br,exportResult:dr,handleExportWorkflows:ur}=Vw({storagePath:_t,shouldDeferProtectedApiCalls:Pn,shouldBlockProtectedApiCalls:vn}),[Fs,ra]=r.useState(!1),[fa,so]=r.useState(null),{uiNotice:Wr,pushNotice:mr,clearNotice:W}=Gw(),[$e,It]=r.useState([]),Mt=r.useRef(null),[Gn,Ja]=r.useState(0),Yr=r.useCallback(f=>!f||!Fe?f:f.startsWith(Fe)?f.slice(Fe.length).replace(/^[/\\]+/,""):f,[Fe]),[Wn,Fr]=r.useState([]),[Fn,T]=r.useState([]),[j,nt]=r.useState([]),[bt,ve]=r.useState([]),[ne,Ra]=r.useState([]),[ja,ha]=r.useState([]),[Os,Jr]=r.useState(!1),[Na,$s]=r.useState(null),[oo,Lo]=r.useState(!1),[us,di]=r.useState([]),[Pa,io]=r.useState(!1),[ui,mi]=r.useState({}),pi=r.useRef({authSessionResolved:!1,configLoaded:!1,workspaceBootstrapPending:!1});r.useEffect(()=>{pi.current={authSessionResolved:gt,configLoaded:Pa,workspaceBootstrapPending:ln}},[gt,Pa,ln]);const Or=r.useCallback(f=>{tn(f),f!=="ready"&&(Kt(null),Rn(Date.now()))},[]),Bo=r.useCallback(f=>{const B=pi.current;B.authSessionResolved&&B.configLoaded&&!B.workspaceBootstrapPending||(tn("stalled"),Kt(f),Rn(V=>V??Date.now()))},[]),ms=r.useCallback(async(f,B,V=od,Z)=>{const He=new AbortController,Be=Z?.signal,Ve=Number(V)>0?Number(V):od,fn=At(),hn=f.startsWith("/api/taskforce/")?hp(B,ah({workspaceId:fn.workspaceId,epoch:fn.epoch,seed:Sr.current})):B,On=typeof window<"u"?window.setTimeout(()=>He.abort("bootstrap-timeout"),Ve):null,xn=()=>{He.abort(Be?.reason||"external-abort")};Be&&(Be.aborted?xn():Be.addEventListener("abort",xn,{once:!0}));try{return await fetch(f,{...hn||{},signal:He.signal})}catch(Ea){throw Be?.aborted&&wp(Ea,Be)?Be.reason||Ea:Ju(Ea)||Ea==="bootstrap-timeout"?Ah(Ve):Ea}finally{Be&&Be.removeEventListener("abort",xn),On!==null&&typeof window<"u"&&window.clearTimeout(On)}},[At]),rc=r.useMemo(()=>{const f=!gt,B=mn==="stalled",V=gt&&(!Pa||ln||B);let Z="Checking account, workspace access, and setup status...";return mn==="auth"?Z="Verifying session...":mn==="workspace"?Z="Resolving workspace access...":mn==="config"&&(Z="Loading configuration..."),{phase:mn,auth:{resolved:gt,pending:f},config:{loaded:Pa},workspace:{pending:ln},pending:f||V,authPending:f,appPending:V,ready:gt&&Pa&&!ln&&mn==="ready",stalled:B,subtitle:Z,error:bn,startedAt:vr}},[gt,bn,mn,vr,Pa,ln]),Qr=r.useCallback(f=>String(f?.name||"")==="BootstrapTimeoutError",[]),[co,Is]=r.useState([]),[Ts,lo]=r.useState({}),[ps,fi]=r.useState(o.taxonomies||[]),gn=r.useMemo(()=>(us.length>0?us:l||[]).map(B=>typeof B=="string"?{value:B.toLowerCase().replace(/\s+/g,"-"),label:B}:B).sort((B,V)=>B.label.localeCompare(V.label)),[us,l]),sc=r.useMemo(()=>({categories:gn,types:co,priorities:ea,taxonomies:ps,displayLabels:Ts}),[gn,co,ea,ps,Ts]);r.useMemo(()=>gn.filter(f=>!f.disabled),[gn]);const Qa=r.useCallback(f=>f.find(V=>V.value==="default"||V.value==="general"||V.label==="General"||V.value==="Taskforce"||V.label==="Taskforce")?.value||f[0]?.value||"default",[]),sn=co.length>0?co:i,[uo,Xr]=r.useState(!1),[mo,$r]=r.useState(""),oc="Authentication required. Sign in to continue.",[Rs,pr]=r.useState(!1),[Us,sa]=r.useState(!1),fs=r.useCallback(()=>{we(b==="cloud"),Ke(!1),Ft(""),Ht(""),qn(""),$r(oc)},[oc,b]),{recentlyChangedTaskIds:zs,fetchTasks:po,fetchArchive:Hs,refreshTaskCollections:Wo,refreshTaskCollectionsFromInvalidation:Gs,mergeTaskFromServer:fo}=Xw({tasks:Wn,archivedTasks:Fn,setTasks:Fr,setArchivedTasks:T,setLoadingTasks:Jr,getCurrentWorkspaceId:()=>nn.current,workspaceResetKey:`${Ce}:${dn}`,shouldDeferProtectedApiCalls:Pn,shouldBlockProtectedApiCalls:vn,handleUnauthorized:fs,authRequiredForApi:E});r.useEffect(()=>{dn!==0&&(Nc.current=null,Pi.current="",Ko.current="",Mi.current="",Rc.current="",Ps.current="",Ei.current="",Ms(!1),pr(!1),cn(li()),sa(!1),ha([]),Fr([]),T([]),Jr(!1),Ma.current!==null&&typeof window<"u"&&(window.clearTimeout(Ma.current),Ma.current=null),vs.current!==null&&typeof window<"u"&&(window.clearTimeout(vs.current),vs.current=null))},[T,Jr,Fr,dn]);const fr=r.useCallback(async(f=!1,B)=>{if(!(B?.ignoreAuthGuard===!0)&&(Pn||vn))return;f||Jr(!0);const Z=At(),He=new AbortController;br.current=He;try{let Be=await fetch("/api/taskforce/deleted",{signal:He.signal});if(Be.status===404&&(Be=await fetch("/api/taskforce/trash",{signal:He.signal})),Be.status===401){fs(),ha([]);return}if(Be.status===404){ha([]);return}if(Be.ok){const Ve=await Be.json();if(va(Z))return;const fn=Array.isArray(Ve?.deleted)?Ve.deleted.map(hn=>{const On=hn?.taskSnapshot&&typeof hn.taskSnapshot=="object"?Do(hn.taskSnapshot):null;return On?{...hn,taskSnapshot:On}:null}).filter(hn=>!!hn):[];ha(fn)}}catch(Be){if(wp(Be,He.signal)||ua(Be))return;console.error("[Taskforce] Failed to fetch deleted tasks:",Be)}finally{br.current===He&&(br.current=null),f||Jr(!1)}},[At,fs,ua,va,Pn,vn]),pn=r.useCallback(async f=>{if(!(f?.ignoreAuthGuard===!0)&&(Pn||vn))return;const V=At();da.current?.abort("superseded"),Dn.current!==null&&typeof window<"u"&&(window.clearTimeout(Dn.current),Dn.current=null);const Z=new AbortController;da.current=Z;try{const He=ah({workspaceId:V.workspaceId,epoch:V.epoch,seed:Sr.current}),Be=async hn=>{if(typeof window>"u")return fetch(hn,hp({signal:Z.signal},He));const On=new AbortController,xn=window.setTimeout(()=>On.abort("planning-timeout"),$u),Ea=()=>On.abort(Z.signal.reason||"external-abort");Z.signal.aborted?Ea():Z.signal.addEventListener("abort",Ea,{once:!0});try{return await fetch(hn,hp({signal:On.signal},He))}catch(Pr){if(Z.signal.aborted)throw Z.signal.reason||Pr;if(Ju(Pr)||Pr==="planning-timeout")return null;throw Pr}finally{window.clearTimeout(xn),Z.signal.removeEventListener("abort",Ea)}};let Ve=null;const fn=await Be("/api/taskforce/planning/bootstrap");if(fn?.status===401){fs(),nt([]),ve([]),Ra([]);return}if(fn===null)throw Ah($u);if(fn.ok)Ve=Ih(await fn.json().catch(()=>({})));else{const[hn,On]=await Promise.all([Be("/api/taskforce/initiatives"),Be("/api/taskforce/workstreams")]);if(!hn||!On)throw new Error("Planning endpoints timed out during startup.");if(hn.status===401||On.status===401){fs(),nt([]),ve([]),Ra([]);return}const[xn,Ea]=await Promise.all([hn.ok?hn.json().catch(()=>[]):[],On.ok?On.json().catch(()=>[]):[]]);Ve=Ih({initiatives:xn,workstreams:Ea,workstreamTaskSummaries:[]})}if(va(V))return;nt(Ve.initiatives),ve(Ve.workstreams),Ra(Ve.workstreamTaskSummaries)}catch(He){if(wp(He,Z.signal)||ua(He))return;Qr(He)?(Ut("planning_bootstrap_timeout",{workspaceId:V.workspaceId,epoch:V.epoch,timeoutMs:$u}),console.warn("[Taskforce] Planning bootstrap timed out during startup; retrying in background.")):console.error("[Taskforce] Failed to fetch planning entities:",He),typeof window<"u"&&!va(V)&&j.length===0&&bt.length===0&&(Dn.current=window.setTimeout(()=>{Dn.current=null,pn(f)},3e3))}finally{da.current===Z&&(da.current=null)}},[od,$u,j.length,At,fs,ua,va,Pn,vn,bt.length]),aa=r.useCallback(async(f=!1,B)=>{await po(f,B)},[po]),Xa=r.useCallback(async(f=!1,B)=>{await Hs(f,B)},[Hs]),es=r.useCallback(async f=>{const B=f?.isSilent!==!1,V=f?.ignoreAuthGuard===!0;await Promise.all([Wo({isSilent:B,ignoreAuthGuard:V}),fr(B,{ignoreAuthGuard:V}),pn({ignoreAuthGuard:V})])},[fr,pn,Wo]),hi=r.useCallback(async()=>{await Gs(),await fr(!0),await pn()},[fr,pn,Gs]),Vs=r.useRef(()=>{}),ic=r.useRef(()=>{}),sl=r.useRef(async()=>!1),oa=r.useCallback(f=>sl.current(f),[]),{userGlobalSyncStatus:ho,setUserGlobalSyncStatus:Fo,userGlobalSyncError:go,setUserGlobalSyncError:Oo,workspaceLastPullAt:Nm,workspaceLastPushAt:ol,workspaceLastErrorAt:Pm,workspaceLastErrorMessage:il,workspaceLastSuccessfulSyncAt:er,workspaceCloudSyncEnabled:hs,workspaceSyncPhase:yo,workspaceSyncSetupIntent:gi,workspaceSyncStatus:Mm,workspaceSyncSummary:Cd,workspaceSyncRecommendedAction:$o,workspaceSyncBusy:Em,workspaceSyncPendingChanges:Ad,workspacePendingSignatureRef:Id,workspaceDeletedTaskIdsRef:qs,workspaceDeletedTaskWatermarksRef:Td,loadWorkspaceSyncState:cl,applyWorkspaceSyncStateSnapshot:Rd,syncUserGlobalSettings:cc,buildWorkspaceSyncSignature:ll,pushWorkspaceChangesToCloud:Uo,saveWorkspaceCloudSyncSettings:ko,retryUserGlobalSettingsSync:lc,retryWorkspaceCloudSync:gs,resetWorkspaceSyncCursorAndPull:yi,getWorkspaceSyncDiagnostics:zo}=zw({currentWorkspaceId:Ce,cloudAuthConfigured:K,runtimeMode:b,authSessionResolved:gt,isAuthenticated:Ae,authUserId:Je,projectName:St,resolveCloudAuthUrl:$,resolveWebSocketUrl:be,realtimeSyncEnabled:ba,tasks:Wn,archivedTasks:Fn,deletedTasks:ja,initiatives:j,workstreams:bt,taxonomies:ps,taxonomyState:Rs?sc:void 0,setupState:La,globalTheme:vt,locale:ir,globalWeekStartsOn:Za,themeUseGlobalDefault:kt,setTasks:Fr,setArchivedTasks:T,setAuthBlocked:we,setIsAuthenticated:Ke,checkAuthSession:oa,setGlobalTheme:st,setCurrentTheme:Oe,setSetupState:wa,setLocale:ta,setGlobalWeekStartsOn:na,fetchPlanningEntities:pn}),ki=r.useCallback((f=sn)=>f.find(B=>String(B.value||"").trim().length>0)?.value||Vr,[sn]),[Ks,Ir]=r.useState(()=>Qa(gn)),[vo,js]=r.useState(()=>ki(sn)),[on,Ho]=r.useState(2),[dc,dl]=r.useState(3),[ul,So]=r.useState("task"),[ml,pl]=r.useState("default"),[fl,vi]=r.useState("unassigned"),[Ua,Ns]=r.useState(""),[jd,Nd]=r.useState(""),[za,Si]=r.useState(""),[wi,bi]=r.useState(""),[uc,hl]=r.useState(""),[Zs,mc]=r.useState([]),[gl,xi]=r.useState([]),[_i,pc]=r.useState(""),[fc,xt]=r.useState({}),Pd=r.useRef(null),[hc,ys]=r.useState(!1),[Go,gc]=r.useState("");r.useEffect(()=>{if(Na)return;const f=String(vo||"").trim();sn.some(V=>String(V.value||"").trim()===f)||js(ki(sn))},[sn,Na,ki,vo]);const{searchQuery:yc,setSearchQuery:Md,filterCategories:kc,setFilterCategories:Tr,filterPriorities:Jn,setFilterPriorities:Ci,filterTypes:yl,setFilterTypes:Ed,filterStatus:wo,setFilterStatus:Dd,filterAssignees:kl,setFilterAssignees:ts,filterAssigneesAllSelected:Ld,setFilterAssigneesAllSelected:Bd,filterTaxonomies:vc,setFilterTaxonomies:Ai,hasInitedFilters:bo,setHasInitedFilters:Ii,sortBy:Sc,setSortBy:wc,sortOrder:vl,setSortOrder:Wd,toggleSortOrder:Vo,groupBy:ks,setGroupBy:tr,emptyColumnMode:xo,setEmptyColumnMode:_o,collapsedCategories:Sl,setCollapsedCategories:wl,clearFilters:Dm,filteredTasks:bc,searchAgnosticTasks:xc,filteredArchive:Fd,groupedTasks:Od}=kb({tasks:Wn,archivedTasks:Fn,activeCategories:gn,activeTypes:sn,priorities:ea,taxonomies:ps,configLoaded:Pa,referenceDataLoaded:Rs,assigneeOptionsLoaded:Us,assigneeOptions:kn});Vs.current=Fo,ic.current=Oo;const{checkAuthSession:bl}=Ib({runtimeConfigReady:D,shouldProbeCloudAuth:je,authSessionResolved:gt,resolveCloudAuthUrl:$,authOnlyCloudMode:Ee,authRequiredError:oc,runtimeMode:b,workspaceSelectionScope:te,markBootstrapPhase:Or,markBootstrapStalled:Bo,setRuntimeMode:R,setAuthRequiredForApi:c,setIsAuthenticated:Ke,setAuthUserId:Ne,setAuthWorkspaceId:Jt,setAuthUserEmail:Ft,setAuthUserDisplayName:Ht,setAuthUserAvatarUrl:qn,setUserGlobalSyncStatus:f=>Vs.current(f),setUserGlobalSyncError:f=>ic.current(f),setHasBetaAccess:ca,setAvailableWorkspaces:Cn,setHydratedWorkspaceRole:rt,setAssigneeOptions:cn,setAuthBlocked:we,setAuthSessionResolved:rr,setError:$r,applyResolvedWorkspaceId:xr,readPersistedWorkspaceId:Wp,authSessionRequestRef:Xn,authSessionEpochRef:jn,authSessionLastCheckedAtRef:Zt,authSessionLastResultRef:Zn,isLoopbackHost:v,setAuthStateReadyRefs:(f,B,V)=>{Ic.current=B,Tc.current=V,qo.current=f}});sl.current=bl;const[xl,Ti]=r.useState("tasks"),[Lm,$d]=r.useState(!1),[Bm,Ri]=r.useState(!1),[_c,Cc]=r.useState(!1),[Ac,ji]=r.useState([]),[Ud,Ni]=r.useState(!1),Wm=r.useRef(null),Ma=r.useRef(null),vs=r.useRef(null),Rr=r.useRef(!1),Ic=r.useRef(gt),Tc=r.useRef(E),qo=r.useRef(Ae),_l=r.useRef(!1),Pi=r.useRef(""),Ko=r.useRef(""),Mi=r.useRef(""),Rc=r.useRef(""),Ps=r.useRef(""),Ei=r.useRef(""),Di=r.useRef(!1),jc=r.useRef(!1),Nc=r.useRef(null),Cl=r.useRef(!1),zd=r.useRef(!1),[Zo,Ms]=r.useState(!1),Fm=r.useCallback(f=>{Zo||(jc.current=!0),Ti(f)},[Zo]),{handleSaveSettings:Hd,handleSaveTheme:Gd,handleSaveGlobalTheme:Om,handleJsonBackupEnabledChange:$m,handleSaveGlobalJsonBackupEnabled:Um,handleSaveGlobalWeekStartsOn:zm,handleSaveLocale:Vd,handleManualComplexityEnabledChange:Hm,handleChecklistDropdownEnabledChange:ga,handleShowTaskCardStatusLabelChange:Al,handleResetProjectToGlobal:qd}=Kw({keyShortcut:an,themeUseGlobalDefault:kt,runtimeMode:b,jsonBackupUseGlobalDefault:qa,globalTheme:vt,globalJsonBackupEnabled:Cr,setCurrentTheme:Oe,setThemeUseGlobalDefault:Ye,setGlobalTheme:st,setJsonBackupEnabled:_a,setJsonBackupUseGlobalDefault:Ka,setGlobalJsonBackupEnabled:Ar,setGlobalWeekStartsOn:na,setLocale:ta,setManualComplexityEnabled:Yn,setChecklistDropdownEnabled:Dr,setShowTaskCardStatusLabel:cr,setShowChecklist:ys});r.useEffect(()=>{b==="cloud"&&te!==ec&&fS(Ce,te)},[b,Ce,te]),r.useEffect(()=>{Ic.current=gt,Tc.current=E,qo.current=Ae},[gt,E,Ae]);const Pc=r.useCallback((f,B)=>{if(!f)return;const V=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";B?.skipActiveWorkspaceModule||(typeof f.activeWorkspaceModule=="string"?Ti(f.activeWorkspaceModule):f.groupBy==="docs"&&Ti("docs")),f.groupBy&&f.groupBy!=="docs"&&tr(f.groupBy),(f.emptyColumnMode==="show"||f.emptyColumnMode==="collapse"||f.emptyColumnMode==="hide")&&_o(f.emptyColumnMode),typeof f.zenMode=="boolean"&&Fa(f.zenMode),typeof f.searchQuery=="string"&&Md(f.searchQuery),Array.isArray(f.filterCategories)&&Tr(f.filterCategories),Array.isArray(f.filterPriorities)&&Ci(f.filterPriorities),Array.isArray(f.filterTypes)&&Ed(f.filterTypes),Array.isArray(f.filterStatus)&&Dd(f.filterStatus),Array.isArray(f.filterAssignees)&&ts(f.filterAssignees),typeof f.filterAssigneesAllSelected=="boolean"&&Bd(f.filterAssigneesAllSelected),f.filterTaxonomies&&typeof f.filterTaxonomies=="object"&&Ai(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):V&&Ii(!0),typeof f.showChecklist=="boolean"&&ys(f.showChecklist),typeof f.lastCategory=="string"&&gc(f.lastCategory),typeof f.exportEnvironment=="string"&&f.exportEnvironment.trim().length>0&&Gt(f.exportEnvironment.trim())},[]),Mc=r.useCallback(async f=>{const B=String(f||nn.current||Ce||"default").trim()||"default",V=`${b}:${pt}:${B}`;try{const Z=await fetch(`/api/taskforce/ui-state?key=app&workspaceId=${encodeURIComponent(B)}`,{method:"GET",credentials:"include"}),He=Z.ok?await Z.json().catch(()=>({})):{},Be=He?.state&&typeof He.state=="object"?He.state:null,Ve=oh(pt),fn=Be||Ve?{...Ve||{},...Be||{}}:null;if(nn.current!==B)return;Pc(fn,{skipActiveWorkspaceModule:jc.current}),Pi.current=V}catch{const Z=oh(pt);nn.current===B&&(Pc(Z,{skipActiveWorkspaceModule:jc.current}),Pi.current=V)}finally{if(nn.current!==B)return;jc.current=!1,Di.current=!0,Ms(!0)}},[Pc,Ce,b,pt]);r.useEffect(()=>{const f=`${b}:${pt}:${Ce}`;_l.current&&Pi.current!==f&&(Ms(!1),Mc(Ce))},[Ce,Mc,b,pt]),r.useEffect(()=>{if(!Zo)return;if(Di.current){Di.current=!1;return}const f={groupBy:ks,activeWorkspaceModule:xl,emptyColumnMode:xo,zenMode:ds,searchQuery:yc,filterCategories:kc,filterPriorities:Jn,filterTypes:yl,filterStatus:wo,filterAssignees:kl,filterAssigneesAllSelected:Ld,filterTaxonomies:vc,sortBy:Sc,sortOrder:vl,hasInitedFilters:bo,showChecklist:hc,lastCategory:Go||"",exportEnvironment:Ta};hS(f,pt);const B=window.setTimeout(async()=>{try{await pf({stateKey:"app",workspaceId:nn.current,patch:f})}catch{}},250);return()=>window.clearTimeout(B)},[Zo,ks,xl,xo,ds,yc,kc,Jn,yl,wo,kl,Ld,vc,Sc,vl,bo,hc,Go,Ta,pt]);const Il=r.useCallback(f=>{const B=f.runtimeMode==="cloud"?"cloud":"local",V=!!f.authRequiredForApi,Z=typeof f.userId=="string"&&f.userId.trim().length>0?f.userId.trim():"anonymous",He=B==="cloud"&&Z!=="anonymous",Be=He||qo.current,Ve=Ic.current;if(R(B),c(V),He&&(Ke(!0),Ne(Z),we(!1),Ve||rr(!0)),typeof f.workspaceId=="string"&&f.workspaceId.trim().length>0){const Jl=f.workspaceId.trim();B==="local"?Nn(Jl):xr(Jl)}we(B==="cloud"&&V?!Be:!1),f.setupState&&typeof f.setupState=="object"?wa(f.setupState):wa(null),f.runtimeCapabilities&&typeof f.runtimeCapabilities=="object"?Yt(f.runtimeCapabilities):Yt(null),Hn(!!f.realtimeSyncEnabled);const fn=String(f.realtimeSyncFlagSource||"").trim().toLowerCase();Ba(fn==="env"||fn==="settings"||fn==="default"?fn:"unknown"),typeof f.shortcut=="string"&&f.shortcut.trim().length>0&&un(f.shortcut);const hn=Kc(f.theme);hn&&Oe(hn);const On=Kc(f.globalTheme);On&&st(On),typeof f.themeUseGlobalDefault=="boolean"&&Ye(f.themeUseGlobalDefault);const xn=f.runtimeMode==="cloud"?"cloud":"local";typeof f.projectRoot=="string"?Ze(f.projectRoot):xn==="cloud"&&Ze(""),typeof f.tenantId=="string"?Wt(f.tenantId.trim()):xn==="cloud"&&Wt("");const Ea=xn==="cloud"?String(f.projectName||"").trim():f.projectName||f.paths?.projectName||"";(String(Ea||"").trim().length>0||xn==="cloud")&&ot(Ea),typeof f.mcpScript=="string"?Ct(f.mcpScript):xn==="cloud"&&Ct(""),typeof f.hostRoot=="string"?ma(f.hostRoot):xn==="cloud"&&ma(""),typeof f.jsonBackupEnabled=="boolean"&&_a(f.jsonBackupEnabled),typeof f.globalJsonBackupEnabled=="boolean"&&Ar(f.globalJsonBackupEnabled),typeof f.jsonBackupUseGlobalDefault=="boolean"&&Ka(f.jsonBackupUseGlobalDefault);const Pr=f?.schedulePreferences?.weekStartsOn;(Pr==="sunday"||Pr==="monday")&&na(Pr),typeof f.manualComplexityEnabled=="boolean"&&Yn(f.manualComplexityEnabled),typeof f.checklistDropdownEnabled=="boolean"?Dr(f.checklistDropdownEnabled):Dr(!0),typeof f.showTaskCardStatusLabel=="boolean"?cr(f.showTaskCardStatusLabel):cr(!0)},[xr,Nn]),Kd=r.useCallback(async()=>{const f=typeof performance<"u"?performance.now():Date.now();try{const B=await ms("/api/taskforce/version",void 0,od);if(!B.ok)return;const V=await B.json().catch(()=>({}));V?.build&&typeof V.build=="object"&&Mr({version:String(V.build.version||""),gitSha:V.build.gitSha?String(V.build.gitSha):null,buildTime:V.build.buildTime?String(V.build.buildTime):null,deployId:V.build.deployId?String(V.build.deployId):null}),Ut("build_info_loaded",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-f)})}catch(B){Qr(B)&&Ut("build_info_timeout",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-f)})}},[ms,Qr]),{fetchReferenceData:Li,fetchConfig:Ur,fetchWorkspaces:zr,fetchAssigneeOptions:Yo,switchWorkspace:Hr,resolveWorkspaceAfterAuth:Zd,retryBootstrapChecks:Tl,runCloudBootstrap:Ys}=Mb({shouldDeferProtectedApiCalls:Pn,shouldBlockProtectedApiCalls:vn,getWorkspaceRequestState:At,isWorkspaceRequestStale:va,isWorkspaceEpochStale:Sa,isAbortError:ua,isBootstrapTimeoutError:Qr,fetchWithTimeout:ms,handleUnauthorized:fs,applyBootstrapConfig:Il,loadPersistedUiState:Mc,fetchBuildInfo:Kd,markBootstrapPhase:Or,markBootstrapStalled:Bo,fetchWorkflows:Bt,fetchInitiativeTemplates:Ln,loadAvailableEnvironments:pa,setReferenceDataLoaded:pr,setCustomCategories:di,setCustomTypes:Is,setPriorities:or,setTaxonomies:fi,setTaxonomyDisplayLabels:lo,setConfigLoaded:io,hasLoadedUiStateRef:_l,currentWorkspaceIdRef:nn,referenceDataRequestRef:Nc,referenceDataAbortRef:Va,bootstrapConfigAbortRef:qr,workspaceListAbortRef:ka,assigneeOptionsAbortRef:Un,workspaceListHydratedRef:Cl,setAvailableWorkspaces:Cn,runtimeMode:b,applyResolvedWorkspaceId:xr,workspaceSwitchingEnabled:yt,authSessionResolved:gt,isAuthenticated:Ae,authUserId:Je,authUserAvatarUrl:Vn,setHydratedWorkspaceRole:rt,setAssigneeOptions:cn,setAssigneeOptionsLoaded:sa,commitCurrentWorkspaceId:(f,B)=>{la.current=f,Nn(f,B),B?.clearExplicitSelection!==!1&&(la.current=null)},currentWorkspaceId:Ce,workspaceSelectionScope:te,abortWorkspaceScopedRequests:zn,setWorkspaceBootstrapPending:$n,checkAuthSession:oa,lastConfigRefreshKeyRef:Mi,lastAssigneeOptionsLoadKeyRef:Ko,lastWorkspaceSyncStateLoadKeyRef:Rc,lastTaskSurfaceLoadKeyRef:Ps,lastSettingsSurfaceLoadKeyRef:Ei,isOpen:he,activeTab:H,showArchive:re,taskScope:Re,settingsSection:We,workspaceBootstrapPending:ln,fetchTasks:aa,fetchArchive:Xa,fetchPlanningEntities:pn,refreshTaskCollections:es,loadWorkspaceSyncState:cl,archiveBootstrapTimerRef:vs,hasBootstrappedDataRef:zd}),Bi=r.useCallback(async()=>{await oa(),await Ur()},[oa,Ur]);r.useEffect(()=>{if(!Pa||ln)return;const f=`${b}:${Ae?"auth":"guest"}:${Ce}:${Vn||"no-avatar"}`;Us&&Ko.current===f||(Ko.current=f,Yo())},[Us,Vn,Pa,Ce,Yo,Ae,b,ln]),r.useEffect(()=>{if(!gt||!Ae)return;const f=String(Je||"").trim();if(!f||f==="anonymous")return;const B=String(Vn||"").trim()||null;cn(V=>{let Z=!1;const He=V.map(Be=>Be.kind!=="member"||String(Be.value||"").trim()!==f||(typeof Be.avatarUrl=="string"&&Be.avatarUrl.trim().length>0?Be.avatarUrl.trim():null)===B?Be:(Z=!0,{...Be,avatarUrl:B}));return Z?He:V})},[gt,Vn,Je,Ae]);const Rl=r.useMemo(()=>yt?wt.find(B=>B.id===Ce)?.role??null:ye,[wt,Ce,ye,yt]);r.useEffect(()=>{Ae||rt(null)},[Ae]);const Yd=r.useCallback(async()=>{Kt(null);const f=await Ys({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"}},[Ys]),Ss=r.useCallback(async f=>{const B=f?.reason||"retry",V=typeof f?.preferredWorkspaceId=="string"?f.preferredWorkspaceId.trim():"",Z=f?.allowCommercialGate===!0;if(V&&yt){if(!await oa({force:!0}))return await Ur({ignoreAuthGuard:!0}),{success:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};const Ve=await Zd({preferredWorkspaceId:V});if(!Ve.success)return await Ur({ignoreAuthGuard:!0}),{success:!1,error:Ve.error||"Unable to resolve workspace access.",code:Ve.code};if(Ve.workspaceSetupRequired)return await Ur({ignoreAuthGuard:!0}),{success:!0,workspaceSetupRequired:!0}}const He=await Ys({reason:B,ignoreAuthGuard:!0,tasksSilent:!0,includeDeferredArchive:!1});return He.authenticated?He.success?He.workspaceSetupRequired?Z?{success:!0,workspaceSetupRequired:!1}:{success:!0,workspaceSetupRequired:!0}:(Z||cc({preferCloudOnFirstSync:!0}),{success:!0,workspaceSetupRequired:!1}):{success:!1,error:He.error||"Unable to resolve workspace access.",code:He.code}:{success:!1,error:He.error||"Sign in required.",code:He.code||"AUTH_REQUIRED"}},[oa,Ur,Zd,Ys,cc,yt]),Jo=r.useCallback(async(f,B)=>{if(!yt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const V=String(f||"").trim();if(!V)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:V,description:typeof B=="string"?B:void 0})}),He=await Z.json().catch(()=>({}));if(!Z.ok||He?.success===!1)return{success:!1,error:He?.error||`Failed to create workspace (${Z.status})`,code:He?.code};const Be=He?.workspace;if(await zr(),Be?.id){const Ve=await Hr(Be.id);if(!Ve.success)return{success:!1,error:Ve.error||"Workspace created but failed to activate.",code:Ve.code}}return{success:!0,workspace:Be}}catch{return{success:!1,error:"Failed to create workspace."}}},[zr,Hr,yt]),hr=r.useCallback(async f=>{if(!yt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const B=String(f||"").trim();if(!B)return{success:!1,error:"workspaceId is required.",code:"WORKSPACE_ID_REQUIRED"};try{const V=await fetch(`/api/taskforce/workspaces/${encodeURIComponent(B)}`,{method:"DELETE",credentials:"include"}),Z=await V.json().catch(()=>({}));if(!V.ok||Z?.success===!1)return{success:!1,error:Z?.error||`Failed to delete workspace (${V.status})`,code:Z?.code};await oa({force:!0}),await Promise.all([Ur(),zr()]);const He=typeof Z?.nextWorkspaceId=="string"?Z.nextWorkspaceId.trim():"";return He&&Nn(He),{success:!0,nextWorkspaceId:He||void 0,workspaceSetupRequired:Z?.workspaceSetupRequired===!0,cleanupWarnings:Array.isArray(Z?.cleanupWarnings)?Z.cleanupWarnings.map(Be=>String(Be||"")):[]}}catch{return{success:!1,error:"Failed to delete workspace."}}},[oa,Nn,Ur,zr,yt]),Qo=r.useCallback(async f=>{const B=f==="operations"?"operations":"core";try{const V=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:B}})}),Z=await V.json().catch(()=>({}));return!V.ok||Z?.success===!1?!1:(await Bi(),!0)}catch{return!1}},[Bi]),jl=r.useCallback(async f=>{const B=String(f?.name||"").trim(),V=typeof f?.workspaceId=="string"?f.workspaceId.trim():"";if(!B)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:V&&V!=="default"?V:void 0,name:B,description:typeof f.description=="string"?f.description:void 0,allowCreate:!0})}),He=await Z.json().catch(()=>({}));if(!Z.ok||He?.success===!1)return{success:!1,error:He?.error||`Failed to save workspace (${Z.status})`,code:He?.code};const Be=String(He?.workspace?.id||"").trim();if(Be&&(Nn(Be),await new Promise(Ve=>window.setTimeout(Ve,0)),b==="cloud"&&Ae&&Be!==Ce)){const Ve=await Hr(Be);if(!Ve.success)return{success:!1,error:Ve.error||"Workspace saved but failed to activate session workspace.",code:"WORKSPACE_SWITCH_FAILED"}}return await Bi(),{success:!0,workspaceId:Be||void 0}}catch{return{success:!1,error:"Failed to save workspace profile."}}},[Nn,Bi,b,Ae,Ce,Hr]),Jd=r.useCallback(async(f,B)=>{if(!K)return{success:!1,error:"Cloud auth endpoint is not configured."};const V=f.trim().toLowerCase(),Z=B;if(!V||!Z)return{success:!1,error:"Email and password are required."};try{const He=await fetch($("/api/taskforce/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:V,password:Z})}),Be=await He.json().catch(()=>({}));if(!He.ok||!Be?.success)return{success:!1,error:Be?.error||"Sign in failed.",code:Be?.code};$r("");const Ve=await Ss();return Ve.success?{success:!0,workspaceSetupRequired:Ve.workspaceSetupRequired===!0}:{success:!1,error:Ve.error||"Unable to resolve workspace after sign in.",code:Ve.code}}catch{return{success:!1,error:"Sign in failed."}}},[$,K,Ss]),Gm=r.useCallback((f,B,V)=>{const Z=B&&/^\/[A-Za-z0-9_\-./?=&%]*$/.test(B)?B:"/";let He=`/api/taskforce/auth/oauth/${encodeURIComponent(f)}/start?return_to=${encodeURIComponent(Z)}`;V&&(He+=`&invite_token=${encodeURIComponent(V)}`),window.location.href=$(He)},[$]),Nl=r.useCallback(async(f,B,V)=>{if(!K)return{success:!1,error:"Cloud auth endpoint is not configured."};const Z=f.trim().toLowerCase(),He=B;if(!Z||!He)return{success:!1,error:"Email and password are required."};try{const Be=await fetch($("/api/taskforce/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:Z,password:He,...typeof V?.displayName=="string"&&V.displayName.trim()?{displayName:V.displayName.trim()}:{},...typeof V?.planId=="string"&&V.planId.trim()?{planId:V.planId.trim()}:{},...typeof V?.planVersionId=="string"&&V.planVersionId.trim()?{planVersionId:V.planVersionId.trim()}:{},...typeof V?.interval=="string"&&V.interval.trim()?{interval:V.interval.trim()}:{}})}),Ve=await Be.json().catch(()=>({}));if(!Be.ok||!Ve?.success)return{success:!1,error:Ve?.error||"Create account failed.",code:Ve?.code,verificationRequired:!!Ve?.verificationRequired,verificationToken:typeof Ve?.verificationToken=="string"?Ve.verificationToken:void 0,emailSent:Ve?.emailSent!==!1,emailError:typeof Ve?.emailError=="string"?Ve.emailError:void 0};const fn=Ve?.planSelectionRequired===!0,hn=Ve?.checkoutPending===!0,On=typeof Ve?.commercialState=="string"?Ve.commercialState:null,xn=!!Ve?.verificationRequired;if(!xn){if($r(""),!!(fn||hn||On==="pending_plan_selection"||On==="checkout_pending"))return await oa({force:!0})?{success:!0,workspaceSetupRequired:!1,planSelectionRequired:fn,checkoutPending:hn,commercialState:On,verificationRequired:xn,verificationToken:typeof Ve?.verificationToken=="string"?Ve.verificationToken:void 0,emailSent:Ve?.emailSent!==!1,emailError:typeof Ve?.emailError=="string"?Ve.emailError:void 0}:{success:!1,error:"Unable to resolve workspace after registration.",code:"AUTH_REQUIRED"};const Pr=await Ss({allowCommercialGate:!1});return Pr.success?{success:!0,workspaceSetupRequired:Pr.workspaceSetupRequired===!0,planSelectionRequired:fn,checkoutPending:hn,commercialState:On,verificationRequired:xn,verificationToken:typeof Ve?.verificationToken=="string"?Ve.verificationToken:void 0,emailSent:Ve?.emailSent!==!1,emailError:typeof Ve?.emailError=="string"?Ve.emailError:void 0}:{success:!1,error:Pr.error||"Unable to resolve workspace after registration.",code:Pr.code}}return{success:!0,workspaceSetupRequired:!!Ve?.workspaceSetupRequired,planSelectionRequired:fn,checkoutPending:hn,commercialState:On,verificationRequired:xn,verificationToken:typeof Ve?.verificationToken=="string"?Ve.verificationToken:void 0,emailSent:Ve?.emailSent!==!1,emailError:typeof Ve?.emailError=="string"?Ve.emailError:void 0}}catch{return{success:!1,error:"Create account failed."}}},[oa,$,K,Ss]),Qd=r.useCallback(async f=>{if(!K)return{success:!1,error:"Cloud auth endpoint is not configured."};const B=String(f.displayName||"").trim(),V=typeof f.avatarDraftId=="string"?f.avatarDraftId.trim():"",Z=f.clearAvatar===!0;if(!B)return{success:!1,error:"Display name is required."};try{const He=await fetch($("/api/taskforce/auth/profile"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({displayName:B,...V?{avatarDraftId:V}:{},...Z?{clearAvatar:!0}:{}})}),Be=await He.json().catch(()=>({}));if(!He.ok||!Be?.success)return{success:!1,error:Be?.error||"Failed to update profile.",code:Be?.code};const Ve={userId:typeof Be?.profile?.userId=="string"?Be.profile.userId:Je,email:typeof Be?.profile?.email=="string"?Be.profile.email:Pt,displayName:typeof Be?.profile?.displayName=="string"?Be.profile.displayName:null,avatarUrl:typeof Be?.profile?.avatarUrl=="string"?Be.profile.avatarUrl:null};return Ht(Ve.displayName||""),qn(Ve.avatarUrl||""),{success:!0,profile:Ve}}catch{return{success:!1,error:"Failed to update profile."}}},[$,K,Pt,Je]),ns=r.useCallback(async f=>{if(!K)return{success:!1,error:"Cloud auth endpoint is not configured."};const B=f.trim().toLowerCase();if(!B)return{success:!1,error:"Email is required."};try{const V=await fetch($("/api/taskforce/auth/verify-email/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:B})}),Z=await V.json().catch(()=>({}));return!V.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."}}},[$,K]),Xd=r.useCallback(async f=>{if(!K)return{success:!1,error:"Cloud auth endpoint is not configured."};const B=f.trim();if(!B)return{success:!1,error:"Token is required."};try{const V=await fetch($("/api/taskforce/auth/verify-email/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:B})}),Z=await V.json().catch(()=>({}));return!V.ok||!Z?.success?{success:!1,error:Z?.error||"Verification failed.",code:Z?.code}:{success:!0}}catch{return{success:!1,error:"Verification failed."}}},[$,K]),as=r.useCallback(async f=>{if(!K)return{success:!1,error:"Cloud auth endpoint is not configured."};const B=f.trim().toLowerCase();if(!B)return{success:!1,error:"Email is required."};try{const V=await fetch($("/api/taskforce/auth/password-reset/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:B})}),Z=await V.json().catch(()=>({}));return!V.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."}}},[$,K]),eu=r.useCallback(async(f,B)=>{if(!K)return{success:!1,error:"Cloud auth endpoint is not configured."};const V=f.trim(),Z=B;if(!V||!Z)return{success:!1,error:"Token and password are required."};try{const He=await fetch($("/api/taskforce/auth/password-reset/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:V,password:Z})}),Be=await He.json().catch(()=>({}));return!He.ok||!Be?.success?{success:!1,error:Be?.error||"Failed to reset password.",code:Be?.code}:{success:!0}}catch{return{success:!1,error:"Failed to reset password."}}},[$,K]),tu=r.useCallback(async f=>{if(!K)return{success:!1,error:"Cloud auth endpoint is not configured."};const B=f.trim();if(!B)return{success:!1,error:"Token is required."};try{const V=await fetch($("/api/taskforce/auth/invite/inspect"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:B})}),Z=await V.json().catch(()=>({}));return!V.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."}}},[$,K]),Wi=r.useCallback(async(f,B)=>{if(!K)return{success:!1,error:"Cloud auth endpoint is not configured."};const V=f.trim(),Z=B;if(!V||!Z)return{success:!1,error:"Token and password are required."};try{const He=await fetch($("/api/taskforce/auth/invite/accept"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:V,password:Z})}),Be=await He.json().catch(()=>({}));if(!He.ok||!Be?.success)return{success:!1,error:Be?.error||"Invite acceptance failed.",code:Be?.code};$r("");const Ve=typeof Be?.workspaceId=="string"?Be.workspaceId:null;if(Ve&&yt){const hn=await Hr(Ve,{hydrate:!1});if(!hn.success)return{success:!1,error:hn.error||"Unable to resolve workspace after invite acceptance.",code:hn.code}}const fn=await Ss({preferredWorkspaceId:Ve});return fn.success?(Ve&&nn.current!==Ve&&Nn(Ve,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:fn.workspaceSetupRequired===!0}):{success:!1,error:fn.error||"Unable to resolve workspace after invite acceptance.",code:fn.code}}catch{return{success:!1,error:"Invite acceptance failed."}}},[Nn,$,K,nn,Ss,Hr,yt]),Pl=r.useCallback(async f=>{if(!K)return{success:!1,error:"Cloud auth endpoint is not configured."};const B=f.trim();if(!B)return{success:!1,error:"Token is required."};try{const V=await fetch($("/api/taskforce/auth/invite/join"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:B})}),Z=await V.json().catch(()=>({}));if(!V.ok||!Z?.success)return{success:!1,error:Z?.error||"Invite join failed.",code:Z?.code};$r("");const He=typeof Z?.workspaceId=="string"?Z.workspaceId:null;if(He&&yt){const Ve=await Hr(He,{hydrate:!1});if(!Ve.success)return{success:!1,error:Ve.error||"Unable to resolve workspace after invite join.",code:Ve.code}}const Be=await Ss({preferredWorkspaceId:He});return Be.success?(He&&nn.current!==He&&Nn(He,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:Be.workspaceSetupRequired===!0}):{success:!1,error:Be.error||"Unable to resolve workspace after invite join.",code:Be.code}}catch{return{success:!1,error:"Invite join failed."}}},[Nn,$,K,nn,Ss,Hr,yt]),Fi=r.useCallback(async()=>{if(!K)return{success:!1,error:"Cloud auth not configured."};try{const f=await fetch($("/api/taskforce/account/login-methods"),{credentials:"include"}),B=await f.json().catch(()=>({}));return!f.ok||!B?.success?{success:!1,error:B?.error||"Failed to fetch login methods."}:{success:!0,methods:Array.isArray(B?.methods)?B.methods:[]}}catch{return{success:!1,error:"Failed to fetch login methods."}}},[$,K]),Vm=r.useCallback(async f=>{if(!K)return{success:!1,error:"Cloud auth not configured."};try{const B=await fetch($(`/api/taskforce/account/login-methods/${encodeURIComponent(f)}`),{method:"DELETE",credentials:"include"}),V=await B.json().catch(()=>({}));return!B.ok||!V?.success?{success:!1,error:V?.error||"Unlink failed.",code:V?.code}:{success:!0}}catch{return{success:!1,error:"Unlink failed."}}},[$,K]),Xo=r.useCallback(async f=>{if(!K)return{success:!1,error:"Cloud auth not configured."};try{const B=await fetch($("/api/taskforce/account/login-methods/password"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({password:f})}),V=await B.json().catch(()=>({}));return!B.ok||!V?.success?{success:!1,error:V?.error||"Failed to add password.",code:V?.code}:{success:!0}}catch{return{success:!1,error:"Failed to add password."}}},[$,K]),Ml=r.useCallback((f,B)=>{const V=B&&/^\/[A-Za-z0-9_\-./?=&%]*$/.test(B)?B:"/",Z=`/api/taskforce/auth/oauth/${encodeURIComponent(f)}/start?flow=link&return_to=${encodeURIComponent(V)}`;window.location.href=$(Z)},[$]),El=r.useCallback(()=>{zn(),Nc.current=null,Pi.current="",Ko.current="",Mi.current="",Rc.current="",Ps.current="",Ei.current="",Ms(!1),pr(!1),cn(li()),sa(!1),ha([]),Fr([]),T([]),nt([]),ve([]),Ra([]),Jr(!1),Ma.current!==null&&typeof window<"u"&&(window.clearTimeout(Ma.current),Ma.current=null),vs.current!==null&&typeof window<"u"&&(window.clearTimeout(vs.current),vs.current=null)},[zn,T,Fr]),qm=r.useCallback(async()=>{try{K&&await fetch($("/api/taskforce/auth/logout"),{method:"POST",credentials:"include"})}catch{}finally{if(zn(),jn.current+=1,Xn.current=null,Zn.current=!1,Zt.current=Date.now(),Ke(!1),rr(!0),Ne("anonymous"),Jt(""),rd(null),Ft(""),Ht(""),qn(""),Fo("disconnected"),Oo(null),ca(!0),ot(""),io(!1),pr(!1),wa(null),tn("idle"),Kt(null),_l.current=!1,b!=="local"&&sh(te),we(b==="cloud"&&E),Nn("default"),Cn([]),Cl.current=!1,rt(null),b==="local"){await Promise.allSettled([Ur({ignoreAuthGuard:!0}),aa(!0,{ignoreAuthGuard:!0}),pn({ignoreAuthGuard:!0}),Li({ignoreAuthGuard:!0,force:!0})]);return}zd.current=!1,El()}},[zn,E,sh,Nn,$,K,te,b,Ur,pn,Li,aa,El]),Dl=r.useCallback(async f=>{try{const B=await fetch("/api/taskforce/initiative-templates/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)}),V=await B.json().catch(()=>({}));return!B.ok||!V?.success?{success:!1,error:V?.error||`Create failed (${B.status})`}:(await aa(!0),{success:!0,result:V?.results})}catch(B){return{success:!1,error:B.message}}},[aa]),nu=r.useCallback(async f=>{const B=await fetch("/api/taskforce/initiative",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f||{})}),V=await B.json().catch(()=>({}));if(!B.ok)throw new Error(V?.error||`Failed to create initiative (${B.status})`);return await pn(),nt(Z=>si(Z,V)),V},[pn]),Km=r.useCallback(async(f,B)=>{const V=await fetch(`/api/taskforce/initiative/${encodeURIComponent(f)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(B||{})}),Z=await V.json().catch(()=>({}));if(!V.ok)throw new Error(Z?.error||`Failed to update initiative (${V.status})`);return await pn(),nt(He=>si(He,Z)),Z},[pn]),Ll=r.useCallback(async f=>{const B=await fetch(`/api/taskforce/initiative/${encodeURIComponent(f)}/archive`,{method:"POST"}),V=await B.json().catch(()=>({}));if(!B.ok)throw new Error(V?.error||`Failed to archive initiative (${B.status})`);return await pn(),nt(Z=>si(Z,V)),V},[pn]),au=r.useCallback(async f=>{const B=await fetch(`/api/taskforce/initiative/${encodeURIComponent(f)}/unarchive`,{method:"POST"}),V=await B.json().catch(()=>({}));if(!B.ok)throw new Error(V?.error||`Failed to unarchive initiative (${B.status})`);return await pn(),nt(Z=>si(Z,V)),V},[pn]),Zm=r.useCallback(async f=>{const B=await fetch("/api/taskforce/workstream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f||{})}),V=await B.json().catch(()=>({}));if(!B.ok)throw new Error(V?.error||`Failed to create workstream (${B.status})`);return await pn(),ve(Z=>si(Z,V)),V},[pn]),Ym=r.useCallback(async(f,B)=>{const V=await fetch(`/api/taskforce/workstream/${encodeURIComponent(f)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(B||{})}),Z=await V.json().catch(()=>({}));if(!V.ok)throw new Error(Z?.error||`Failed to update workstream (${V.status})`);return await pn(),ve(He=>si(He,Z)),Z},[pn]),Bl=r.useCallback(async f=>{const B=await fetch(`/api/taskforce/workstream/${encodeURIComponent(f)}/archive`,{method:"POST"}),V=await B.json().catch(()=>({}));if(!B.ok)throw new Error(V?.error||`Failed to archive workstream (${B.status})`);return await pn(),ve(Z=>si(Z,V)),V},[pn]),Ec=r.useCallback(async f=>{const B=await fetch(`/api/taskforce/workstream/${encodeURIComponent(f)}/unarchive`,{method:"POST"}),V=await B.json().catch(()=>({}));if(!B.ok)throw new Error(V?.error||`Failed to unarchive workstream (${B.status})`);return await pn(),ve(Z=>si(Z,V)),V},[pn]),Co=r.useRef(!1);r.useEffect(()=>{G(!0),!Co.current&&(Co.current=!0,oa())},[oa]),r.useEffect(()=>{D&&oa()},[D,oa]),r.useEffect(()=>{if(!K)return;let f=!1;const B=new AbortController,V=typeof window<"u"?window.setTimeout(()=>B.abort(),5e3):null;return fetch($("/api/taskforce/auth/providers"),{credentials:"include",signal:B.signal}).then(Z=>Z.ok?Z.json():null).then(Z=>{!f&&Array.isArray(Z?.providers)&&Vt(Z.providers)}).catch(()=>{}).finally(()=>{V!==null&&typeof window<"u"&&window.clearTimeout(V)}),()=>{f=!0,B.abort()}},[K,$]),r.useEffect(()=>{if(b!=="local"||!je||typeof window>"u")return;const f=()=>{oa()},B=()=>{document.visibilityState==="visible"&&f()};window.addEventListener("focus",f),window.addEventListener("online",f),document.addEventListener("visibilitychange",B);const V=window.setInterval(f,3e4);return()=>{window.removeEventListener("focus",f),window.removeEventListener("online",f),document.removeEventListener("visibilitychange",B),window.clearInterval(V)}},[b,je,oa]),r.useEffect(()=>{a&&a(Wn.length)},[Wn.length,a]);const ei=r.useRef(null);r.useEffect(()=>{if(!t){ei.current=null;return}if(ei.current===t||Wn.length===0)return;const f=Wn.find(B=>B.id.endsWith(t)||B.id===t);f&&(ei.current=t,ni(f),Nr("add"))},[t,Wn]);const jr=r.useRef(!1);r.useEffect(()=>{if(!Pa)return;if(!jr.current&&gn.length>0){jr.current=!0;const B=Go,V=gn.some(Z=>Z.label===B||Z.value===B);if(B&&V){const Z=gn.find(He=>He.label===B||He.value===B);Ir(Z?.value||B)}else Ir(Qa(gn));return}const f=gn.some(B=>B.value===Ks);gn.length>0&&!f&&Ir(Qa(gn))},[Pa,gn,Ks,Qa,Go]),r.useEffect(()=>{if(!Pa||gn.length===0)return;const f=Z=>!gn.some(He=>He.value===Z.category),B=Wn.some(f),V=Fn.some(f);if(B||V){const Z=Qa(gn);B&&Fr(He=>He.map(Be=>f(Be)?{...Be,category:Z}:Be)),V&&T(He=>He.map(Be=>f(Be)?{...Be,category:Z}:Be))}},[Pa,gn,Wn,Fn,Qa]),r.useEffect(()=>()=>{vs.current!==null&&typeof window<"u"&&(window.clearTimeout(vs.current),vs.current=null),Ma.current!==null&&typeof window<"u"&&(window.clearTimeout(Ma.current),Ma.current=null)},[]),r.useEffect(()=>{},[es]);const Ao=r.useCallback(async()=>{await hi()},[hi]),Js=String(Ce||"").trim(),Dc=String(Je||"").trim(),ru=be("/taskforce-ws"),Jm=!!(K&&b==="cloud"&&gt&&Ae&&Dc&&Dc!=="anonymous"&&Js&&!df(Js)&&ru),su=r.useCallback(()=>{b==="cloud"&&(hi(),!(typeof window>"u")&&(Ma.current!==null&&window.clearTimeout(Ma.current),Ma.current=window.setTimeout(()=>{Ma.current=null,hi()},250)))},[b,hi]);Jg({enabled:Jm,workspaceId:Js,websocketUrl:ru,onSignal:su,userId:Dc||void 0}),Eb({isOpen:he,authBlocked:J,authRequiredForApi:E,isAuthenticated:Ae,canCallProtectedApi:sr.canCallProtectedApi,shouldGateProtectedApiCalls:Pe,authSessionResolvedRef:Ic,authRequiredForApiRef:Tc,isAuthenticatedRef:qo,dataVersionRef:Wm,refreshTaskCollectionsForDataVersion:Ao});const Wl=r.useMemo(()=>{const f=new Map;for(const B of Fn)f.set(B.id,B);for(const B of Wn)f.set(B.id,B);return Array.from(f.values())},[Wn,Fn]),Lc=r.useMemo(()=>ja.map(f=>({...f.taskSnapshot,isDeleted:!0,deletedRecordId:f.id})),[ja]);r.useEffect(()=>{if(!(Pn||vn)&&he&&!ln){if(H==="tasks"){const f=`${Ce}:${H}:${re?"archive":"active"}:${Re}`;if(!Rr.current){Rr.current=!0,Ps.current=f;return}if(Ps.current===f)return;Ps.current=f,aa(),pn(),(re||Re==="archived")&&Xa(!0),Re==="deleted"&&fr();return}if(H==="settings"){const f=`${Ce}:${H}:${We}`;if(Ei.current===f)return;Ei.current=f,Ur(),(We==="commands"||We==="resources")&&Bt()}}},[Ce,he,H,We,re,Re,aa,pn,Xa,fr,Ur,Bt,Pn,vn,ln]);const Fl=r.useCallback(async(f="")=>{try{const B=await fetch(`/api/taskforce/folders?path=${encodeURIComponent(f)}`);if(B.ok){const V=await B.json();ze(V.folders||[]),it(V.files||[]),ht(f)}}catch(B){console.error("[Taskforce] Failed to fetch folders:",B)}},[]),ou=r.useCallback(f=>{const B=[];if(f.path&&B.push(f.path),f.paths&&f.paths.length>0)for(const V of f.paths)B.includes(V)||B.push(V);return B},[]),{validatePaths:Ol,handleUpdateCategory:Bc,handleSaveCategory:iu,handleAddPath:Es,handleUpdateCategoryIcon:cu,handleUpdateCategoryColor:$l,handleRemovePath:lu,handleSelectPath:du,handleRemoveCategory:Ds,handleSaveType:uu,handleRemoveType:mu,handleUpdateType:pu,handleUpdateTaxonomies:fu,handleUpdatePriorities:hu,analyzeSystemTaxonomyPack:rs,handleApplySystemTaxonomyPack:Ul}=Zw({activeCategories:gn,activeTab:H,activeTypes:sn,archivedTasks:Fn,browserTarget:Ot,category:Ks,configLoaded:Pa,customCategories:us,refreshTaskCollections:es,fetchTasks:aa,filterCategories:kc,getCategoryPaths:ou,normalizePath:Yr,pathValidation:ui,setBrowserTarget:Dt,setCategory:Ir,setCustomCategories:di,setCustomTypes:Is,setFilterCategories:Tr,setPathValidation:mi,setPriorities:or,setShowFolderBrowser:Rt,setTaxonomies:fi,tasks:Wn}),ti=r.useCallback(async f=>{const B=Ts,V={...B,...f};lo(V);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 He=await Z.json().catch(()=>({}));He?.displayLabels&&typeof He.displayLabels=="object"&&lo({...V,...He.displayLabels})}catch(Z){console.error("[Taskforce] Failed to update taxonomy display labels",Z),lo(B)}},[Ts]),Nr=r.useCallback(f=>{H==="tasks"&&Mt.current&&Ja(Mt.current.scrollTop),ce(f)},[H]),gu=r.useRef(async()=>{}),{handleNavigation:zl,handleClose:Qm,resetForm:Wc,resolveWorkstreamIdInput:yu,handleEdit:ni,handleOpenTaskById:Io,returnToPreviousTask:Fc,clearReturnToParentTask:Oc}=rb({activeCategories:gn,activeTypes:sn,activeTab:H,attachments:Ac,checklistItems:Zs,comments:gl,description:uc,editingTaskId:Na,flushPendingAutoSave:()=>gu.current(),getPreferredCategoryValue:Qa,lastUsedCategory:Go,newCommentText:_i,relationshipTasks:Wl,workstreams:bt,showArchive:re,taxonomies:ps,setActiveTab:Nr,setApproach:pl,setAssignee:vi,setAttachments:ji,setAttachmentsDirty:Ni,setCategory:Ir,setChecklistItems:mc,setComments:xi,setComplexity:dl,setDescription:hl,setDueDate:Nd,setEditingTaskId:$s,setError:$r,setFormTaxonomies:xt,setIsOpen:G,setNewCommentText:pc,setPendingNavigation:so,setWorkstreamInput:Si,setPriority:Ho,setScheduledDate:Ns,setShowArchive:ue,setStatus:So,setTaskReturnTrail:It,setTitle:bi,setType:js,setUnsavedModalOpen:ra,taskReturnTrail:$e,title:wi}),{copiedId:Oi,handleDelete:ai,handleUpdateTask:Hl,handleToggleComplete:Gl,handleToggleCancel:$c,handleToggleInProgress:To,handleToggleReview:Vl,handleArchiveTask:$i,handleBulkArchive:Xm,handleUnarchive:ql,handleRestoreDeletedTask:ku,handlePermanentlyDeleteDeletedTask:vu,handleEmptyDeletedTasks:Qs,handleCopyId:Su,queueWorkspaceSyncFromAuthoritativeTaskState:Kl}=bb({tasks:Wn,archivedTasks:Fn,editingTaskId:Na,setTasks:Fr,setArchivedTasks:T,setDeletedTasks:ha,setError:$r,resetForm:Wc,setActiveTab:Nr,fetchTasks:aa,fetchArchive:Xa,fetchDeletedTasks:fr,mergeTaskFromServer:fo,pushNotice:mr,cloudAuthConfigured:K,runtimeMode:b,isAuthenticated:Ae,workspaceCloudSyncEnabled:hs,buildWorkspaceSyncSignature:ll,pushWorkspaceChangesToCloud:Uo,workspacePendingSignatureRef:Id,workspaceDeletedTaskIdsRef:qs,workspaceDeletedTaskWatermarksRef:Td}),{autoSaveState:wu,flushAutoSave:bu,scheduleWarningPrompt:ep,handleSubmit:Zl,confirmScheduleWarning:tp,cancelScheduleWarning:ri,handleAddComment:Yl}=vb({activeCategories:gn,activeTab:H,apiEndpoint:d,approach:ml,assignee:fl,attachments:Ac,attachmentsDirty:Ud,category:Ks,checklistItems:Zs,comments:gl,complexity:dc,description:uc,dueDate:jd,editingTaskId:Na,fetchTasks:aa,formTaxonomies:fc,getPreferredCategoryValue:Qa,mergeTaskFromServer:fo,workstreamInput:za,priority:on,pushNotice:mr,queueWorkspaceSyncFromAuthoritativeTaskState:Kl,relationshipTasks:Wl,resetForm:Wc,resolveWorkstreamIdInput:yu,scheduledDate:Ua,setActiveTab:Nr,setAttachmentsDirty:Ni,setComments:xi,setError:$r,setLastUsedCategory:gc,setLoading:Xr,setNewCommentText:pc,status:ul,title:wi,taxonomies:ps,type:vo});r.useEffect(()=>{gu.current=bu},[bu]);const{handleSetWorkstreamForCurrentTask:xu}=Sb({editingTaskId:Na,mergeTaskFromServer:fo,workstreamInput:za,pushNotice:mr,queueWorkspaceSyncFromAuthoritativeTaskState:Kl,relationshipTasks:Wl,resolveWorkstreamIdInput:yu,setError:$r,fetchTasks:aa}),{currentTask:_u,currentTaskWorkstream:Cu,currentTaskInitiative:ws}=eb({editingTaskId:Na,relationshipTasks:Wl,initiatives:j,workstreams:bt,supplementalTasks:Lc,setComments:xi}),bs=qw({resolveCloudAuthUrl:$,currentWorkspaceId:Ce,normalizedCloudAuthBaseUrl:oe,normalizedCloudMcpBaseUrl:Ie,mergedConfig:o,availableWorkspaces:wt,currentTheme:De,configLoaded:Pa,globalTheme:vt,themeUseGlobalDefault:kt,keyShortcut:an,jsonBackupEnabled:xa,globalJsonBackupEnabled:Cr,globalWeekStartsOn:Za,locale:ir,supportedLocales:Ca,jsonBackupUseGlobalDefault:qa,manualComplexityEnabled:cs,checklistDropdownEnabled:Kr,showTaskCardStatusLabel:Aa,exportWorkflowsPath:Bn,exportingResource:Br,exportResult:dr,pathSaved:dt,settingsSection:We,exportEnvironment:Ta,setupState:La,buildInfo:En,saveSetupMode:Qo,saveWorkspaceProfile:jl,setCurrentTheme:Oe,handleSaveTheme:Gd,handleSaveGlobalTheme:Om,setKeyShortcut:un,handleJsonBackupEnabledChange:$m,handleSaveGlobalJsonBackupEnabled:Um,handleSaveGlobalWeekStartsOn:zm,handleSaveLocale:Vd,handleManualComplexityEnabledChange:Hm,handleChecklistDropdownEnabledChange:ga,handleShowTaskCardStatusLabelChange:Al,handleResetProjectToGlobal:qd,handleSaveSettings:Hd,setExportWorkflowsPath:Lr,setExportEnvironment:Gt,availableWorkflows:ls,initiativeTemplates:et,availableEnvironments:$a,fetchWorkflows:Bt,fetchInitiativeTemplates:Ln,createInitiativeFromTemplate:Dl,fetchWorkflowTemplate:An,fetchWorkflowOverrideNames:wn,saveWorkflowTemplateDraft:Ia,resetWorkflowTemplateDraft:Ya,handleExportWorkflows:ur,setShowFolderBrowser:Rt,setBrowserTarget:Dt,fetchFolders:Fl,activeCategories:gn,pathValidation:ui,taxonomyDisplayLabels:Ts,handleUpdateCategory:Bc,handleRemoveCategory:Ds,handleSaveCategory:iu,handleAddPath:Es,handleRemovePath:lu,handleUpdateCategoryIcon:cu,handleUpdateCategoryColor:$l,activeTypes:sn,handleSaveType:uu,handleRemoveType:mu,handleUpdateType:pu,taxonomies:ps,handleUpdateTaxonomies:fu,priorities:ea,handleUpdatePriorities:hu,analyzeSystemTaxonomyPack:rs,handleApplySystemTaxonomyPack:Ul,handleUpdateTaxonomyDisplayLabels:ti,projectRoot:Fe,projectName:St,mcpHostRoot:_r,serverHostRoot:Wa,mcpScriptPath:Le,tenantId:jt,runtimeMode:b,workspaceSwitchingEnabled:yt,deleteWorkspace:hr,setMcpHostRoot:Xt,isAuthenticated:Ae});r.useEffect(()=>{typeof window<"u"&&(window.__TASKFORCE_DEBUG__={tasks:Wn,archivedTasks:Fn,runtimeMode:b,currentWorkspaceId:Ce,isAuthenticated:Ae,workspaceCloudSyncEnabled:hs,realtimeSyncEnabled:ba,fetchTasks:aa,fetchArchive:Xa,retryWorkspaceCloudSync:gs,resetWorkspaceSyncCursorAndPull:yi,getSyncDiagnostics:zo,__dispatch:{handleUpdateTask:Hl,handleToggleComplete:Gl,handleArchiveTask:$i,handleToggleCancel:$c,handleToggleInProgress:To,handleToggleReview:Vl,handleSubmit:Zl,handleDelete:ai}})},[Wn,Fn,b,Ce,Ae,hs,ba,aa,Xa,gs,yi,zo,Hl,Gl,$i,$c,To,Vl,Zl,ai]);const Au=Wr&&Wr.tone!=="error"?{message:Wr.message,type:"info"}:null,Iu=String(S||I.wsBaseUrl||fe||"").trim().replace(/\/+$/,"");return{config:{...o,cloudEnvironment:I.cloudEnvironment||o.cloudEnvironment||"",apiBaseUrl:fe||o.apiBaseUrl,cloudAuthBaseUrl:oe||o.cloudAuthBaseUrl,wsBaseUrl:Iu||o.wsBaseUrl},isOpen:he,setIsOpen:G,activeTab:H,setActiveTab:Nr,currentTheme:De,setCurrentTheme:Oe,configLoaded:Pa,storagePath:_t,saveSettings:Hd,pathSaved:dt,keyShortcut:an,setKeyShortcut:un,globalWeekStartsOn:Za,locale:ir,supportedLocales:Ca,saveLocale:Vd,jsonBackupEnabled:xa,setJsonBackupEnabled:_a,manualComplexityEnabled:cs,checklistDropdownEnabled:Kr,showTaskCardStatusLabel:Aa,setManualComplexityEnabled:Yn,mcpHostRoot:_r,setMcpHostRoot:Xt,settingsSection:We,setSettingsSection:tt,runtimeMode:b,workspaceMode:$t,workspaceSwitchingEnabled:yt,cloudAuthConfigured:K,authRequiredForApi:E,authBlocked:J,isAuthenticated:Ae,authUserId:Je,authUserEmail:Pt,authUserDisplayName:Lt,authUserAvatarUrl:Vn,authWorkspaceId:zt,userGlobalSyncStatus:ho,workspaceLastPullAt:Nm,workspaceLastPushAt:ol,workspaceLastErrorAt:Pm,userGlobalSyncError:go,workspaceLastErrorMessage:il,workspaceLastSuccessfulSyncAt:er,workspaceSyncPhase:yo,workspaceSyncSetupIntent:gi,workspaceSyncStatus:Mm,workspaceSyncSummary:Cd,workspaceSyncRecommendedAction:$o,workspaceSyncBusy:Em,workspaceSyncPendingChanges:Ad,retryUserGlobalSettingsSync:lc,retryWorkspaceCloudSync:gs,resetWorkspaceSyncCursorAndPull:yi,getWorkspaceSyncDiagnostics:zo,hasBetaAccess:Kn,realtimeSyncEnabled:ba,realtimeSyncFlagSource:Mn,currentWorkspaceId:Ce,currentWorkspaceRole:Rl,availableWorkspaces:wt,assigneeOptions:kn,workspaceCloudSyncEnabled:hs,saveWorkspaceCloudSyncSettings:ko,applyWorkspaceSyncStateSnapshot:Rd,bootstrapState:rc,authSessionResolved:gt,workspaceBootstrapPending:ln,bootstrapPhase:mn,bootstrapError:bn,bootstrapStartedAt:vr,setupState:La,runtimeCapabilities:Sn,refreshSetupContext:Bi,retryBootstrapChecks:Tl,continueAfterCommercialOnboarding:Yd,saveWorkspaceProfile:jl,fetchWorkspaces:zr,createWorkspace:Jo,deleteWorkspace:hr,switchWorkspace:Hr,loginWithCredentials:Jd,beginOAuthLogin:Gm,availableAuthProviders:rn,fetchLoginMethods:Fi,unlinkLoginMethod:Vm,addPasswordToAccount:Xo,beginOAuthLink:Ml,registerWithCredentials:Nl,updateCurrentUserProfile:Qd,requestEmailVerification:ns,confirmEmailVerification:Xd,requestPasswordReset:as,confirmPasswordReset:eu,inspectInviteAcceptance:tu,acceptInviteWithToken:Wi,joinInviteWithToken:Pl,logout:qm,showFolderBrowser:Qe,setShowFolderBrowser:Rt,folders:ee,files:ft,currentBrowsePath:Et,fetchFolders:Fl,browserTarget:Ot,setBrowserTarget:Dt,groupBy:ks,setGroupBy:tr,activeWorkspaceModule:xl,setActiveWorkspaceModule:Fm,emptyColumnMode:xo,setEmptyColumnMode:_o,zenMode:ds,setZenMode:Oa,handleSelectPath:du,handleAddPath:Es,handleRemovePath:lu,tasks:Wn,loadingTasks:Os,archivedTasks:Fn,initiatives:j,workstreams:bt,planningBootstrapTaskSummaries:ne,deletedTasks:ja,activeCategories:gn,activeTypes:sn,priorities:ea,taxonomyDisplayLabels:Ts,approaches:Er,taxonomies:ps,searchQuery:yc,setSearchQuery:Md,filterCategories:kc,setFilterCategories:Tr,filterTypes:yl,setFilterTypes:Ed,filterPriorities:Jn,setFilterPriorities:Ci,filterStatus:wo,setFilterStatus:Dd,filterAssignees:kl,setFilterAssignees:ts,filterTaxonomies:vc,setFilterTaxonomies:Ai,hasInitedFilters:bo,sortBy:Sc,setSortBy:wc,sortOrder:vl,setSortOrder:Wd,toggleSortOrder:Vo,showArchive:re,setShowArchive:ue,taskScope:Re,setTaskScope:Te,clearFilters:Dm,filteredTasks:bc,searchAgnosticTasks:xc,filteredArchive:Fd,groupedTasks:Od,collapsedCategories:Sl,setCollapsedCategories:wl,fetchTasks:aa,fetchArchive:Xa,fetchDeletedTasks:fr,fetchPlanningEntities:pn,fetchAssigneeOptions:Yo,createInitiative:nu,updateInitiative:Km,archiveInitiative:Ll,unarchiveInitiative:au,createWorkstream:Zm,updateWorkstream:Ym,archiveWorkstream:Bl,unarchiveWorkstream:Ec,handleEdit:ni,handleDelete:ai,handleCopyId:Su,handleToggleComplete:Gl,handleToggleCancel:$c,handleToggleInProgress:To,handleToggleReview:Vl,handleArchiveTask:$i,handleBulkArchive:Xm,handleUnarchive:ql,handleRestoreDeletedTask:ku,handlePermanentlyDeleteDeletedTask:vu,handleEmptyDeletedTasks:Qs,handleUpdateTask:Hl,editingTaskId:Na,loading:uo,error:mo,title:wi,setTitle:bi,description:uc,setDescription:hl,checklistItems:Zs,setChecklistItems:mc,category:Ks,setCategory:Ir,type:vo,setType:js,priority:on,setPriority:Ho,complexity:dc,setComplexity:dl,status:ul,setStatus:So,approach:ml,setApproach:pl,assignee:fl,setAssignee:vi,scheduledDate:Ua,setScheduledDate:Ns,dueDate:jd,setDueDate:Nd,workstreamInput:za,setWorkstreamInput:Si,formTaxonomies:fc,setFormTaxonomies:xt,comments:gl,newCommentText:_i,setNewCommentText:pc,attachments:Ac,setAttachments:ji,attachmentsDirty:Ud,setAttachmentsDirty:Ni,descriptionFocused:Bm,setDescriptionFocused:Ri,showMarkdownHelp:oo,setShowMarkdownHelp:Lo,showChecklist:hc,setShowChecklist:ys,showComments:Lm,setShowComments:$d,isCapturingScreenshot:_c,setIsCapturingScreenshot:Cc,handleSubmit:Zl,resetForm:Wc,handleAddComment:Yl,handleSetWorkstreamForCurrentTask:xu,handleOpenTaskById:Io,returnToPreviousTask:Fc,autoSaveState:wu,unsavedModalOpen:Fs,setUnsavedModalOpen:ra,pendingNavigation:fa,handleNavigation:zl,handleClose:Qm,uiNotice:Wr,pushNotice:mr,clearNotice:W,successBanner:Au,taskReturnTrail:$e,clearReturnToParentTask:Oc,copiedId:Oi,recentlyChangedTaskIds:zs,scheduleWarningPrompt:ep,confirmScheduleWarning:tp,cancelScheduleWarning:ri,tasksScrollRef:Mt,setTasksScrollPos:Ja,exportEnvironment:Ta,setExportEnvironment:Gt,exportWorkflowsPath:Bn,setExportWorkflowsPath:Lr,exportResult:dr,exportingResource:Br,handleUpdateCategory:Bc,handleRemoveCategory:Ds,handleSaveCategory:iu,handleUpdateCategoryIcon:cu,handleUpdateCategoryColor:$l,handleSaveType:uu,handleRemoveType:mu,handleUpdateType:pu,handleUpdateTaxonomies:fu,handleUpdatePriorities:hu,handleUpdateTaxonomyDisplayLabels:ti,pathValidation:ui,validatePaths:Ol,getCategoryPaths:ou,customCategories:us,setCustomCategories:di,projectRoot:Fe,projectName:St,mcpScriptPath:Le,serverHostRoot:Wa,commentsEndRef:Pd,currentTask:_u,currentTaskWorkstream:Cu,currentTaskInitiative:ws,availableWorkflows:ls,initiativeTemplates:et,availableEnvironments:$a,fetchWorkflows:Bt,fetchInitiativeTemplates:Ln,createInitiativeFromTemplate:Dl,fetchWorkflowTemplate:An,fetchWorkflowOverrideNames:wn,saveWorkflowTemplateDraft:Ia,resetWorkflowTemplateDraft:Ya,onExportWorkflows:ur,settingsModel:bs}}const Wb="modulepreload",Fb=function(e){return"/taskforce/"+e},Th={},As=function(t,a,s){let o=Promise.resolve();if(a&&a.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(a.map(y=>{if(y=Fb(y),y in Th)return;Th[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_1x59x_8",$b="_floatingButton_1x59x_18",Ub="_badge_1x59x_49",zb="_configBadge_1x59x_66",Hb="_configBadgeActive_1x59x_76",Gb="_configBadgeRevoked_1x59x_82",Vb="_configBadgeExpired_1x59x_88",qb="_header_1x59x_98",Kb="_headerTitle_1x59x_113",Zb="_brandIcon_1x59x_131",Yb="_brandHomeButton_1x59x_137",Jb="_brandHomeStatic_1x59x_138",Qb="_brandCloudSuffix_1x59x_164",Xb="_projectSlash_1x59x_169",ex="_projectNameGroup_1x59x_176",tx="_projectNameGroupHidden_1x59x_183",nx="_projectName_1x59x_176",ax="_taskCountBadge_1x59x_210",rx="_taskCountBadgeIcon_1x59x_227",sx="_taskCountBadgeAlert_1x59x_231",ox="_headerActions_1x59x_237",ix="_sortDirectionBtn_1x59x_244",cx="_sortDirectionBtnWidget_1x59x_251",lx="_form_1x59x_259",dx="_topRow_1x59x_271",ux="_field_1x59x_277",mx="_labelRow_1x59x_283",px="_label_1x59x_283",fx="_manageLink_1x59x_297",hx="_input_1x59x_316",gx="_select_1x59x_317",yx="_textarea_1x59x_318",kx="_taskIdInlineLink_1x59x_352",vx="_readOnly_1x59x_371",Sx="_selectWithConfig_1x59x_379",wx="_configBtn_1x59x_389",bx="_configBtnActive_1x59x_419",xx="_hasPath_1x59x_427",_x="_pathIndicator_1x59x_432",Cx="_formActions_1x59x_438",Ax="_hasCancel_1x59x_445",Ix="_submitBtn_1x59x_449",Tx="_cancelBtn_1x59x_465",Rx="_successMessage_1x59x_497",jx="_errorMessage_1x59x_503",Nx="_successIcon_1x59x_515",Px="_spinner_1x59x_535",Mx="_spin_1x59x_535",Ex="_boardRefreshIndicator_1x59x_539",Dx="_destructiveBtn_1x59x_569",Lx="_warningBtn_1x59x_592",Bx="_viewTab_1x59x_615",Wx="_deleteBtn_1x59x_626",Fx="_loading_1x59x_636",Ox="_emptyState_1x59x_642",$x="_taskList_1x59x_652",Ux="_taskIdBadge_1x59x_658",zx="_taskIdBadgeLabel_1x59x_680",Hx="_copiedId_1x59x_699",Gx="_highlight_1x59x_705",Vx="_modal_1x59x_717",qx="_priorityEmoji_1x59x_725",Kx="_metaItem_1x59x_729",Zx="_taskFormDateInput_1x59x_743",Yx="_metaBadge_1x59x_753",Jx="_complexityPill_1x59x_768",Qx="_complexityDots_1x59x_772",Xx="_dot_1x59x_778",e_="_dotFilled_1x59x_786",t_="_typePill_1x59x_792",n_="_type_bug_1x59x_796",a_="_type_feature_1x59x_800",r_="_type_chore_1x59x_804",s_="_type_refactor_1x59x_808",o_="_type_documentation_1x59x_812",i_="_type_research_1x59x_816",c_="_type_security_1x59x_824",l_="_approachPill_1x59x_829",d_="_approach_evaluate_1x59x_834",u_="_approach_collaborate_1x59x_840",m_="_approach_plan_1x59x_846",p_="_approachActive_1x59x_852",f_="_statusActionsGroup_1x59x_857",h_="_statusActionsGroupCompact_1x59x_863",g_="_statusSelectWrap_1x59x_867",y_="_statusTaxonomyDropdownWrap_1x59x_873",k_="_statusTaxonomyDropdown_1x59x_873",v_="_statusTaxonomyDropdownCompact_1x59x_881",S_="_statusTaxonomyDropdownIconOnly_1x59x_885",w_="_taxonomyDropdownButton_1x59x_890",b_="_taxonomyDropdownButtonContent_1x59x_907",x_="_statusTaxonomyDropdownIconOnlyPanel_1x59x_911",__="_actionBtn_1x59x_917",C_="_startWorkBtn_1x59x_941",A_="_workingBtn_1x59x_950",I_="_pulse_1x59x_1",T_="_reviewBtn_1x59x_956",R_="_reviewActiveBtn_1x59x_966",j_="_reviewPill_1x59x_972",N_="_archiveTaskBtn_1x59x_979",P_="_bulkArchiveBtn_1x59x_988",M_="_bulkDeleteBtn_1x59x_1010",E_="_completeBtn_1x59x_1051",D_="_completeActiveBtn_1x59x_1061",L_="_deleteActiveBtn_1x59x_1067",B_="_disabledBtn_1x59x_1073",W_="_archiveList_1x59x_1080",F_="_archiveHeader_1x59x_1088",O_="_settingsTab_1x59x_1099",$_="_settingsTabMcpOnly_1x59x_1108",U_="_settingsTabs_1x59x_1117",z_="_settingsLayout_1x59x_1131",H_="_settingsLayoutMcpOnly_1x59x_1138",G_="_settingsSidebar_1x59x_1144",V_="_settingsSidebarHeader_1x59x_1154",q_="_settingsSidebarNav_1x59x_1163",K_="_settingsSidebarBtn_1x59x_1172",Z_="_settingsSidebarBtnActive_1x59x_1196",Y_="_settingsSidebarGroup_1x59x_1203",J_="_settingsSidebarGroupBtn_1x59x_1209",Q_="_settingsSidebarGroupLabel_1x59x_1213",X_="_settingsSidebarGroupChevron_1x59x_1217",eC="_settingsSidebarSubnav_1x59x_1223",tC="_settingsSidebarSubBtn_1x59x_1230",nC="_appScrollbar_1x59x_1253",aC="_settingsTabBtn_1x59x_1257",rC="_settingsTabBtnActive_1x59x_1283",sC="_settingsContent_1x59x_1289",oC="_mcpRegistrationHint_1x59x_1315",iC="_mcpRegistrationPrompt_1x59x_1326",cC="_mcpAuthRequiredCard_1x59x_1345",lC="_mcpAuthRequiredIcon_1x59x_1357",dC="_mcpAuthRequiredBody_1x59x_1370",uC="_mcpAuthRequiredActions_1x59x_1377",mC="_settingsToast_1x59x_1421",pC="_settingsToastSuccess_1x59x_1438",fC="_settingsToastError_1x59x_1444",hC="_inputWithPrefix_1x59x_1450",gC="_pathHint_1x59x_1457",yC="_settingGroup_1x59x_1470",kC="_settingTitle_1x59x_1476",vC="_settingTitleRow_1x59x_1485",SC="_settingTitleActionBtn_1x59x_1492",wC="_themeOptions_1x59x_1512",bC="_buttonGrid_1x59x_1517",xC="_themeBtn_1x59x_1529",_C="_activeTheme_1x59x_1553",CC="_pathInputGroup_1x59x_1561",AC="_saveSettingsBtn_1x59x_1570",IC="_shortcutInputWrapper_1x59x_1591",TC="_inputIcon_1x59x_1596",RC="_settingHelper_1x59x_1605",jC="_browseBtn_1x59x_1612",NC="_inlineCategoryManager_1x59x_1631",PC="_categoryManager_1x59x_1642",MC="_categoryList_1x59x_1648",EC="_categoryChip_1x59x_1660",DC="_categoryChipLabel_1x59x_1673",LC="_chipActionBtn_1x59x_1681",BC="_removeCategoryBtn_1x59x_1701",WC="_addCategoryForm_1x59x_1721",FC="_addCategoryBtn_1x59x_1726",OC="_filesList_1x59x_1751",$C="_helpLink_1x59x_1778",UC="_inlineCode_1x59x_1799",zC="_codeBlock_1x59x_1810",HC="_taskChildrenSummaryBadges_1x59x_1834",GC="_taskChildrenProgressBar_1x59x_1842",VC="_taskChildrenProgressBarSegmentDone_1x59x_1853",qC="_taskChildrenProgressBarSegmentReview_1x59x_1859",KC="_taskChildrenProgressBarSegmentInProgress_1x59x_1865",ZC="_taskChildrenProgressBarSegmentBlocked_1x59x_1871",YC="_taskChildrenProgressText_1x59x_1877",JC="_taskChildUnlinkBtn_1x59x_1886",QC="_aboutText_1x59x_1904",XC="_versionInfo_1x59x_1911",eA="_filterBar_1x59x_1919",tA="_kanbanHintText_1x59x_1933",nA="_searchContainer_1x59x_1939",aA="_searchIcon_1x59x_1946",rA="_searchInput_1x59x_1954",sA="_searchActive_1x59x_1980",oA="_searchCount_1x59x_1985",iA="_clearSearchBtn_1x59x_2001",cA="_filterRow_1x59x_2023",lA="_sortLabel_1x59x_2029",dA="_archiveToggle_1x59x_2037",uA="_filterContainer_1x59x_2074",mA="_filterButton_1x59x_2079",pA="_filterActive_1x59x_2104",fA="_filterDropdown_1x59x_2110",hA="_filterOption_1x59x_2125",gA="_filterDivider_1x59x_2155",yA="_filterSelect_1x59x_2161",kA="_filterToggleBtn_1x59x_2202",vA="_inProgressToggle_1x59x_2224",SA="_activeInProgress_1x59x_2242",wA="_activeFilter_1x59x_2251",bA="_resetFiltersBtn_1x59x_2261",xA="_categoryChip_disabled_1x59x_2294",_A="_categoryVisibilityToggle_1x59x_2304",CA="_editCategoryInput_1x59x_2317",AA="_categoryChipActionBtn_1x59x_2328",IA="_categoryChipActionBtn_active_1x59x_2346",TA="_categoryGroup_1x59x_2351",RA="_categoryHeader_1x59x_2359",jA="_categoryTitle_1x59x_2373",NA="_categoryCount_1x59x_2383",PA="_categoryItems_1x59x_2389",MA="_priorityItem_low_1x59x_2398",EA="_priorityItem_medium_1x59x_2402",DA="_priorityItem_high_1x59x_2406",LA="_priorityItem_critical_1x59x_2410",BA="_priorityPill_low_1x59x_2414",WA="_priorityPill_medium_1x59x_2420",FA="_priorityPill_high_1x59x_2426",OA="_priorityPill_critical_1x59x_2432",$A="_selectPriority_low_1x59x_2447",UA="_selectPriority_medium_1x59x_2452",zA="_selectPriority_high_1x59x_2457",HA="_selectPriority_critical_1x59x_2462",GA="_levelSelect_1x59x_2471",VA="_levelOption_1x59x_2484",qA="_levelOptionFilled_1x59x_2501",KA="_levelOption_priority_low_1x59x_2508",ZA="_levelOption_priority_medium_1x59x_2513",YA="_levelOption_priority_high_1x59x_2518",JA="_levelOption_priority_critical_1x59x_2523",QA="_levelOption_complexity_tiny_1x59x_2530",XA="_levelOption_complexity_low_1x59x_2535",eI="_levelOption_complexity_medium_1x59x_2540",tI="_levelOption_complexity_high_1x59x_2545",nI="_levelOption_complexity_epic_1x59x_2550",aI="_levelOptionActive_1x59x_2557",rI="_levelOptionSelected_1x59x_2562",sI="_levelLabel_1x59x_2570",oI="_fadeIn_1x59x_1",iI="_closeConfigBtn_1x59x_2595",cI="_configItem_1x59x_2617",lI="_settingsLabel_1x59x_2623",dI="_settingsHint_1x59x_2632",uI="_pathList_1x59x_2639",mI="_pathChip_1x59x_2646",pI="_pathValid_1x59x_2659",fI="_pathInvalid_1x59x_2664",hI="_pathValidIcon_1x59x_2669",gI="_pathInvalidIcon_1x59x_2674",yI="_pathText_1x59x_2679",kI="_removePathBtn_1x59x_2686",vI="_pathCount_1x59x_2708",SI="_specialistSection_1x59x_2731",wI="_toggleHeading_1x59x_2739",bI="_dropdownList_1x59x_2779",xI="_specialistBadge_1x59x_2788",_I="_iconGrid_1x59x_2818",CI="_iconPickerBtn_1x59x_2829",AI="_iconPickerBtnActive_1x59x_2848",II="_categorySubConfig_1x59x_2855",TI="_colorPickerRow_1x59x_2863",RI="_colorPickerGrid_1x59x_2869",jI="_colorSwatch_1x59x_2876",NI="_colorSwatchActive_1x59x_2895",PI="_categoryChipIcon_1x59x_2901",MI="_fieldIconWrapper_1x59x_2906",EI="_fieldIcon_1x59x_2906",DI="_field_dynamic_1x59x_2928",LI="_fieldIcon_dynamic_1x59x_2934",BI="_categoryTitleIcon_1x59x_2938",WI="_editActionsHeader_1x59x_2944",FI="_editActionsGroup_1x59x_2953",OI="_urlInputGroup_1x59x_2960",$I="_iconBtn_1x59x_2973",UI="_stickyActionHeader_1x59x_2994",zI="_taskHierarchyHeader_1x59x_3011",HI="_taskHierarchyBadgeRow_1x59x_3018",GI="_taskHierarchyDivider_1x59x_3026",VI="_taskHierarchySegment_1x59x_3032",qI="_taskHierarchyMeta_1x59x_3039",KI="_taskHierarchyActionBtn_1x59x_3052",ZI="_taskHierarchyEditor_1x59x_3058",YI="_taskHierarchyInput_1x59x_3065",JI="_taskSaveStatus_1x59x_3074",QI="_taskSaveStatusCenter_1x59x_3085",XI="_taskSaveStatusError_1x59x_3093",eT="_headerSuccessFeedback_1x59x_3097",tT="_slideInUp_1x59x_1",nT="_successCheck_1x59x_3109",aT="_scaleIn_1x59x_1",rT="_primaryUpdateBtn_1x59x_3145",sT="_secondaryHeaderBtn_1x59x_3173",oT="_secondaryHeaderBtnDestructive_1x59x_3194",iT="_commentSection_1x59x_3207",cT="_attachmentCaptureContainer_1x59x_3243",lT="_capturePrompt_1x59x_3251",dT="_previewContainer_1x59x_3265",uT="_previewHeader_1x59x_3271",mT="_attachmentCapturePreview_1x59x_3281",pT="_actions_1x59x_3288",fT="_primaryButton_1x59x_3294",hT="_secondaryButton_1x59x_3309",gT="_iconButton_1x59x_3324",yT="_attachmentGrid_1x59x_3346",kT="_attachmentCard_1x59x_3353",vT="_attachmentPreviewContainer_1x59x_3367",ST="_contextFileLink_1x59x_3388",wT="_attachmentActions_1x59x_3414",bT="_attachmentActionBtn_1x59x_3428",xT="_attachmentCaptionInput_1x59x_3450",_T="_hiddenInput_1x59x_3468",CT="_contextUploadPanel_1x59x_3472",AT="_contextUploadActions_1x59x_3480",IT="_contextDropzone_1x59x_3488",TT="_contextDropzoneActive_1x59x_3504",RT="_contextDropzonePulse_1x59x_1",jT="_contextLinkRow_1x59x_3512",NT="_contextNotice_1x59x_3518",PT="_documentAttachmentList_1x59x_3524",MT="_documentAttachmentItem_1x59x_3531",ET="_documentAttachmentRow_1x59x_3538",DT="_documentAttachmentLink_1x59x_3546",LT="_documentAttachmentMain_1x59x_3560",BT="_documentAttachmentText_1x59x_3567",WT="_documentAttachmentIcon_1x59x_3575",FT="_documentAttachmentName_1x59x_3586",OT="_documentAttachmentType_1x59x_3595",$T="_documentAttachmentActions_1x59x_3608",UT="_documentAttachmentActionBtn_1x59x_3614",zT="_documentAttachmentCaptionInput_1x59x_3635",HT="_brokenImage_1x59x_3663",GT="_brokenImagePlaceholder_1x59x_3671",VT="_regionOverlay_1x59x_3685",qT="_selectionBox_1x59x_3696",KT="_exportRow_1x59x_3704",ZT="_exportItem_1x59x_3709",YT="_taxonomyDrillDown_1x59x_3718",JT="_drillDownList_1x59x_3728",QT="_drillDownSection_1x59x_3736",XT="_drillDownSectionHeader_1x59x_3742",eR="_drillDownSectionTitle_1x59x_3749",tR="_drillDownItem_1x59x_3758",nR="_drillDownItemDimmed_1x59x_3780",aR="_drillDownItemActive_1x59x_3788",rR="_drillDownItemInfo_1x59x_3793",sR="_drillDownItemText_1x59x_3799",oR="_drillDownItemLabel_1x59x_3804",iR="_drillDownItemSubtext_1x59x_3809",cR="_addTaxonomyBtnSmall_1x59x_3814",lR="_taxonomyDetailView_1x59x_3836",dR="_slideIn_1x59x_1",uR="_detailHeader_1x59x_3856",mR="_detailTitle_1x59x_3865",pR="_detailContent_1x59x_3872",fR="_createOverlay_1x59x_3879",hR="_createDialog_1x59x_3891",gR="_zoomIn_1x59x_1",yR="_dialogActions_1x59x_3919",kR="_settingsGroup_1x59x_3937",vR="_settingsItem_1x59x_3943",SR="_settingLabelGroup_1x59x_3949",wR="_settingLabel_1x59x_3949",bR="_settingDescription_1x59x_3961",xR="_settingInput_1x59x_3968",_R="_codeBlockWrapper_1x59x_3991",CR="_codeHeader_1x59x_4000",AR="_codeHeaderActions_1x59x_4011",IR="_codeLabel_1x59x_4018",TR="_codeHeaderDescription_1x59x_4026",RR="_mcpTokenCardBody_1x59x_4034",jR="_mcpTokenFormGrid_1x59x_4042",NR="_mcpTokenOutputWrap_1x59x_4049",PR="_mcpTokenValueField_1x59x_4056",MR="_mcpTokenValueText_1x59x_4066",ER="_mcpTokenValueInput_1x59x_4079",DR="_mcpTokenActionRow_1x59x_4084",LR="_copyBtn_1x59x_4107",BR="_copyBtnActive_1x59x_4128",WR="_copyBtnNeutralActive_1x59x_4134",FR="_headerDivider_1x59x_4152",OR="_groupByContainer_1x59x_4158",$R="_groupByLabel_1x59x_4166",UR="_groupBySelect_1x59x_4171",zR="_viewSwitcher_1x59x_4193",HR="_selectWithIcon_1x59x_4201",GR="_marginBottom16_1x59x_4205",VR="_headerDraggable_1x59x_4210",qR="_headerDragging_1x59x_4214",KR="_filterSelectSort_1x59x_4222",ZR="_archiveRow_1x59x_4226",YR="_taskScopeToggle_1x59x_4232",JR="_taskScopeTabs_1x59x_4240",QR="_taskScopeTab_1x59x_4240",XR="_taskScopeTabActive_1x59x_4273",ej="_taskToolbarAction_1x59x_4285",tj="_overlayHighZ_1x59x_4301",nj="_savedText_1x59x_4311",aj="_shortcutInput_1x59x_1591",rj="_saveSettingsBtnWrapper_1x59x_4319",sj="_marginBottom12_1x59x_4323",oj="_exportRowGrid_1x59x_4327",ij="_settingSubtitleCustom_1x59x_4332",cj="_capitalize_1x59x_4338",lj="_marginTop12_1x59x_4342",dj="_marginTop16_1x59x_4346",uj="_labelGroupFlex_1x59x_4350",mj="_codeBlockWrapperCustom_1x59x_4356",pj="_kanbanWrapper_1x59x_4362",fj="_kanbanContainer_1x59x_4370",hj="_kanbanTopScroll_1x59x_4392",gj="_kanbanTopScrollSpacer_1x59x_4401",yj="_kanbanColumn_1x59x_4405",kj="_kanbanColumnSticky_1x59x_4421",vj="_kanbanColumnCollapsed_1x59x_4427",Sj="_kanbanColumnPast_1x59x_4432",wj="_kanbanColumnSelectedDay_1x59x_4437",bj="_kanbanHeader_1x59x_4444",xj="_kanbanCount_1x59x_4454",_j="_kanbanHeaderDraggable_1x59x_4474",Cj="_kanbanHeaderPanning_1x59x_4478",Aj="_kanbanQuickAdd_1x59x_4482",Ij="_kanbanColorDot_1x59x_4503",Tj="_kanbanDroppable_1x59x_4515",Rj="_kanbanDroppableScroll_1x59x_4524",jj="_kanbanEmpty_1x59x_4534",Nj="_kanbanCard_1x59x_4544",Pj="_kanbanCardWrapper_1x59x_4554",Mj="_taxonomyDropdownActive_1x59x_4562",Ej="_kanbanCardWrapperRaised_1x59x_4566",Dj="_kanbanCardTitle_1x59x_4570",Lj="_kanbanBadges_1x59x_4574",Bj="_kanbanBadge_1x59x_4574",Wj="_headerFlex_1x59x_4590",Fj="_marginBottom8_1x59x_4597",Oj="_marginBottom20_1x59x_4601",$j="_configPanel_1x59x_4605",Uj="_configPanelLarge_1x59x_4614",zj="_subLabelBlock_1x59x_4618",Hj="_subLabelBlock12_1x59x_4625",Gj="_flexBetween_1x59x_4629",Vj="_flexBetweenCenter_1x59x_4636",qj="_deleteBtnSmall_1x59x_4641",Kj="_deleteBtnMedium_1x59x_4647",Zj="_trashIcon_1x59x_4654",Yj="_gridConfig_1x59x_4658",Jj="_flexColGap4_1x59x_4665",Qj="_flexColGap4Center_1x59x_4671",Xj="_flex1_1x59x_4678",eN="_flexCol_1x59x_4665",tN="_flexGrow1_1x59x_4688",nN="_inputLabel_1x59x_4692",aN="_inputLabelBlock_1x59x_4696",rN="_checkboxInput_1x59x_4702",sN="_configDividerMargin_1x59x_4708",oN="_configDividerMargin24_1x59x_4713",iN="_pathListMargin_1x59x_4718",cN="_cancelBtnRed_1x59x_4722",lN="_code_1x59x_1810",dN="_workflowList_1x59x_4749",uN="_workflowActions_1x59x_4757",mN="_textBtn_1x59x_4766",pN="_workflowGrid_1x59x_4780",fN="_checkboxLabel_1x59x_4788",hN="_checkboxSmall_1x59x_4802",gN="_docWorkspace_1x59x_4821",yN="_docIndexPanel_1x59x_4832",kN="_docWorkspaceTrayMode_1x59x_4844",vN="_docViewerPanel_1x59x_4844",SN="_docWorkspaceTrayOpen_1x59x_4849",wN="_docTrayPanel_1x59x_4853",bN="_docTrayPanelOpen_1x59x_4877",xN="_docSpinning_1x59x_4885",_N="_docSpin_1x59x_4885",CN="_docViewerEmpty_1x59x_4904",AN="_agentsModuleRoot_1x59x_4919",IN="_agentsModuleWithTray_1x59x_4931",TN="_agentsModuleTrayOpen_1x59x_4935",RN="_agentTrayPanel_1x59x_4939",jN="_agentTrayPanelOpen_1x59x_4962",NN="_agentTrayHeader_1x59x_4970",PN="_agentTrayTitle_1x59x_4985",MN="_agentTrayContent_1x59x_4997",EN="_agentTrayContentInner_1x59x_5005",DN="_agentsModuleContent_1x59x_5009",LN="_agentsModuleGroup_1x59x_5014",BN="_marginTop24_1x59x_5018",WN="_settingSubTitle_1x59x_5022",FN="_dangerBtn_1x59x_5031",ON="_aiProfilesExplorer_1x59x_5047",$N="_aiProfilesListPane_1x59x_5058",UN="_aiProfilesList_1x59x_5058",zN="_aiProfilesSection_1x59x_5077",HN="_aiProfilesSectionHeader_1x59x_5083",GN="_aiProfileGroup_1x59x_5091",VN="_aiProfileGroupSelected_1x59x_5114",qN="_aiProfileGroupDuplicate_1x59x_5123",KN="_aiProfileGroupHeader_1x59x_5128",ZN="_aiProfileGroupAvatar_1x59x_5136",YN="_aiProfileGroupIdentity_1x59x_5158",JN="_aiProfileName_1x59x_5167",QN="_aiProfileHandle_1x59x_5175",XN="_aiProfileRole_1x59x_5176",eP="_aiProfileSeatSummary_1x59x_5187",tP="_aiProfileSeatScopeIcon_1x59x_5196",nP="_aiProfileSeatScopeIconDetail_1x59x_5207",aP="_aiProfileSeatScopeIconCloud_1x59x_5212",rP="_aiProfileSeatScopeIconLocal_1x59x_5216",sP="_aiProfileDuplicateBadge_1x59x_5220",oP="_aiProfileMergeSection_1x59x_5232",iP="_aiProfileMergeRow_1x59x_5239",cP="_aiProfileIdChip_1x59x_5246",lP="_aiProfileKeepBadge_1x59x_5258",dP="_aiProfileMergeActions_1x59x_5272",uP="_aiProfileDetailPane_1x59x_5279",mP="_aiProfileDetailCard_1x59x_5285",pP="_aiProfileDetailHero_1x59x_5297",fP="_aiProfileDetailIcon_1x59x_5303",hP="_aiProfileDetailAvatar_1x59x_5317",gP="_aiProfileDetailHeading_1x59x_5321",yP="_aiProfileDetailTitleRow_1x59x_5326",kP="_aiProfileDetailTitle_1x59x_5326",vP="_aiProfileDetailMetaRow_1x59x_5341",SP="_aiProfileDetailHandle_1x59x_5349",wP="_aiProfileDetailRole_1x59x_5354",bP="_aiProfileDetailLinkedCount_1x59x_5361",xP="_aiProfileDetailDescription_1x59x_5366",_P="_aiProfileSignatureColor_1x59x_5373",CP="_aiProfileSignatureSwatch_1x59x_5383",AP="_aiProfileDetailDataList_1x59x_5393",IP="_aiProfileDetailDataGroup_1x59x_5402",TP="_aiProfileDetailDateGroup_1x59x_5409",RP="_aiProfileDetailDataRow_1x59x_5414",jP="_aiProfileDetailDataLabel_1x59x_5423",NP="_aiProfileDetailDataValue_1x59x_5430",PP="_aiProfileStatusSelect_1x59x_5436",MP="_aiProfileInstanceSection_1x59x_5478",EP="_aiProfileInstanceSectionHeader_1x59x_5484",DP="_aiProfileInstanceList_1x59x_5494",LP="_aiProfileInstanceCard_1x59x_5500",BP="_aiProfileIdFooter_1x59x_5513",WP="_aiProfileIdFooterValue_1x59x_5523",FP="_aiProfileDangerTextButton_1x59x_5533",OP="_aiProfileInstanceTopRow_1x59x_5565",$P="_aiProfileInstanceName_1x59x_5572",UP="_aiProfileInstanceMeta_1x59x_5579",zP="_aiProfileInlineError_1x59x_5587",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,projectNameGroup:ex,projectNameGroupHidden:tx,projectName:nx,taskCountBadge:ax,taskCountBadgeIcon:rx,taskCountBadgeAlert:sx,headerActions:ox,sortDirectionBtn:ix,sortDirectionBtnWidget:cx,form:lx,topRow:dx,field:ux,labelRow:mx,label:px,manageLink:fx,input:hx,select:gx,textarea:yx,taskIdInlineLink:kx,readOnly:vx,selectWithConfig:Sx,configBtn:wx,configBtnActive:bx,hasPath:xx,pathIndicator:_x,formActions:Cx,hasCancel:Ax,submitBtn:Ix,cancelBtn:Tx,successMessage:Rx,errorMessage:jx,successIcon:Nx,spinner:Px,spin:Mx,boardRefreshIndicator:Ex,destructiveBtn:Dx,warningBtn:Lx,viewTab:Bx,deleteBtn:Wx,loading:Fx,emptyState:Ox,taskList:$x,taskIdBadge:Ux,taskIdBadgeLabel:zx,copiedId:Hx,highlight:Gx,modal:Vx,priorityEmoji:qx,metaItem:Kx,taskFormDateInput:Zx,metaBadge:Yx,complexityPill:Jx,complexityDots:Qx,dot:Xx,dotFilled:e_,typePill:t_,type_bug:n_,type_feature:a_,type_chore:r_,type_refactor:s_,type_documentation:o_,type_research:i_,"type_ui-ux":"_type_ui-ux_1x59x_820",type_security:c_,approachPill:l_,approach_evaluate:d_,approach_collaborate:u_,approach_plan:m_,approachActive:p_,statusActionsGroup:f_,statusActionsGroupCompact:h_,statusSelectWrap:g_,statusTaxonomyDropdownWrap:y_,statusTaxonomyDropdown:k_,statusTaxonomyDropdownCompact:v_,statusTaxonomyDropdownIconOnly:S_,taxonomyDropdownButton:w_,taxonomyDropdownButtonContent:b_,statusTaxonomyDropdownIconOnlyPanel:x_,actionBtn:__,startWorkBtn:C_,workingBtn:A_,pulse:I_,reviewBtn:T_,reviewActiveBtn:R_,reviewPill:j_,archiveTaskBtn:N_,bulkArchiveBtn:P_,bulkDeleteBtn:M_,completeBtn:E_,completeActiveBtn:D_,deleteActiveBtn:L_,disabledBtn:B_,archiveList:W_,archiveHeader:F_,settingsTab:O_,settingsTabMcpOnly:$_,settingsTabs:U_,settingsLayout:z_,settingsLayoutMcpOnly:H_,settingsSidebar:G_,settingsSidebarHeader:V_,settingsSidebarNav:q_,settingsSidebarBtn:K_,settingsSidebarBtnActive:Z_,settingsSidebarGroup:Y_,settingsSidebarGroupBtn:J_,settingsSidebarGroupLabel:Q_,settingsSidebarGroupChevron:X_,settingsSidebarSubnav:eC,settingsSidebarSubBtn:tC,appScrollbar:nC,settingsTabBtn:aC,settingsTabBtnActive:rC,settingsContent:sC,mcpRegistrationHint:oC,mcpRegistrationPrompt:iC,mcpAuthRequiredCard:cC,mcpAuthRequiredIcon:lC,mcpAuthRequiredBody:dC,mcpAuthRequiredActions:uC,settingsToast:mC,settingsToastSuccess:pC,settingsToastError:fC,inputWithPrefix:hC,pathHint:gC,settingGroup:yC,settingTitle:kC,settingTitleRow:vC,settingTitleActionBtn:SC,themeOptions:wC,buttonGrid:bC,themeBtn:xC,activeTheme:_C,pathInputGroup:CC,saveSettingsBtn:AC,shortcutInputWrapper:IC,inputIcon:TC,settingHelper:RC,browseBtn:jC,inlineCategoryManager:NC,categoryManager:PC,categoryList:MC,categoryChip:EC,categoryChipLabel:DC,chipActionBtn:LC,removeCategoryBtn:BC,addCategoryForm:WC,addCategoryBtn:FC,filesList:OC,helpLink:$C,inlineCode:UC,codeBlock:zC,taskChildrenSummaryBadges:HC,taskChildrenProgressBar:GC,taskChildrenProgressBarSegmentDone:VC,taskChildrenProgressBarSegmentReview:qC,taskChildrenProgressBarSegmentInProgress:KC,taskChildrenProgressBarSegmentBlocked:ZC,taskChildrenProgressText:YC,taskChildUnlinkBtn:JC,aboutText:QC,versionInfo:XC,filterBar:eA,kanbanHintText:tA,searchContainer:nA,searchIcon:aA,searchInput:rA,searchActive:sA,searchCount:oA,clearSearchBtn:iA,filterRow:cA,sortLabel:lA,archiveToggle:dA,filterContainer:uA,filterButton:mA,filterActive:pA,filterDropdown:fA,filterOption:hA,filterDivider:gA,filterSelect:yA,filterToggleBtn:kA,inProgressToggle:vA,activeInProgress:SA,activeFilter:wA,resetFiltersBtn:bA,categoryChip_disabled:xA,categoryVisibilityToggle:_A,editCategoryInput:CA,categoryChipActionBtn:AA,categoryChipActionBtn_active:IA,categoryGroup:TA,categoryHeader:RA,categoryTitle:jA,categoryCount:NA,categoryItems:PA,priorityItem_low:MA,priorityItem_medium:EA,priorityItem_high:DA,priorityItem_critical:LA,priorityPill_low:BA,priorityPill_medium:WA,priorityPill_high:FA,priorityPill_critical:OA,selectPriority_low:$A,selectPriority_medium:UA,selectPriority_high:zA,selectPriority_critical:HA,"critical-glow":"_critical-glow_1x59x_1",levelSelect:GA,levelOption:VA,levelOptionFilled:qA,levelOption_priority_low:KA,levelOption_priority_medium:ZA,levelOption_priority_high:YA,levelOption_priority_critical:JA,levelOption_complexity_tiny:QA,levelOption_complexity_low:XA,levelOption_complexity_medium:eI,levelOption_complexity_high:tI,levelOption_complexity_epic:nI,levelOptionActive:aI,levelOptionSelected:rI,levelLabel:sI,fadeIn:oI,closeConfigBtn:iI,configItem:cI,settingsLabel:lI,settingsHint:dI,pathList:uI,pathChip:mI,pathValid:pI,pathInvalid:fI,pathValidIcon:hI,pathInvalidIcon:gI,pathText:yI,removePathBtn:kI,pathCount:vI,specialistSection:SI,toggleHeading:wI,dropdownList:bI,specialistBadge:xI,iconGrid:_I,iconPickerBtn:CI,iconPickerBtnActive:AI,categorySubConfig:II,colorPickerRow:TI,colorPickerGrid:RI,colorSwatch:jI,colorSwatchActive:NI,categoryChipIcon:PI,fieldIconWrapper:MI,fieldIcon:EI,field_dynamic:DI,fieldIcon_dynamic:LI,categoryTitleIcon:BI,editActionsHeader:WI,editActionsGroup:FI,urlInputGroup:OI,iconBtn:$I,stickyActionHeader:UI,taskHierarchyHeader:zI,taskHierarchyBadgeRow:HI,taskHierarchyDivider:GI,taskHierarchySegment:VI,taskHierarchyMeta:qI,taskHierarchyActionBtn:KI,taskHierarchyEditor:ZI,taskHierarchyInput:YI,taskSaveStatus:JI,taskSaveStatusCenter:QI,taskSaveStatusError:XI,headerSuccessFeedback:eT,slideInUp:tT,successCheck:nT,scaleIn:aT,primaryUpdateBtn:rT,secondaryHeaderBtn:sT,secondaryHeaderBtnDestructive:oT,commentSection:iT,attachmentCaptureContainer:cT,capturePrompt:lT,previewContainer:dT,previewHeader:uT,attachmentCapturePreview:mT,actions:pT,primaryButton:fT,secondaryButton:hT,iconButton:gT,attachmentGrid:yT,attachmentCard:kT,attachmentPreviewContainer:vT,contextFileLink:ST,attachmentActions:wT,attachmentActionBtn:bT,attachmentCaptionInput:xT,hiddenInput:_T,contextUploadPanel:CT,contextUploadActions:AT,contextDropzone:IT,contextDropzoneActive:TT,contextDropzonePulse:RT,contextLinkRow:jT,contextNotice:NT,documentAttachmentList:PT,documentAttachmentItem:MT,documentAttachmentRow:ET,documentAttachmentLink:DT,documentAttachmentMain:LT,documentAttachmentText:BT,documentAttachmentIcon:WT,documentAttachmentName:FT,documentAttachmentType:OT,documentAttachmentActions:$T,documentAttachmentActionBtn:UT,documentAttachmentCaptionInput:zT,brokenImage:HT,brokenImagePlaceholder:GT,regionOverlay:VT,selectionBox:qT,exportRow:KT,exportItem:ZT,taxonomyDrillDown:YT,drillDownList:JT,drillDownSection:QT,drillDownSectionHeader:XT,drillDownSectionTitle:eR,drillDownItem:tR,drillDownItemDimmed:nR,drillDownItemActive:aR,drillDownItemInfo:rR,drillDownItemText:sR,drillDownItemLabel:oR,drillDownItemSubtext:iR,addTaxonomyBtnSmall:cR,taxonomyDetailView:lR,slideIn:dR,detailHeader:uR,detailTitle:mR,detailContent:pR,createOverlay:fR,createDialog:hR,zoomIn:gR,dialogActions:yR,settingsGroup:kR,settingsItem:vR,settingLabelGroup:SR,settingLabel:wR,settingDescription:bR,settingInput:xR,codeBlockWrapper:_R,codeHeader:CR,codeHeaderActions:AR,codeLabel:IR,codeHeaderDescription:TR,mcpTokenCardBody:RR,mcpTokenFormGrid:jR,mcpTokenOutputWrap:NR,mcpTokenValueField:PR,mcpTokenValueText:MR,mcpTokenValueInput:ER,mcpTokenActionRow:DR,copyBtn:LR,copyBtnActive:BR,copyBtnNeutralActive:WR,headerDivider:FR,groupByContainer:OR,groupByLabel:$R,groupBySelect:UR,viewSwitcher:zR,selectWithIcon:HR,marginBottom16:GR,headerDraggable:VR,headerDragging:qR,filterSelectSort:KR,archiveRow:ZR,taskScopeToggle:YR,taskScopeTabs:JR,taskScopeTab:QR,taskScopeTabActive:XR,taskToolbarAction:ej,overlayHighZ:tj,savedText:nj,shortcutInput:aj,saveSettingsBtnWrapper:rj,marginBottom12:sj,exportRowGrid:oj,settingSubtitleCustom:ij,capitalize:cj,marginTop12:lj,marginTop16:dj,labelGroupFlex:uj,codeBlockWrapperCustom:mj,kanbanWrapper:pj,kanbanContainer:fj,kanbanTopScroll:hj,kanbanTopScrollSpacer:gj,kanbanColumn:yj,kanbanColumnSticky:kj,kanbanColumnCollapsed:vj,kanbanColumnPast:Sj,kanbanColumnSelectedDay:wj,kanbanHeader:bj,kanbanCount:xj,kanbanHeaderDraggable:_j,kanbanHeaderPanning:Cj,kanbanQuickAdd:Aj,kanbanColorDot:Ij,kanbanDroppable:Tj,kanbanDroppableScroll:Rj,kanbanEmpty:jj,kanbanCard:Nj,kanbanCardWrapper:Pj,taxonomyDropdownActive:Mj,kanbanCardWrapperRaised:Ej,kanbanCardTitle:Dj,kanbanBadges:Lj,kanbanBadge:Bj,headerFlex:Wj,marginBottom8:Fj,marginBottom20:Oj,configPanel:$j,configPanelLarge:Uj,subLabelBlock:zj,subLabelBlock12:Hj,flexBetween:Gj,flexBetweenCenter:Vj,deleteBtnSmall:qj,deleteBtnMedium:Kj,trashIcon:Zj,gridConfig:Yj,flexColGap4:Jj,flexColGap4Center:Qj,flex1:Xj,flexCol:eN,flexGrow1:tN,inputLabel:nN,inputLabelBlock:aN,checkboxInput:rN,configDividerMargin:sN,configDividerMargin24:oN,pathListMargin:iN,cancelBtnRed:cN,code:lN,workflowList:dN,workflowActions:uN,textBtn:mN,workflowGrid:pN,checkboxLabel:fN,checkboxSmall:hN,docWorkspace:gN,docIndexPanel:yN,docWorkspaceTrayMode:kN,docViewerPanel:vN,docWorkspaceTrayOpen:SN,docTrayPanel:wN,docTrayPanelOpen:bN,docSpinning:xN,docSpin:_N,docViewerEmpty:CN,agentsModuleRoot:AN,agentsModuleWithTray:IN,agentsModuleTrayOpen:TN,agentTrayPanel:RN,agentTrayPanelOpen:jN,agentTrayHeader:NN,agentTrayTitle:PN,agentTrayContent:MN,agentTrayContentInner:EN,agentsModuleContent:DN,agentsModuleGroup:LN,marginTop24:BN,settingSubTitle:WN,dangerBtn:FN,aiProfilesExplorer:ON,aiProfilesListPane:$N,aiProfilesList:UN,aiProfilesSection:zN,aiProfilesSectionHeader:HN,aiProfileGroup:GN,aiProfileGroupSelected:VN,aiProfileGroupDuplicate:qN,aiProfileGroupHeader:KN,aiProfileGroupAvatar:ZN,aiProfileGroupIdentity:YN,aiProfileName:JN,aiProfileHandle:QN,aiProfileRole:XN,aiProfileSeatSummary:eP,aiProfileSeatScopeIcon:tP,aiProfileSeatScopeIconDetail:nP,aiProfileSeatScopeIconCloud:aP,aiProfileSeatScopeIconLocal:rP,aiProfileDuplicateBadge:sP,aiProfileMergeSection:oP,aiProfileMergeRow:iP,aiProfileIdChip:cP,aiProfileKeepBadge:lP,aiProfileMergeActions:dP,aiProfileDetailPane:uP,aiProfileDetailCard:mP,aiProfileDetailHero:pP,aiProfileDetailIcon:fP,aiProfileDetailAvatar:hP,aiProfileDetailHeading:gP,aiProfileDetailTitleRow:yP,aiProfileDetailTitle:kP,aiProfileDetailMetaRow:vP,aiProfileDetailHandle:SP,aiProfileDetailRole:wP,aiProfileDetailLinkedCount:bP,aiProfileDetailDescription:xP,aiProfileSignatureColor:_P,aiProfileSignatureSwatch:CP,aiProfileDetailDataList:AP,aiProfileDetailDataGroup:IP,aiProfileDetailDateGroup:TP,aiProfileDetailDataRow:RP,aiProfileDetailDataLabel:jP,aiProfileDetailDataValue:NP,aiProfileStatusSelect:PP,aiProfileInstanceSection:MP,aiProfileInstanceSectionHeader:EP,aiProfileInstanceList:DP,aiProfileInstanceCard:LP,aiProfileIdFooter:BP,aiProfileIdFooterValue:WP,aiProfileDangerTextButton:FP,aiProfileInstanceTopRow:OP,aiProfileInstanceName:$P,aiProfileInstanceMeta:UP,aiProfileInlineError:zP},HP="_standaloneWrapper_1r0om_1",GP="_standalonePage_1r0om_11",VP="_standaloneHeader_1r0om_21",qP="_standaloneTitle_1r0om_27",KP="_standaloneContent_1r0om_31",ZP="_workspaceToolRail_1r0om_37",YP="_workspaceToolRailMain_1r0om_54",JP="_workspaceToolRailBottom_1r0om_62",QP="_workspaceToolRailDivider_1r0om_72",XP="_workspaceToolButton_1r0om_79",e0="_workspaceToolButtonActive_1r0om_99",t0="_workspaceToolButtonDisabled_1r0om_106",n0="_headerTitleWidget_1r0om_137",en={standaloneWrapper:HP,standalonePage:GP,standaloneHeader:VP,standaloneTitle:qP,standaloneContent:KP,workspaceToolRail:ZP,workspaceToolRailMain:YP,workspaceToolRailBottom:JP,workspaceToolRailDivider:QP,workspaceToolButton:XP,workspaceToolButtonActive:e0,workspaceToolButtonDisabled:t0,headerTitleWidget:n0},a0="_overlay_11v7l_1",r0="_browser_11v7l_16",s0="_header_11v7l_27",o0="_pathInfo_11v7l_36",i0="_actions_11v7l_52",c0="_list_11v7l_57",l0="_item_11v7l_63",d0="_itemCurrent_11v7l_80",u0="_itemFile_11v7l_86",m0="_empty_11v7l_90",Tn={overlay:a0,browser:r0,header:s0,pathInfo:o0,actions:i0,list:c0,item:l0,itemCurrent:d0,itemFile:u0,empty:m0},p0="_overlay_1hk7m_2",f0="_overlayHighZ_1hk7m_15",h0="_modal_1hk7m_20",g0="_draggableModal_1hk7m_46",y0="_draggableHeader_1hk7m_53",k0="_headerActions_1hk7m_61",v0="_modalContent_1hk7m_69",S0="_form_1hk7m_80",w0="_formActions_1hk7m_91",b0="_modalFooter_1hk7m_98",x0="_modalSizeSm_1hk7m_104",_0="_modalSizeMd_1hk7m_108",C0="_modalSizeMdWide_1hk7m_112",A0="_modalSizeLg_1hk7m_116",I0="_modalSizeXl_1hk7m_120",T0="_modalSizeFull_1hk7m_124",R0="_settingsViewModal_1hk7m_129",j0="_unsavedOverlay_1hk7m_148",N0="_unsavedModal_1hk7m_153",P0="_unsavedHeader_1hk7m_159",M0="_unsavedTitle_1hk7m_164",E0="_unsavedContent_1hk7m_168",D0="_unsavedText_1hk7m_172",L0="_unsavedActions_1hk7m_177",Tt={overlay:p0,overlayHighZ:f0,modal:h0,draggableModal:g0,draggableHeader:y0,headerActions:k0,modalContent:v0,form:S0,formActions:w0,modalFooter:b0,modalSizeSm:x0,modalSizeMd:_0,modalSizeMdWide:C0,modalSizeLg:A0,modalSizeXl:I0,modalSizeFull:T0,settingsViewModal:R0,unsavedOverlay:j0,unsavedModal:N0,unsavedHeader:P0,unsavedTitle:M0,unsavedContent:E0,unsavedText:D0,unsavedActions:L0};function B0(e){const t=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),a={Category:"Categories",Priority:"Priorities",Status:"Statuses"};return a[t]?a[t]:`${e}s`}function qi({label:e,options:t,selected:a,onChange:s,variant:o="label",containerStyle:l}){const[i,d]=r.useState(!1),m=r.useRef(null);r.useEffect(()=>{const I=C=>{m.current&&!m.current.contains(C.target)&&d(!1)};return document.addEventListener("mousedown",I),()=>document.removeEventListener("mousedown",I)},[]);const y=I=>{a.includes(I)?s(a.filter(C=>C!==I)):s([...a,I])},k=t.length>0&&t.every(I=>{const C=o==="label"?I.label:I.value;return a.includes(C)}),S=!t.some(I=>{const C=o==="label"?I.label:I.value;return a.includes(C)}),h=()=>{s(k?[]:t.map(I=>o==="label"?I.label:I.value))},g=t.filter(I=>{const C=o==="label"?I.label:I.value;return a.includes(C)}).length,v=B0(e),x=k?`All ${v}`:S?`No ${v}`:g===1?`1 ${e}`:`${g} ${v}`;return n.jsxs("div",{className:p.filterContainer,ref:m,style:l,children:[n.jsxs("button",{className:`${p.filterButton} ${k?"":p.filterActive}`,onClick:()=>d(!i),title:`Filter by ${e}`,children:[n.jsx("span",{children:x}),n.jsx(al,{size:14,style:{transform:i?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),i&&n.jsxs("div",{className:`${p.filterDropdown} ${p.appScrollbar} tf-scrollbar`,children:[n.jsxs("div",{className:p.filterOption,onClick:h,children:[n.jsx("input",{type:"checkbox",checked:k,onChange:()=>{}}),n.jsx("span",{style:{fontWeight:600},children:"Toggle All"})]}),n.jsx("div",{className:p.filterDivider}),t.map(I=>{const C=o==="label"?I.label:I.value,D=a.includes(C);return n.jsxs("div",{className:p.filterOption,onClick:()=>y(C),children:[n.jsx("input",{type:"checkbox",checked:D,onChange:()=>{}}),n.jsx("span",{children:I.label})]},I.value)})]})]})}const W0="_taskItem_zvr7q_1",F0="_compressed_zvr7q_20",O0="_taskHeader_zvr7q_25",$0="_taskReferenceCluster_zvr7q_30",U0="_taskMeta_zvr7q_34",z0="_taskTitle_zvr7q_40",H0="_taskItemRecentlyChanged_zvr7q_67",G0="_assigneeAvatarImage_zvr7q_107",V0="_assigneeAvatarIndicator_zvr7q_115",q0="_assigneeAvatarEmpty_zvr7q_137",K0="_inProgress_zvr7q_164",Z0="_onHold_zvr7q_175",Y0="_readyForReview_zvr7q_186",J0="_completed_zvr7q_197",Q0="_cancelled_zvr7q_208",X0="_archived_zvr7q_219",e1="_taskContent_zvr7q_229",t1="_kanbanCardOverlay_zvr7q_238",n1="_taskReferenceText_zvr7q_277",a1="_taskReferenceDivider_zvr7q_286",r1="_taskActions_zvr7q_293",s1="_taskMetaCompact_zvr7q_318",o1="_taskMetaRow_zvr7q_325",i1="_taskMetaBadgeGroup_zvr7q_333",c1="_taskDescription_zvr7q_339",l1="_taskLatestComment_zvr7q_398",d1="_taskCancellationReason_zvr7q_419",u1="_archiveBadge_zvr7q_573",m1="_attachmentThumbnails_zvr7q_578",p1="_attachmentImageRow_zvr7q_585",f1="_attachmentDocumentList_zvr7q_592",h1="_attachmentThumbnail_zvr7q_578",g1="_contextDocThumb_zvr7q_625",y1="_contextDocMain_zvr7q_651",k1="_contextDocText_zvr7q_658",v1="_contextDocIcon_zvr7q_666",S1="_contextDocName_zvr7q_677",w1="_contextDocType_zvr7q_687",b1="_taskSpecialists_zvr7q_699",x1="_taxonomiesList_zvr7q_708",Qt={taskItem:W0,compressed:F0,taskHeader:O0,taskReferenceCluster:$0,taskMeta:U0,taskTitle:z0,taskItemRecentlyChanged:H0,assigneeAvatarImage:G0,assigneeAvatarIndicator:V0,assigneeAvatarEmpty:q0,inProgress:K0,onHold:Z0,readyForReview:Y0,completed:J0,cancelled:Q0,archived:X0,taskContent:e1,kanbanCardOverlay:t1,taskReferenceText:n1,taskReferenceDivider:a1,taskActions:r1,taskMetaCompact:s1,taskMetaRow:o1,taskMetaBadgeGroup:i1,taskDescription:c1,taskLatestComment:l1,taskCancellationReason:d1,archiveBadge:u1,attachmentThumbnails:m1,attachmentImageRow:p1,attachmentDocumentList:f1,attachmentThumbnail:h1,contextDocThumb:g1,contextDocMain:y1,contextDocText:k1,contextDocIcon:v1,contextDocName:S1,contextDocType:w1,taskSpecialists:b1,taxonomiesList:x1},cy=({children:e,className:t,onTaskIdClick:a})=>{if(!e)return null;const s=i=>Ue.Children.toArray(i).some(m=>Ue.isValidElement(m)?String(m.props?.className||"").includes("task-list-item"):!1),o=/\b(task-\d{10,}-[a-z0-9]+)\b/gi,l=i=>{if(!a)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],x=g.index??-1;x<S||(x>S&&k.push(i.slice(S,x)),k.push(n.jsx("button",{type:"button",className:p.taskIdInlineLink,onClick:I=>{I.preventDefault(),I.stopPropagation(),a(v)},children:v},`${v}-${x}-${h}`)),S=x+v.length)}return S<i.length&&k.push(i.slice(S)),k}if(Array.isArray(i))return i.map(l);if(!Ue.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:Ue.cloneElement(i,{},Ue.Children.map(m,l))};return n.jsx("div",{className:t,children:n.jsx(nv,{remarkPlugins:[av,rv],components:{p:({children:i})=>n.jsx("p",{children:l(i)}),ul:({children:i})=>n.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 n.jsx("li",{className:d,style:m?{listStyle:"none"}:void 0,children:l(i)})},input:({type:i,checked:d})=>i!=="checkbox"?n.jsx("input",{type:i,checked:d,readOnly:!0}):n.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
- `)?n.jsx("pre",{className:p.codeBlock,children:n.jsx("code",{className:d,...m,children:y})}):n.jsx("code",{className:p.inlineCode,...m,children:y})}},children:e})})};function ly({label:e,title:t,ariaLabel:a,copied:s=!1,disabled:o=!1,className:l="",onClick:i,children:d}){return n.jsxs("button",{type:"button",className:`${p.taskIdBadge} ${s?p.copiedId:""} ${l}`.trim(),onClick:i,disabled:o,title:t,"aria-label":a,children:[s?n.jsx(ao,{size:13}):n.jsx(tf,{size:13}),n.jsx("span",{className:p.taskIdBadgeLabel,children:d??e})]})}function Qu({copied:e,disabled:t=!1,label:a,onClick:s,title:o="Copy task reference",ariaLabel:l,className:i=""}){return n.jsx(ly,{copied:e,disabled:t,label:"",onClick:s,title:o,ariaLabel:l,className:i,children:a})}const _1=(e,t=10)=>{const a=mm[e?.toLowerCase()]||{icon:"FileCode"},s=Cs[a.icon]||Rk;return n.jsx(s,{size:t})},Uu=(e,t)=>{if(!e)return null;const a=t.trim();if(!a)return e;const o=Tm(a)?.match(/^(lt|t)-(\d+)$/),l=o?`${o[1]==="lt"?"l\\s*t":"t"}\\s*(?:-|\\s)?\\s*${o[2]}`:a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=new RegExp(`^${l}$`,"i"),d=e.split(new RegExp(`(${l})`,"gi"));return n.jsx(n.Fragment,{children:d.map((m,y)=>i.test(m)?n.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 a=dy(wd(e)).match(/\/api\/taskforce\/documents\/([^/]+)\/content$/i);if(!a?.[1])return null;try{return decodeURIComponent(a[1]).trim()||null}catch{return a[1].trim()||null}}function my(e){if(!e.includes("/api/taskforce/context-link?path="))return null;try{const a=new URL(e,window.location.origin).searchParams.get("path");return a?wd(a):null}catch{return null}}function C1(e,t){const a=(t||(typeof e=="string"?"":e.fsPath||"")).trim();if(a)return wd(a);const s=jm(e),o=my(s);return o?wd(o):null}function A1(e,t){const a=String(typeof e=="string"?"":e.assetId||"").trim();if(a)return a;const s=jm(e);return uy(s)}function I1(e,t){const a=jm(e);return uy(a)?!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(a)||"",a].some(o=>{if(!o)return!1;const l=dy(wd(o)).toLowerCase();return l.endsWith(".md")||l.endsWith(".markdown")})}function T1(e,t){const a=jm(e),s=C1(e,t);if(!s||!I1(e,s))return!1;const o=A1(e),l=new CustomEvent("taskforce:open-markdown-document",{detail:{path:a,fsPath:s,...o?{assetId:o}:{},...typeof e!="string"&&e.taskId?{taskId:e.taskId}:{}},cancelable:!0});return!window.dispatchEvent(l)}const R1="I-";function py(e){return Cm(R1,e)}function j1(e){return e.trim().replace(/\\/g,"/")}function fy(e){return typeof e=="string"?e:String(e.path||"").trim()}function N1(e){return/\.(png|jpe?g|webp)(\?|#|$)/i.test(e)}function P1(e){return typeof e=="string"?j1(e).split("/").pop()||"Image attachment":String(e.caption||e.displayName||e.originalFilename||e.fsPath||e.path.split("/").pop()||"Image attachment").trim()}function M1(e,t){if(typeof e=="string")return!1;const a=String(e.assetId||"").trim(),s=fy(e);return!!(a&&s&&N1(s))}function E1(e,t){if(!M1(e))return!1;const a=e,s=String(t?.taskId||a.taskId||"").trim(),o=String(t?.taskReferenceLabel||"").trim(),l=String(a.assetId||"").trim(),i=py(a),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:P1(e)},cancelable:!0});return!window.dispatchEvent(m)}function Rh(e,t){if(!e)return null;const a=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=a?t.find(y=>y.id===a):void 0,m=a?i||Xi(d)||a:void 0;return{...a?{taskId:a}:{},...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 a=t.split("/").filter(Boolean);return a[a.length-1]||""}function xf(e){const t=String(e||"").trim(),a=t.lastIndexOf(".");return a<=0?{stem:t,ext:""}:{stem:t.slice(0,a),ext:t.slice(a)}}function hy(e,t){const a=String(e||"").trim(),s=String(t||"").trim();return a?s&&a.startsWith(`${s}-`)?a.slice(s.length+1):a.replace(/^asset-[a-z0-9-]+-/i,""):""}function D1(e){return String(e||"").replace(/-\d{13,}$/g,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim()}function jh(e,t){const{stem:a,ext:s}=xf(hm(e)),o=hy(a,t),l=D1(o||a);return l?`${l}${s}`:hm(e)||"Untitled document"}function bp(e,t){const a=String(e||"").trim();if(!a)return!0;const s=hm(a),{stem:o}=xf(s),l=String(t||"").trim();if(l&&o.toLowerCase()===l.toLowerCase())return!0;const i=hy(o,t);return i?i!==o:!0}function L1(e){const t=String(e.logicalName||"").trim();if(t&&!bp(t,e.assetId))return t;const a=String(e.displayName||"").trim();if(a&&!bp(a,e.assetId))return a;const s=String(e.title||"").trim();if(s&&!bp(s,e.assetId))return s;const o=String(e.originalFilename||"").trim();if(o)return jh(o,e.assetId);const l=String(e.fsPath||"").trim();return l?jh(l,e.assetId):"Untitled document"}function B1(e){return L1(e)}function W1(e){const t=B1(e),a=String(e.originalFilename||e.fsPath||"").trim(),s=xf(hm(a)).ext;return s?t.toLowerCase().endsWith(s.toLowerCase())?t:`${t}${s}`:t}const F1="_taxonomyDropdown_tt12a_1",O1="_taxonomyDropdownActive_tt12a_6",$1="_taxonomyDropdownButton_tt12a_11",U1="_taxonomyDropdownOpen_tt12a_50",z1="_taxonomyDropdownButtonContent_tt12a_56",H1="_taxonomyDropdownIcon_tt12a_64",G1="_taxonomyDropdownLabel_tt12a_72",V1="_taxonomyDropdownChevron_tt12a_81",q1="_taxonomyDropdownChevronOpen_tt12a_87",K1="_taxonomyDropdownPanel_tt12a_91",Z1="_taxonomyDropdownPanelPortal_tt12a_110",Y1="_taxonomyDropdownOption_tt12a_129",J1="_taxonomyDropdownOptionHighlighted_tt12a_157",Q1="_taxonomyDropdownOptionSelected_tt12a_163",yr={taxonomyDropdown:F1,taxonomyDropdownActive:O1,taxonomyDropdownButton:$1,taxonomyDropdownOpen:U1,taxonomyDropdownButtonContent:z1,taxonomyDropdownIcon:H1,taxonomyDropdownLabel:G1,taxonomyDropdownChevron:V1,taxonomyDropdownChevronOpen:q1,taxonomyDropdownPanel:K1,taxonomyDropdownPanelPortal:Z1,taxonomyDropdownOption:Y1,taxonomyDropdownOptionHighlighted:J1,taxonomyDropdownOptionSelected:Q1};function id({value:e,options:t,onChange:a,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,x]=r.useState(!1),[I,C]=r.useState(-1),[D,U]=r.useState({}),L=r.useRef(null),X=r.useRef(null),me=r.useRef(null),se=t.find(Y=>String(Y.value)===String(e));r.useEffect(()=>{if(!v)return;const Y=P=>{const z=P.target,ie=!!L.current?.contains(z),fe=!!me.current?.contains(z);!ie&&!fe&&(x(!1),C(-1))};return document.addEventListener("mousedown",Y),()=>document.removeEventListener("mousedown",Y)},[v]),r.useEffect(()=>{if(!v)C(-1);else{const Y=t.findIndex(P=>String(P.value)===String(e));C(Y>=0?Y:0)}},[v,t,e]),r.useEffect(()=>{if(!v||!h)return;const Y=()=>{const P=X.current;if(!P)return;const z=P.getBoundingClientRect(),ie=Math.max(g||0,z.width),fe=Math.max(8,z.right-ie),q=z.bottom;U({position:"fixed",top:q,left:fe,minWidth:ie,zIndex:2e3})};return Y(),window.addEventListener("resize",Y),window.addEventListener("scroll",Y,!0),()=>{window.removeEventListener("resize",Y),window.removeEventListener("scroll",Y,!0)}},[v,h,g]);const ae=()=>{l||x(!v)},O=Y=>{a(Y.value),x(!1),X.current?.focus()},_=Y=>{if(!l)switch(Y.key){case"Enter":case" ":Y.preventDefault(),v?I>=0&&O(t[I]):x(!0);break;case"Escape":Y.preventDefault(),x(!1),X.current?.focus();break;case"ArrowDown":Y.preventDefault(),v?C(P=>P<t.length-1?P+1:0):x(!0);break;case"ArrowUp":Y.preventDefault(),v?C(P=>P>0?P-1:t.length-1):x(!0);break;case"Home":Y.preventDefault(),v&&C(0);break;case"End":Y.preventDefault(),v&&C(t.length-1);break;case"Tab":x(!1);break}},de=(Y,P)=>{const z=Y.icon&&Cs[Y.icon]?Cs[Y.icon]:Ji,ie=Y.color?Da(Y.color):"var(--text-secondary)",fe=P?.hideLabel===!0;return n.jsxs(n.Fragment,{children:[n.jsx("span",{className:`taxonomyDropdownIcon ${yr.taxonomyDropdownIcon}`,style:{color:ie},children:n.jsx(z,{size:16})}),!fe&&n.jsx("span",{className:`taxonomyDropdownLabel ${yr.taxonomyDropdownLabel}`,children:Y.label})]})},ke=v?n.jsx("div",{ref:me,id:`taxonomy-listbox-${s.replace(/\s+/g,"-")}`,className:`taxonomyDropdownPanel ${yr.taxonomyDropdownPanel} ${h?yr.taxonomyDropdownPanelPortal:""} ${S}`,role:"listbox","aria-labelledby":d,"aria-label":m,style:h?D:void 0,children:t.map((Y,P)=>{const z=String(Y.value)===String(e),ie=P===I;return n.jsx("div",{className:`taxonomyDropdownOption ${yr.taxonomyDropdownOption} ${z?`taxonomyDropdownOptionSelected ${yr.taxonomyDropdownOptionSelected}`:""} ${ie?`taxonomyDropdownOptionHighlighted ${yr.taxonomyDropdownOptionHighlighted}`:""}`,role:"option","aria-selected":z,onClick:()=>O(Y),onMouseEnter:()=>C(P),style:(()=>{const fe=Y.color,q=Da(fe),Me=!q||q.startsWith("var("),xe=Me?"#8b5cf6":q,oe=Me?"20":"30",le=Me?"05":"10";return{"--option-color":q||"var(--text-primary)","--option-border":`${xe}${oe}`,"--option-bg":`${xe}${le}`}})(),children:de(Y)},String(Y.value))})}):null;return n.jsxs("div",{ref:L,className:`taxonomyDropdown ${yr.taxonomyDropdown} ${v?`taxonomyDropdownActive ${yr.taxonomyDropdownActive}`:""} ${i}`,children:[n.jsxs("button",{ref:X,type:"button",className:`taxonomyDropdownButton ${yr.taxonomyDropdownButton} ${v?`taxonomyDropdownOpen ${yr.taxonomyDropdownOpen}`:""}`,onClick:ae,onKeyDown:_,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(!se)return{};const Y=se.color,P=Da(Y),z=!P||P.startsWith("var("),ie=z?"#8b5cf6":P,fe=z?"30":"50",q=z?"05":"10";return{"--field-color":P||"var(--text-primary)","--field-border":`${ie}${fe}`,"--field-bg":`${ie}${q}`}})(),children:[n.jsx("span",{className:`taxonomyDropdownButtonContent ${yr.taxonomyDropdownButtonContent}`,children:se?de(se,{hideLabel:y}):n.jsxs(n.Fragment,{children:[n.jsx("span",{className:`taxonomyDropdownIcon ${yr.taxonomyDropdownIcon}`,children:n.jsx(Ji,{size:16})}),n.jsx("span",{className:`taxonomyDropdownLabel ${yr.taxonomyDropdownLabel}`,children:s})]})}),!k&&n.jsx(al,{size:16,className:`taxonomyDropdownChevron ${yr.taxonomyDropdownChevron} ${v?`taxonomyDropdownChevronOpen ${yr.taxonomyDropdownChevronOpen}`:""}`})]}),h?ke?Yi.createPortal(ke,document.body):null:ke]})}function gy({task:e,disabled:t=!1,actionDisabled:a,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=a??t,x=s??t,I=Yc.map(C=>({...C,label:(o||l)&&C.shortLabel||C.label}));return n.jsxs("div",{className:`${p.statusActionsGroup} ${o?p.statusActionsGroupCompact:""}`,children:[g==="archive"&&n.jsx("button",{type:"button",className:`${p.actionBtn} ${p.archiveTaskBtn}`,onClick:()=>e&&!v&&m?.(e),disabled:v,title:"Archive Now","aria-label":"Archive task",children:n.jsx(jk,{size:o?12:16})}),g==="unarchive"&&n.jsx("button",{type:"button",className:`${p.actionBtn} ${p.archiveTaskBtn}`,onClick:()=>e&&!v&&y?.(e),disabled:v,title:"Unarchive task","aria-label":"Unarchive task",children:n.jsx(gd,{size:o?12:16})}),n.jsx("div",{className:`${p.statusSelectWrap} ${p.statusTaxonomyDropdownWrap}`,children:n.jsx(id,{value:S,options:I,disabled:x||!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:C=>{e&&d?.(e,C)}})})]})}function X1(e,t,a){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 a=="string"&&a.trim().length>0?a.trim():"";if(!l)return s;const[i,d=""]=s.split("#"),m=i.includes("?")?"&":"?";return`${i}${m}v=${encodeURIComponent(l)}${d?`#${d}`:""}`}function eM(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 tM(e){return e==="task"?"Task":e.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function nr(e,t,a){const s=a?.(t,e);if(typeof s=="string")return s;if(e==null||e==="")return"none";if(Array.isArray(e)){const o=e.map(l=>nr(l,t,a)).filter(Boolean);return o.length>0?o.join(", "):"none"}return typeof e=="object"?"updated":t==="status"?tM(String(e)):String(e)}function Nh(e){return Array.isArray(e)?e.map((t,a)=>{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:a}}):[]}function nM(e){const t=Nh(e?.from),a=Nh(e?.to),s=new Map(t.map(i=>[i.id||i.title,i])),o=new Map(a.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===a.length&&t.every(i=>o.has(i.id||i.title))&&t.some((d,m)=>{const y=a[m];return(d.id||d.title)!==(y?.id||y?.title)})?"Checklist reordered":"Checklist updated"}function _f(e){return e.split(/[?#]/,1)[0]||e}function Ph(e){const t=_f(e).replace(/\\/g,"/"),a=t.split("/").filter(Boolean);return a[a.length-1]||t}function aM(e){return/\.(png|jpe?g|webp|gif)$/i.test(_f(e))}function rM(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 Mh(e){return Array.isArray(e)?e.flatMap((t,a)=>{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?Ph(l):"",o?Ph(o):""].map(h=>String(h||"").trim()).find(Boolean)||`Attachment ${a+1}`,y=i||l||o||`${m}:${a}`,k=[o,l,String(s?.originalFilename||"").trim(),String(s?.displayName||"").trim(),d].filter(Boolean),S=k.some(h=>aM(h))?"image":d.startsWith("D-")||k.some(h=>rM(h))?"document":"attachment";return[{key:y,label:m,kind:S}]}):[]}function sM(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}),a=Object.entries(t).filter(([,s])=>s>0).map(([s,o])=>o===1?s:`${o} ${sM(s,o)}`);return a.length===1?a[0]:e.length<=3&&a.length<=2?a.join(" and "):`${e.length} attachments`}function Gi(e){return e&&e.charAt(0).toUpperCase()+e.slice(1)}function oM(e){const t=Mh(e?.from),a=Mh(e?.to),s=new Map(t.map(m=>[m.key,m])),o=new Map(a.map(m=>[m.key,m])),l=a.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=a.filter(m=>{const y=s.get(m.key);return y&&y.label!==m.label});if(d.length===1&&t.length===1&&a.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,a){if(e==="checklistItems")return nM(t);if(e==="attachments")return oM(t);const s=eM(e);if(e==="title")return`${s}: updated`;if(e==="description"){const o=nr(t?.from,e,a)!=="none",l=nr(t?.to,e,a)!=="none";return!o&&l?`${s}: added`:o&&!l?`${s}: cleared`:`${s}: updated`}return`${s}: ${nr(t?.from,e,a)} -> ${nr(t?.to,e,a)}`}function yy(e,t){const a=e.details?.changes||{},s=Object.keys(a);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"&&a.status)return`Status changed: ${nr(a.status.from,"status",t)} -> ${nr(a.status.to,"status",t)}`;if(e.action==="task-schedule-changed")return a.scheduledDate?`Scheduled date changed: ${nr(a.scheduledDate.from,"scheduledDate",t)} -> ${nr(a.scheduledDate.to,"scheduledDate",t)}`:a.dueDate?`Due date changed: ${nr(a.dueDate.from,"dueDate",t)} -> ${nr(a.dueDate.to,"dueDate",t)}`:"Schedule updated";if(e.action==="task-relationship-changed"&&a.workstreamId)return`Workstream changed: ${nr(a.workstreamId.from,"workstreamId",t)} -> ${nr(a.workstreamId.to,"workstreamId",t)}`;if(e.action==="task-relationship-changed"&&a.initiativeId)return`Initiative changed: ${nr(a.initiativeId.from,"initiativeId",t)} -> ${nr(a.initiativeId.to,"initiativeId",t)}`;if(e.action==="task-attachments-changed")return a.attachments?gm("attachments",a.attachments,t):"Attachments updated";if(s.length===1){const o=s[0],l=a[o];return gm(o,l,t)}return s.length>1?`${s.length} fields updated`:"Task updated"}function Z5(e,t){if(e.taskId||e.entityType==="task")return yy(e,t);const a=e.details?.changes||{},s=Object.keys(a),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"&&a.initiativeId?`Initiative changed: ${nr(a.initiativeId.from,"initiativeId",t)} -> ${nr(a.initiativeId.to,"initiativeId",t)}`:(e.action==="initiative-attachments-changed"||e.action==="workstream-attachments-changed")&&a.attachments?gm("attachments",a.attachments,t):s.length===1?gm(s[0],a[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 iM(e){const t=e.details?.changes||{},a=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":a.length===1?a[0]:null}function Y5(e){if(e.taskId||e.entityType==="task")return iM(e);const t=e.details?.changes||{},a=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":a.length===1?a[0]:null}function ky(e){const t=new Map,a=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"&&a.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||a.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 cM(e){const t=Cf(e);return t.length===0?null:[...t].sort((a,s)=>{const o=ym(a),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(a.id||""))})[0]||null}function lM(e,t){return e?e.type==="comment"?e.comment.text:yy(e.event,t):""}const{MessageSquare:dM,User:uM,Bot:mM,Gauge:pM,ClipboardList:fM,HelpCircle:hM,File:gM}=Cs,yM=({task:e,searchQuery:t="",copiedId:a=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:x,onToggleInProgress:I,onToggleReview:C,onToggleComplete:D,onToggleCancel:U,onSetStatus:L,onArchiveTask:X,onUnarchive:me,onDelete:se,deleteActionTitle:ae,onOpenTaskById:O,compressed:_=!1,showStatusLabel:de=!0})=>{const ke=Ng(e),Y=ke.label||(ke.isProvisional?"Pending":""),P=ke.isProvisional,z=!!ke.label,ie=um(m)||m?.id||"",fe=ry(y)||y?.id||"",q=l.find(ee=>String(ee.value)===String(e.priority)),Me=q?q.label.toLowerCase().replace(/\s+/g,"-"):String(e.priority),xe=i.find(ee=>ee.value===e.category||ee.label===e.category),oe=typeof e.complexity=="number"?e.complexity:Number(e.complexity??3),le=Number.isFinite(oe)?Math.max(1,Math.min(5,Math.round(oe))):3,Ie={1:"Tiny",2:"Low",3:"Mid",4:"High",5:"Epic"},Ee={1:"tiny",2:"low",3:"medium",4:"high",5:"epic"},je=Ie[le],Pe=`var(--complexity-${Ee[le]})`,K=Dv(e.priority,Me),A=!!p[`priorityItem_${K}`],b=cm(e.assignee),R=ud(e.assignee,d),F=Ue.useMemo(()=>{const ee=String(e.assignee||"").trim();return d.find(ze=>String(ze.value||"").trim()===ee)||null},[d,e.assignee]),Q=b!=="unassigned"&&typeof F?.avatarUrl=="string"?X1(F.avatarUrl,F.avatarRevision,F.avatarUpdatedAt):"",M=b==="agent"?"var(--color-violet-500, #8b5cf6)":b==="member"?"var(--color-green-500, #22c55e)":"var(--text-secondary, #888)",$=Ue.useMemo(()=>cM(e),[e]),be=h||(e.isDeleted?"deleted":S?"archived":null),H=be!==null,ce=Ue.useCallback((ee,ze)=>{const ft=String(ze||"").trim();if(ft){if(ee==="assignee")return ud(ft,d);if(ee==="workstreamId"&&ft===m?.id)return ie||m.id;if(ee==="initiativeId"&&ft===y?.id)return fe||y.id}},[d,fe,y,m,ie]),he=Ue.useMemo(()=>lM($,ce),[ce,$]),G=Ue.useMemo(()=>Cf(e).length,[e]),re=[Qt.taskItem,e.status==="on-hold"?Qt.onHold:"",e.status==="in-progress"?Qt.inProgress:"",e.status==="review"?Qt.readyForReview:"",e.status==="done"?Qt.completed:"",e.status==="cancelled"?Qt.cancelled:"",g?Qt.taskItemRecentlyChanged:"",p[`priorityItem_${K}`]||"",k?Qt.kanbanCardOverlay:"",S?Qt.archived:"",_?Qt.compressed:""].filter(Boolean).join(" "),ue=Da(q?.color),Re=o.find(ee=>ee.value===e.type),Te=Da(Re?.color)||ub(e.type),De=ee=>{const ze=typeof ee=="string"?ee:ee.path,ft=typeof ee=="string"?"":(ee.fsPath||"").trim(),it=typeof ee=="string"?"":(ee.displayName||"").trim(),Et=typeof ee=="string"?"":(ee.originalFilename||"").trim(),ht=typeof ee=="string"?"":(ee.caption||"").trim();return[ft,Et,it,ht,ze].some(Dt=>/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(Dt))},Oe=ee=>{const ze=typeof ee=="string"?ee:ee.path,ft=ze.includes("/api/taskforce/documents/"),it=typeof ee=="string"?"":(ee.displayName||"").trim();if(ft&&typeof ee!="string")return W1({displayName:ee.displayName,originalFilename:ee.originalFilename,fsPath:ee.fsPath,assetId:ee.assetId||null});const Et=typeof ee=="string"?"":(ee.caption||"").trim();if(Et)return Et;if(it)return it;const ht=typeof ee=="string"?"":(ee.originalFilename||"").trim();return ht||ze.split("?")[0].split("#")[0].split("/").pop()||"Context file"},vt=ee=>{const ze=typeof ee=="string"?ee:ee.path,ft=typeof ee=="string"?"":(ee.fsPath||"").trim(),it=typeof ee=="string"?"":(ee.caption||"").trim(),Et=typeof ee=="string"?"":(ee.originalFilename||"").trim(),ht=[];if(ft&&ht.push(ft),Et&&ht.push(Et),it&&ht.push(it),ze.includes("/api/taskforce/context-link?path="))try{const Dt=new URL(ze,"http://localhost").searchParams.get("path");Dt&&ht.push(Dt)}catch{}ht.push(ze);for(const Ot of ht){const We=Ot.split("?")[0].split("#")[0].split("/").pop()||"",tt=We.lastIndexOf(".");if(tt<=0||tt===We.length-1)continue;const Fe=We.slice(tt+1);if(Fe)return Fe.slice(0,5).toUpperCase()}return"FILE"},st={"--task-change-glow-color":ue||`var(--priority-${K})`,...ue?{borderLeftColor:ue,[`--priority-${K}`]:ue}:{},...!A&&ue?{borderLeft:`4px solid ${ue}`}:{}},kt=ee=>ee.replace(/\b\w/g,ze=>ze.toUpperCase()),Ye=_d(s,[e]),_t=e.checklistItems||[],dt=_t.length,Qe=dt>0?_t.filter(ee=>ee.isCompleted).length:0,Rt=(ee,ze)=>{ee.stopPropagation(),x?.(ee,ze)};return n.jsxs("div",{className:re,onClick:()=>v?.(e),style:st,"data-task-card":"true",children:[n.jsxs("div",{className:Qt.taskHeader,children:[n.jsxs("div",{className:Qt.taskReferenceCluster,children:[y?n.jsxs(n.Fragment,{children:[n.jsx("span",{className:Qt.taskReferenceText,children:fe}),n.jsx("span",{className:Qt.taskReferenceDivider,children:"/"})]}):null,m?n.jsxs(n.Fragment,{children:[n.jsx("span",{className:Qt.taskReferenceText,children:ie}),n.jsx("span",{className:Qt.taskReferenceDivider,children:"/"})]}):null,Y?n.jsx(Qu,{copied:z&&a===ke.label,onClick:ee=>Rt(ee,ke.label),disabled:!z,title:z?"Copy task reference":"Task reference pending sync",className:S?Qt.archiveBadge:"",label:Uu(Y,t)}):null,P?n.jsx("span",{className:p.taskHierarchyMeta,title:"Temporary local reference until cloud sync assigns the final task number.",children:"Pending sync"}):null]}),n.jsx("div",{className:Qt.taskActions,onClick:ee=>ee.stopPropagation(),children:H?me||se?n.jsxs(n.Fragment,{children:[me&&n.jsx("button",{type:"button",className:p.actionBtn,onClick:()=>me(e.id),title:be==="deleted"?"Restore deleted task":"Restore archived task",children:n.jsx(gd,{size:16})}),se&&n.jsx("button",{type:"button",className:`${p.actionBtn} ${p.deleteBtn}`,onClick:()=>se(e.id),title:ae||(be==="deleted"?"Delete Permanently":"Move to Trash"),children:n.jsx(xm,{size:16})})]}):null:n.jsx(gy,{task:e,compressed:_,shortLabels:!0,showLabel:de,onSetStatus:(ee,ze)=>{if(L){L(ee,ze);return}if(ze==="in-progress"){I?.(ee);return}if(ze==="review"){C?.(ee);return}if(ze==="done"){D?.(ee);return}ze==="cancelled"&&U?.(ee)},onArchiveTask:X})})]}),n.jsxs("div",{className:Qt.taskContent,children:[H&&n.jsx("div",{className:`${Qt.taskMeta} ${Qt.taskMetaCompact}`}),n.jsxs("div",{children:[n.jsxs("div",{className:Qt.taskTitle,style:_?{fontSize:"13px",lineHeight:"1.4"}:{},children:[be==="archived"&&"✓ ",be==="deleted"&&"Deleted: ",Uu(e.title,t)]}),e.description&&!H&&!_&&n.jsx("div",{className:Qt.taskDescription,children:n.jsx(cy,{onTaskIdClick:O,children:e.description})})]}),e.attachments&&e.attachments.length>0&&!H&&!_&&n.jsxs("div",{className:Qt.attachmentThumbnails,children:[n.jsx("div",{className:Qt.attachmentImageRow,children:(e.attachments||[]).map((ee,ze)=>{const ft=typeof ee=="string"?ee:ee.path;return De(ee)?n.jsx("div",{className:Qt.attachmentThumbnail,onClick:it=>{it.stopPropagation(),!E1(typeof ee=="string"?{path:ft}:ee,{taskId:e.id,taskReferenceLabel:Y})&&window.open(ft,"_blank")},children:n.jsx("img",{src:ft,alt:`Attachment ${ze}`})},ze):null})}),n.jsx("div",{className:Qt.attachmentDocumentList,children:(e.attachments||[]).map((ee,ze)=>{const ft=typeof ee=="string"?ee:ee.path,it=typeof ee=="string"?void 0:ee.fsPath,Et=Oe(ee);if(De(ee))return null;const ht=vt(ee);return n.jsxs("button",{type:"button",className:Qt.contextDocThumb,onClick:Ot=>{Ot.stopPropagation();const Dt=typeof ee=="string"?{path:ee,taskId:e.id}:{...ee,taskId:e.id};T1(Dt,it)||window.open(ft,"_blank")},title:Et,style:{"--context-doc-accent":mb(ht)},children:[n.jsxs("span",{className:Qt.contextDocMain,children:[n.jsx("span",{className:Qt.contextDocIcon,"aria-hidden":"true",children:n.jsx(gM,{size:13})}),n.jsx("span",{className:Qt.contextDocText,children:n.jsx("span",{className:Qt.contextDocName,children:Et})})]}),n.jsx("span",{className:Qt.contextDocType,children:ht})]},ze)})})]}),e.status==="cancelled"&&e.canceledReason&&!_&&n.jsxs("div",{className:Qt.taskCancellationReason,children:[n.jsx("strong",{children:"Cancellation Reason:"})," ",Uu(e.canceledReason,t)]}),he&&!H&&!_&&n.jsxs("div",{className:Qt.taskLatestComment,children:[n.jsx("strong",{children:"Latest Activity:"})," ",Uu(he.length>120?he.substring(0,120)+"...":he,t)]}),!H&&Ye.length>0&&!_&&n.jsx("div",{className:`${Qt.taskSpecialists} ${Qt.taxonomiesList}`,children:Ye.map(ee=>{const ze=e.taxonomies?.[ee.id];return ze?(Array.isArray(ze)?ze:[ze]).map(it=>{const Et=ee.options.find(tt=>tt.value===it);if(!Et)return null;const ht=Cs[Et.icon||"Layers"]||Ep,Ot=Da(Et.color)||"var(--text-primary)",Dt=ee.status==="retired"?`${ee.label} (Retired)`:ee.label,We=Et.status==="retired"?`${Et.label} (Retired)`:Et.label;return n.jsx("span",{className:p.specialistBadge,style:{borderColor:`${Ot}50`,backgroundColor:`${Ot}15`,color:Ot},title:`${Dt}: ${kt(We)}`,children:n.jsx(ht,{size:10})},`${ee.id}-${it}`)}):null})}),n.jsx("div",{className:Qt.taskMeta,children:H?n.jsx("span",{children:e.category}):n.jsx(n.Fragment,{children:n.jsxs("div",{className:Qt.taskMetaRow,style:_?{marginBottom:0}:void 0,children:[n.jsxs("div",{className:Qt.taskMetaBadgeGroup,children:[(()=>{const ee=Da(xe?.color),ze=xe?.icon||"Folder",ft=Cs[ze]||Po;return n.jsx("span",{className:p.metaBadge,title:kt(e.category),style:{color:ee||"var(--text-secondary)",backgroundColor:ee?`${ee}15`:"var(--bg-tertiary)",borderColor:ee?`${ee}40`:"transparent"},children:n.jsx(ft,{size:14})})})(),n.jsx("span",{className:`${p.metaBadge} ${p[`type_${e.type}`]||""}`,title:kt(e.type||Vr),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:Re?.icon?(()=>{const ee=Cs[Re.icon]||hM;return n.jsx(ee,{size:14})})():_1(e.type,14)}),q&&n.jsx("span",{className:p.metaBadge,style:{color:ue||"var(--text-secondary)",backgroundColor:ue?`${ue}15`:"var(--bg-tertiary)",borderColor:ue?`${ue}40`:"var(--border-color)"},title:`${q.label}`,children:(()=>{const ee=q.icon||"AlertCircle",ze=Cs[ee]||Nk;return n.jsx(ze,{size:14})})()}),G>0&&n.jsxs("span",{className:p.metaBadge,title:`${G} activity items`,style:{color:"var(--text-muted)",backgroundColor:"var(--bg-tertiary)",borderColor:"var(--border-primary)",gap:"4px",padding:"0 8px"},children:[n.jsx(dM,{size:14}),n.jsx("span",{children:G})]}),dt>0&&n.jsxs("span",{className:p.metaBadge,title:`${Qe}/${dt} checklist items complete`,style:{color:"var(--text-muted)",backgroundColor:"var(--bg-tertiary)",borderColor:"var(--border-primary)",gap:"4px",padding:"0 8px"},children:[n.jsx(fM,{size:14}),n.jsx("span",{children:`${Qe}/${dt}`})]})]}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[n.jsxs("span",{className:p.metaBadge,title:`AI-estimated complexity: ${je} (${le}/5)`,style:{color:Pe,backgroundColor:`color-mix(in srgb, ${Pe}, transparent 88%)`,borderColor:`color-mix(in srgb, ${Pe}, transparent 72%)`,gap:"4px",padding:"0 8px"},children:[n.jsx(pM,{size:14}),!_&&n.jsx("span",{children:je})]}),n.jsx("span",{className:`${Qt.assigneeAvatarIndicator} ${b==="unassigned"?Qt.assigneeAvatarEmpty:""}`,title:`Assigned to: ${R}`,"aria-label":b==="unassigned"?"Unassigned":`Assigned to ${R}`,style:{"--assignee-avatar-color":M},children:Q?n.jsx("img",{src:Q,alt:"",className:Qt.assigneeAvatarImage}):b==="agent"?n.jsx(mM,{size:_?18:20}):b==="member"?n.jsx(uM,{size:_?18:20}):null})]})]})})})]})]})},bd=Ue.memo(yM),km="168px";function vy(){return n.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:"var(--text-secondary)",marginRight:"4px"},children:qe("standalone.filtersCaps")})}function Ki({label:e,options:t,selected:a,onChange:s,variant:o="label"}){return n.jsx(qi,{label:e,options:t,selected:a,onChange:s,variant:o,containerStyle:{flex:`0 0 ${km}`,maxWidth:km}})}function Sy({onClick:e}){return n.jsxs("button",{onClick:e,style:{background:"none",border:"none",color:"var(--text-secondary)",cursor:"pointer",fontSize:"12px",display:"flex",alignItems:"center",gap:"4px"},children:[n.jsx(ac,{size:12})," ",qe("standalone.clearFilters")]})}function Eh({label:e,options:t,selected:a,onChange:s,allLabel:o,title:l}){const[i,d]=Ue.useState(!1),m=Ue.useRef(null),y=t.find(h=>h.value===a),k=y?.selectedLabel||y?.label||o;Ue.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 n.jsxs("div",{className:p.filterContainer,ref:m,style:{flex:`0 0 ${km}`,maxWidth:km},children:[n.jsxs("button",{type:"button",className:`${p.filterButton} ${a?p.filterActive:""}`,onClick:()=>d(h=>!h),title:l||`Filter by ${e}`,"aria-haspopup":"listbox","aria-expanded":i,children:[n.jsx("span",{children:k}),n.jsx(al,{size:14,style:{transform:i?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),i&&n.jsxs("div",{className:`${p.filterDropdown} ${p.appScrollbar} tf-scrollbar`,role:"listbox","aria-label":e,children:[n.jsxs("button",{type:"button",className:p.filterOption,onClick:()=>S(""),"aria-selected":!a,children:[n.jsx(ao,{size:14,style:{opacity:a?0:1}}),n.jsx("span",{style:{fontWeight:a?500:600},children:o})]}),n.jsx("div",{className:p.filterDivider}),t.map(h=>{const g=h.value===a;return n.jsxs("button",{type:"button",className:p.filterOption,onClick:()=>S(h.value),"aria-selected":g,children:[n.jsx(ao,{size:14,style:{opacity:g?1:0}}),n.jsx("span",{style:{fontWeight:g?600:500},children:h.label})]},h.value)})]})]})}function wy({scope:e,onScopeChange:t,className:a,labelClassName:s}){return n.jsxs("div",{className:a,children:[n.jsx("span",{className:s,children:"Scope"}),n.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 n.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:a,title:s="Permanently delete all deleted tasks",children:o="Delete All Permanently"}){return n.jsxs("button",{type:"button",className:a,onClick:e,disabled:t,title:s,children:[n.jsx(xm,{size:14}),o]})}const{Search:Dh,ClipboardList:kM,ChevronRight:vM,ChevronDown:SM,Folder:wM,Archive:bM,RotateCcw:xM,X:_M,Plus:CM,ArrowUpDown:AM,Trash2:IM}=Cs,xy=r.forwardRef((e,t)=>{const{tasks:a,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:x,filterAssignees:I=[],filterTaxonomies:C,sortBy:D,sortOrder:U,showArchive:L,taskScope:X,collapsedCategories:me,loadingTasks:se,filteredTasks:ae,filteredArchive:O,groupedTasks:_,filteredDeletedTasks:de=[],groupedDeletedTasks:ke={},copiedId:Y,recentlyChangedTaskIds:P=[],showTaskCardStatusLabel:z=!0,onSearchChange:ie,onFilterCategoriesChange:fe,onFilterTypesChange:q,onFilterPrioritiesChange:Me,onFilterStatusChange:xe,onFilterAssigneesChange:oe,onTaxonomyFilterChange:le,onSortByChange:Ie,onSortOrderChange:Ee,onShowArchiveChange:je,onTaskScopeChange:Pe,onClearFilters:K,onToggleCategory:A,onEditTask:b,onOpenTaskById:R,onCopyId:F,onToggleInProgress:Q,onToggleReview:M,onToggleComplete:$,onToggleCancel:be,onSetStatus:H,onArchiveTask:ce,onBulkArchive:he,onUnarchive:G,onDelete:re,onDeleteAllDeleted:ue,onFetchArchive:Re,onAddTaskToCategory:Te,supplementalTasks:De=[],taxonomies:Oe}=e,vt=new Set(P),st=Ue.useMemo(()=>new Map(y.map(te=>[te.id,te])),[y]),kt=Ue.useMemo(()=>new Map(k.map(te=>[te.id,te])),[k]),Ye=Ue.useCallback(te=>{const Le=te.workstreamId&&st.get(te.workstreamId)||null,Ct=Le?.initiativeId&&kt.get(Le.initiativeId)||null;return{taskWorkstream:Le,taskInitiative:Ct}},[kt,st]),_t=[...a,...s,...De],dt=!!Pe,Qe=Pe,Rt=X??(L?"archived":"open"),ee=dt?Rt==="archived"?O:Rt==="deleted"?de:ae:ae,ze=dt?Rt==="archived"?{Archived:O}:Rt==="deleted"?ke:_:_,ft=dt?Rt==="deleted"?"deleted":Rt==="archived"?"archived":null:null,it=Tm(S),Et=S?it?`No task found for ${it.toUpperCase()}`:qe("taskList.noMatchingTasks"):Rt==="archived"?"No archived tasks found.":Rt==="deleted"?"No deleted tasks found.":qe("taskList.noActiveTasks"),ht=o.filter(te=>!te.disabled),Ot=o.filter(te=>te.disabled&&_t.some(Le=>Le.category===te.value)),Dt=[...ht,...Ot.filter(te=>!ht.some(Le=>Le.value===te.value))].map(te=>({value:te.value,label:te.disabled?`${te.label} (Legacy)`:te.label})),We=l.filter(te=>te.status!=="retired"),tt=l.filter(te=>te.status==="retired"&&_t.some(Le=>Le.type===te.value)),Fe=[...We,...tt.filter(te=>!We.some(Le=>Le.value===te.value))].map(te=>({value:te.value,label:te.status==="retired"?`${te.label} (Retired)`:te.label})),St=_d(Oe,_t).filter(te=>te.filterEnabled!==!1).map(te=>({...te,options:bf(te,_t)})),ot=Ue.useMemo(()=>[{value:"created",label:qe("taskList.sortCreated")},{value:"updated",label:qe("taskList.sortUpdated")},{value:"priority",label:qe("taskList.sortPriority")},...iy(Oe,_t)],[_t,qe,Oe]);return n.jsxs("div",{className:p.viewTab,ref:t,children:[n.jsxs("div",{className:p.filterBar,children:[n.jsxs("div",{className:p.searchContainer,children:[n.jsx(Dh,{size:16,className:p.searchIcon}),n.jsx("input",{type:"text",className:p.searchInput,placeholder:qe("taskList.searchPlaceholder"),value:S,onChange:te=>ie(te.target.value)}),S&&n.jsx("button",{className:p.clearSearchBtn,onClick:()=>ie(""),title:qe("taskList.clearSearchTitle"),children:n.jsx(_M,{size:14})})]}),n.jsxs("div",{className:p.filterRow,children:[n.jsx(qi,{label:d?.category||qe("taskList.categoryLabel"),options:Dt,selected:h,onChange:fe,variant:"value"}),n.jsx(qi,{label:d?.type||qe("taskList.typeLabel"),options:Fe,selected:g,onChange:q,variant:"value"})]}),n.jsxs("div",{className:p.filterRow,children:[n.jsx(qi,{label:d?.priority||qe("taskList.priorityLabel"),options:i,selected:v,onChange:Me,variant:"value"}),n.jsx(qi,{label:qe("taskList.statusLabel"),options:no,selected:x,onChange:xe,variant:"value"}),n.jsx(qi,{label:qe("taskList.assigneeLabel"),options:m,selected:I,onChange:te=>oe?.(te),variant:"value"})]}),St.map(te=>n.jsx(qi,{label:te.status==="retired"?`${te.label} (Retired)`:te.label,options:te.options.map(Le=>({...Le,label:Le.status==="retired"?`${Le.label} (Retired)`:Le.label})),selected:C[te.id]||[],onChange:Le=>le(te.id,Le),variant:"value"},te.id)),n.jsxs("div",{className:p.filterRow,children:[n.jsxs("div",{className:p.sortLabel,children:[n.jsx(AM,{size:14,style:{marginRight:"4px"}})," ",qe("taskList.sortByLabel")]}),n.jsx("select",{value:D,onChange:te=>Ie(te.target.value),className:`${p.filterSelect} ${p.filterSelectSort} `,children:ot.map(te=>n.jsx("option",{value:te.value,children:te.label},te.value))}),n.jsx("button",{className:`${p.resetFiltersBtn} ${p.sortDirectionBtnWidget}`,onClick:Ee,title:qe(U==="desc"?"taskList.sortDirectionDescTitle":"taskList.sortDirectionAscTitle"),children:U==="desc"?n.jsx(cg,{size:14}):n.jsx(lg,{size:14})}),n.jsx("button",{className:p.resetFiltersBtn,onClick:K,title:qe("taskList.resetFiltersTitle"),children:n.jsx(xM,{size:14})})]}),n.jsxs("div",{className:`${p.filterRow} ${p.archiveRow} `,children:[Rt==="open"?n.jsxs("button",{className:`${p.bulkArchiveBtn} ${a.some(te=>te.status==="done"||te.status==="cancelled")?"":p.disabledBtn} `,onClick:()=>a.some(te=>te.status==="done"||te.status==="cancelled")&&he(),disabled:!a.some(te=>te.status==="done"||te.status==="cancelled"),title:a.some(te=>te.status==="done"||te.status==="cancelled")?qe("taskList.archiveAllTitle"):qe("taskList.noTasksToArchiveTitle"),children:[n.jsx(bM,{size:12}),n.jsx("span",{children:qe("taskList.archiveFinished")})]}):Rt==="deleted"&&ue?n.jsx(by,{className:`${p.bulkArchiveBtn} ${p.taskToolbarAction} ${p.bulkDeleteBtn} ${de.length===0?p.disabledBtn:""}`,onClick:()=>de.length>0&&ue(),disabled:de.length===0,title:de.length>0?"Empty trash":"Trash is already empty",children:"Empty Trash"}):n.jsx("div",{}),dt?n.jsx(wy,{scope:Rt,onScopeChange:te=>{Qe?.(te),te==="archived"?(je(!0),Re()):L&&je(!1)},className:`${p.archiveToggle} ${p.taskScopeToggle}`}):n.jsxs("label",{className:p.archiveToggle,children:[n.jsx("input",{type:"checkbox","aria-label":"Archived",checked:L,onChange:te=>{je(te.target.checked),te.target.checked&&Re()}}),n.jsx("span",{children:"Include Archive"})]})]})]}),se&&a.length===0?n.jsx("div",{className:p.loading,children:n.jsx(kr,{size:24,className:p.spinner})}):ee.length===0&&!se?n.jsxs("div",{className:p.emptyState,children:[S?n.jsx(Dh,{size:48}):Rt==="deleted"?n.jsx(IM,{size:48}):n.jsx(kM,{size:48}),n.jsx("p",{children:Et})]}):n.jsx("div",{className:p.taskList,style:{opacity:se?.6:1,transition:"opacity 0.2s ease"},children:Object.entries(ze).map(([te,Le])=>{if(Le.length===0)return null;const Ct=me[te];return n.jsxs("div",{className:p.categoryGroup,children:[n.jsx("div",{className:p.categoryHeader,onClick:()=>A(te),children:n.jsxs("div",{className:p.categoryTitle,children:[Ct?n.jsx(vM,{size:16}):n.jsx(SM,{size:16}),(()=>{const jt=o.find($t=>$t.label===te),Wt=jt?.icon&&tc[jt.icon]?tc[jt.icon]:wM,Ge=Da(jt?.color)||"var(--color-purple, #8b5cf6)";return n.jsx(Wt,{size:16,className:p.categoryTitleIcon,style:{color:Ge}})})(),te,n.jsxs("span",{className:p.categoryCount,children:["(",Le.length,")"]}),Te&&n.jsx("button",{className:p.kanbanQuickAdd,onClick:jt=>{jt.stopPropagation(),Te(te)},title:qe("taskList.addTaskToCategoryTitle",{category:te}),style:{marginLeft:"auto"},disabled:ft!==null,children:n.jsx(CM,{size:14})})]})}),!Ct&&n.jsx("div",{className:p.categoryItems,children:Le.map(jt=>(()=>{const{taskWorkstream:Wt,taskInitiative:Ge}=Ye(jt);return n.jsx(bd,{task:jt,taskWorkstream:Wt,taskInitiative:Ge,searchQuery:S,copiedId:Y,taxonomies:Oe,types:l,priorities:i,assigneeOptions:m,onClick:b,onOpenTaskById:R,onCopyId:F,onToggleInProgress:Q,onToggleReview:M,onToggleComplete:$,onToggleCancel:be,onSetStatus:H,onArchiveTask:ce,onUnarchive:ft?G:void 0,onDelete:ft?re:void 0,categories:o,isRecentlyChanged:vt.has(jt.id),readOnlyMode:ft,showStatusLabel:z},jt.id)})())})]},te)})}),!dt&&L&&O.length>0&&n.jsxs("div",{className:p.archiveList,children:[n.jsx("div",{className:p.archiveHeader,children:"Archived"}),O.map(te=>(()=>{const{taskWorkstream:Le,taskInitiative:Ct}=Ye(te);return n.jsx(bd,{task:te,taskWorkstream:Le,taskInitiative:Ct,searchQuery:S,copiedId:Y,isArchived:!0,types:l,assigneeOptions:m,onClick:b,onCopyId:F,onSetStatus:H,onUnarchive:G,onDelete:re,deleteActionTitle:"Delete Permanently",categories:o,showStatusLabel:z},te.id)})())]})]})});xy.displayName="TaskList";const TM="_formNotice_inuex_1",RM="_assigneeIndicator_inuex_12",jM="_assigneeIndicatorAgent_inuex_20",NM="_assigneeIndicatorUser_inuex_24",PM="_assigneeIndicatorUnassigned_inuex_28",MM="_markdownPreview_inuex_32",EM="_error_inuex_83",DM="_keyboardHint_inuex_92",LM="_taskFormLifecycle_inuex_110",BM="_taskFormMetaDivider_inuex_115",WM="_taskFormMetaGrid_inuex_122",FM="_compactMetaSection_inuex_128",OM="_createWorkstreamRow_inuex_134",$M="_createWorkstreamDropdown_inuex_140",UM="_compactMetaGrid_inuex_145",zM="_compactMetaField_inuex_151",HM="_compactMetaFieldHint_inuex_165",GM="_formFieldsetReset_inuex_169",VM="_formLayout_inuex_176",qM="_formLayoutWithSidebar_inuex_183",KM="_formMainColumn_inuex_191",ZM="_activitySidebar_inuex_198",YM="_activitySidebarHeader_inuex_208",JM="_activitySidebarTitle_inuex_215",QM="_activitySidebarCount_inuex_224",XM="_taskFormDateRow_inuex_246",eE="_taskFormDateLabel_inuex_253",tE="_taskFormDateValue_inuex_261",nE="_taskFormMetaStack_inuex_269",aE="_taskFormMetaActor_inuex_275",rE="_taskFormDateWarning_inuex_287",sE="_taskFormDateError_inuex_293",oE="_helpHeader_inuex_299",iE="_helpClose_inuex_310",cE="_markdownHelp_inuex_324",lE="_helpGrid_inuex_333",dE="_helpGridItem_inuex_339",uE="_settingsHint_inuex_351",mE="_sectionBlock_inuex_357",pE="_softSectionSurface_inuex_367",fE="_stackedList_inuex_374",hE="_stackedListSpaced_inuex_379",gE="_checklistRow_inuex_383",yE="_checklistRowDragging_inuex_392",kE="_checklistHandleBtn_inuex_396",vE="_checklistCheckboxBtn_inuex_419",SE="_checklistCheckboxBtnChecked_inuex_439",wE="_checklistItemText_inuex_444",bE="_checklistItemTextCompleted_inuex_450",xE="_checklistRemoveBtn_inuex_455",_E="_specialistChip_inuex_522",CE="_specialistChipActive_inuex_545",AE="_commentPanel_inuex_626",IE="_activitySidebarPanel_inuex_635",TE="_commentThread_inuex_643",RE="_emptyComments_inuex_663",jE="_activityLoadingThread_inuex_673",NE="_activitySkeletonItem_inuex_677",PE="_activitySkeletonMeta_inuex_683",ME="_activitySkeletonBody_inuex_684",EE="_comment_inuex_626",DE="_commentAi_inuex_740",LE="_commentUser_inuex_744",BE="_commentHeader_inuex_748",WE="_commentAuthor_inuex_772",FE="_commentTime_inuex_780",OE="_commentText_inuex_784",$E="_commentInputArea_inuex_844",UE="_commentInput_inuex_844",zE="_sendCommentBtn_inuex_876",HE="_taxonomyFieldsGrid_inuex_903",GE="_markdownPreviewContainer_inuex_910",VE="_descriptionSurface_inuex_915",Xe={formNotice:TM,assigneeIndicator:RM,assigneeIndicatorAgent:jM,assigneeIndicatorUser:NM,assigneeIndicatorUnassigned:PM,markdownPreview:MM,error:EM,keyboardHint:DM,taskFormLifecycle:LM,taskFormMetaDivider:BM,taskFormMetaGrid:WM,compactMetaSection:FM,createWorkstreamRow:OM,createWorkstreamDropdown:$M,compactMetaGrid:UM,compactMetaField:zM,compactMetaFieldHint:HM,formFieldsetReset:GM,formLayout:VM,formLayoutWithSidebar:qM,formMainColumn:KM,activitySidebar:ZM,activitySidebarHeader:YM,activitySidebarTitle:JM,activitySidebarCount:QM,taskFormDateRow:XM,taskFormDateLabel:eE,taskFormDateValue:tE,taskFormMetaStack:nE,taskFormMetaActor:aE,taskFormDateWarning:rE,taskFormDateError:sE,helpHeader:oE,helpClose:iE,markdownHelp:cE,helpGrid:lE,helpGridItem:dE,settingsHint:uE,sectionBlock:mE,softSectionSurface:pE,stackedList:fE,stackedListSpaced:hE,checklistRow:gE,checklistRowDragging:yE,checklistHandleBtn:kE,checklistCheckboxBtn:vE,checklistCheckboxBtnChecked:SE,checklistItemText:wE,checklistItemTextCompleted:bE,checklistRemoveBtn:xE,specialistChip:_E,specialistChipActive:CE,commentPanel:AE,activitySidebarPanel:IE,commentThread:TE,emptyComments:RE,activityLoadingThread:jE,activitySkeletonItem:NE,activitySkeletonMeta:PE,activitySkeletonBody:ME,comment:EE,commentAi:DE,commentUser:LE,commentHeader:BE,commentAuthor:WE,commentTime:FE,commentText:OE,commentInputArea:$E,commentInput:UE,sendCommentBtn:zE,taxonomyFieldsGrid:HE,markdownPreviewContainer:GE,descriptionSurface:VE};function xp({label:e,value:t,options:a,onChange:s,type:o="priority",hideLabel:l=!1,showSelectedLabel:i=!0}){const d=a.find(m=>String(m.value)===String(t));return n.jsxs("div",{className:p.field,children:[!l&&n.jsxs("div",{className:p.labelRow,children:[n.jsx("label",{className:p.label,children:e}),i&&d&&n.jsx("span",{className:p.levelLabel,style:{color:Da(d.color)||(o==="priority"?`var(--priority-${t})`:o==="complexity"?`var(--complexity-${t})`:"var(--text-secondary)"),backgroundColor:(Da(d.color)?`${Da(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})]}),n.jsx("div",{className:p.levelSelect,children:a.map((m,y)=>{const k=a.findIndex(g=>String(g.value)===String(t)),S=y<=k,h=String(m.value)===String(t);return n.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?Da(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 Lh=new Map;function qE(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:t}function KE(e,t){const a=Object.entries(t).sort(([s],[o])=>s.localeCompare(o));return JSON.stringify([e,a])}function vm(e,t,a){const s=qE(e);if(!s)return"";const o=a??Dg(),l=KE(o,t);let i=Lh.get(l);return i||(i=new Intl.DateTimeFormat(o,t),Lh.set(l,i)),i.format(s)}const ZE=Ue.lazy(()=>As(()=>import("./EntityActivityTimeline-DD33onAC.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),YE=Ue.lazy(()=>As(()=>import("./TaskContextUpload-DrGrXJHm.js"),__vite__mapDeps([7,1,8,9,2,3,4,5])).then(e=>({default:e.TaskContextUpload})));function JE({count:e}){const t=Math.max(2,Math.min(e||3,4));return n.jsx("div",{className:`${Xe.commentThread} ${Xe.activityLoadingThread}`.trim(),"aria-busy":"true","aria-live":"polite","aria-label":"Loading activity",children:Array.from({length:t},(a,s)=>n.jsxs("div",{className:Xe.activitySkeletonItem,children:[n.jsx("div",{className:Xe.activitySkeletonMeta}),n.jsx("div",{className:Xe.activitySkeletonBody})]},s))})}function QE({id:e,item:t,onToggle:a,onRemove:s}){const{attributes:o,listeners:l,setNodeRef:i,transform:d,transition:m,isDragging:y}=wg({id:e}),k={transform:rf.Transform.toString(d),transition:m,opacity:y?.88:1};return n.jsxs("div",{ref:i,style:k,className:`${Xe.checklistRow} ${y?Xe.checklistRowDragging:""}`.trim(),children:[n.jsx("button",{type:"button",className:Xe.checklistHandleBtn,title:"Reorder checklist item","aria-label":"Reorder checklist item",...o,...l,children:n.jsx(Mk,{size:14})}),n.jsx("button",{type:"button",className:`${Xe.checklistCheckboxBtn} ${t.isCompleted?Xe.checklistCheckboxBtnChecked:""}`.trim(),onClick:a,title:t.isCompleted?"Mark incomplete":"Mark complete","aria-label":t.isCompleted?"Mark checklist item incomplete":"Mark checklist item complete",children:t.isCompleted?n.jsx(ao,{size:14,strokeWidth:2.1}):null}),n.jsx("span",{className:`${Xe.checklistItemText} ${t.isCompleted?Xe.checklistItemTextCompleted:""}`.trim(),children:t.title}),n.jsx("button",{type:"button",className:Xe.checklistRemoveBtn,onClick:s,title:"Remove checklist item","aria-label":"Remove checklist item",children:n.jsx(ac,{size:15,strokeWidth:1.9})})]})}function _y(e){const{editingTaskId:t,error:a,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:x,newCommentText:I,contextFiles:C,currentWorkspaceId:D,apiBaseUrl:U,descriptionFocused:L,showMarkdownHelp:X,showChecklist:me=!1,checklistEnabled:se=!0,formTaxonomies:ae,onTaxonomyChange:O,onOpenSettings:_,categories:de,types:ke,priorities:Y,taxonomyDisplayLabels:P,assigneeOptions:z,taxonomies:ie,workstreams:fe=[],initiatives:q=[],copiedId:Me,onTitleChange:xe,onDescriptionChange:oe,onCategoryChange:le,onTypeChange:Ie,onPriorityChange:Ee,onComplexityChange:je,onAssigneeChange:Pe,onScheduledDateChange:K,onDueDateChange:A,onWorkstreamInputChange:b=()=>{},onChecklistItemsChange:R,onNewCommentTextChange:F,onDescriptionFocusedChange:Q,onShowMarkdownHelpChange:M,onShowChecklistChange:$=()=>{},onSubmit:be,onAddComment:H,onAddContextFile:ce,onRemoveContextFile:he,onUpdateContextCaption:G,onCopyId:re,onToggleInProgress:ue,onToggleReview:Re,onToggleComplete:Te,onToggleCancel:De,onSetStatus:Oe,onArchiveTask:vt,onUnarchive:st,onOpenTaskById:kt,currentTask:Ye,commentsEndRef:_t}=e,dt=Xi(Ye),Qe=Ue.useMemo(()=>ab(ie,ae),[ie,ae]),Rt=Ue.useMemo(()=>{const ye=de.find(wt=>wt.value===Qc),rt={value:Qc,label:ye?.label||_m,icon:ye?.icon||"HelpCircle",color:ye?.color||"var(--text-secondary)"},Ce=de.find(wt=>wt.value===l),pt=de.filter(wt=>!wt.disabled||wt.value===Ce?.value).filter(wt=>wt.value!==Qc).map(wt=>({value:wt.value,label:wt.disabled?`${wt.label} (Legacy)`:wt.label,icon:wt.icon,color:wt.color}));return[rt,...pt]},[de,l]),ee=Ue.useMemo(()=>{const ye=ke.find(Ce=>Ce.value===i);return ke.filter(Ce=>Ce.status!=="retired"||Ce.value===ye?.value).map(Ce=>({value:Ce.value,label:Ce.status==="retired"?`${Ce.label} (Retired)`:Ce.label,icon:Ce.icon||"Box",color:Ce.color||"violet-500"}))},[ke,i]),ze=ye=>ye&&vm(ye,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})||null,ft=ze(Ye?.createdAt),it=ze(Ye?.updatedAt||Ye?.createdAt),Et=ze(Ye?.completedAt),ht=Ue.useMemo(()=>{const ye=new Date,rt=ye.getFullYear(),Ce=String(ye.getMonth()+1).padStart(2,"0"),Nt=String(ye.getDate()).padStart(2,"0");return`${rt}-${Ce}-${Nt}`},[]),Ot=!!(h&&S&&h<S),Dt=!!(h&&h<ht&&(!Ye||Ye.status!=="done"&&Ye.status!=="cancelled")),We=v.filter(ye=>ye.isCompleted).length,[tt,Fe]=Ue.useState(""),[Ze,St]=Ue.useState(!1),ot=!!Ye?.isArchived,te=!!Ye?.isDeleted,Le=Ue.useMemo(()=>fe.map(ye=>{const rt=um(ye);return{value:rt||ye.id,label:rt?`${rt} · ${ye.title}`:ye.title,icon:"Folder",color:"var(--text-secondary)"}}),[fe]),Ct=Ue.useMemo(()=>Le.some(ye=>String(ye.value)===String(g||"").trim()),[g,Le]);Ue.useEffect(()=>{if(t){Ze&&St(!1);return}if(g.trim()){if(Ct&&Ze){St(!1);return}!Ct&&!Ze&&St(!0)}},[t,Ct,Ze,g]);const jt=ot||te,Wt=Ue.useRef(null),Ge=gg(Lp(Sg,{activationConstraint:{distance:6}}));Ue.useLayoutEffect(()=>{const ye=Wt.current;if(!ye)return;const rt=()=>{ye.scrollTop=0;const Nt=ye.parentElement;Nt&&(typeof Nt.scrollTo=="function"?Nt.scrollTo({top:0,left:0,behavior:"auto"}):Nt.scrollTop=0)};rt();const Ce=window.requestAnimationFrame(rt);return()=>window.cancelAnimationFrame(Ce)},[t,Ye?.id]);const $t=()=>{const ye=tt.trim();if(!ye)return;const rt=new Date().toISOString();R([...v,{id:`checklist-draft-${rt}-${v.length}`,taskId:t||"",title:ye,isCompleted:!1,order:v.length,createdAt:rt,updatedAt:rt}]),Fe("")},yt=Ue.useCallback(ye=>{const{active:rt,over:Ce}=ye;if(!Ce||rt.id===Ce.id)return;const Nt=v.findIndex(kn=>kn.id===rt.id),pt=v.findIndex(kn=>kn.id===Ce.id);if(Nt<0||pt<0)return;const wt=new Date().toISOString(),Cn=sv(v,Nt,pt).map((kn,cn)=>({...kn,order:cn,updatedAt:wt}));R(Cn)},[v,R]),E=ye=>{const rt=String(ye||"").trim(),Ce=ye.trim().replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ");return!Ce||Ce==="ai"||rt.toLowerCase().startsWith("ai-profile-")?"AI Agent":`AI Agent - ${Ce.split(" ").map(pt=>pt.charAt(0).toUpperCase()+pt.slice(1)).join(" ")}`},c=lS(z,k),J=cm(k),we=ud(k,c),Ae=Ue.useMemo(()=>new Map(c.map(ye=>[String(ye.value),ye])),[c]),Ke=Ae.get(String(k||"unassigned")),Je=Ye?.assigneeActor?.color||Ke?.color,Ne=Ue.useMemo(()=>{const ye=[Ye?.assigneeActor,Ye?.createdByActor].filter(Boolean);return new Map(ye.map(rt=>[String(rt.id),rt]))},[Ye?.assigneeActor,Ye?.createdByActor]),zt=Ue.useMemo(()=>new Map(fe.map(ye=>[ye.id,um(ye)||ye.id])),[fe]),Jt=Ue.useMemo(()=>new Map(q.map(ye=>[ye.id,ry(ye)||ye.id])),[q]),Pt=Ue.useMemo(()=>Cf({activity:Ye?.activity,comments:x}),[x,Ye?.activity]),Ft=(ye,rt)=>{const Ce=String(rt||"").trim();if(Ce){if(ye==="assignee")return ud(Ce,c);if(ye==="workstreamId")return zt.get(Ce);if(ye==="initiativeId")return Jt.get(Ce)}},Lt=Ue.useCallback((ye,rt,Ce)=>{if(Ce&&Ce.trim())return Ce.trim();const Nt=String(ye||"").trim();if(!Nt)return rt==="ai"?"AI Agent":qe("taskForm.you");const pt=Ne.get(Nt);if(pt?.label)return pt.label;const wt=Ae.get(Nt)||Ae.get(Nt.toLowerCase());return wt?.label?wt.label:rt==="ai"?E(Nt):ud(Nt,c)||Nt},[Ne,Ae,E,c]),Ht=Ue.useCallback(({actorId:ye,actorType:rt,actorProfile:Ce,fallbackKind:Nt})=>{const pt=String(ye||"").trim(),wt=pt.toLowerCase(),Cn=Ne.get(pt),kn=Ae.get(pt)||Ae.get(wt),cn=Ce||Cn||kn||null,ln=rt==="system"?"system":rt==="ai"||cn?.kind==="ai"?"agent":rt==="human"||cn?.kind==="human"?"member":kn?.kind==="agent"?"agent":kn?.kind==="member"?"member":Nt||(wt===""||wt==="user"||wt==="human"?"member":"agent"),$n=ln==="system"?"System":Lt(pt,ln==="agent"?"ai":"human",cn?.label||null),gt=cn?.color,rr=String(cn?.icon||(ln==="agent"?"Bot":ln==="member"?"User":"ClipboardList")),mn=tc[rr]||(ln==="agent"?nm:ln==="member"?ii:dg);return{kind:ln,label:$n,color:gt,ActorIcon:mn}},[Ne,Ae,Lt]),rn=Ue.useMemo(()=>{const ye=Pt[Pt.length-1];if(!ye)return null;if(ye.type==="comment"){const Ce=ye.comment;return Lt(Ce.author,Ce.actor?.kind==="ai"?"ai":Ce.actor?.kind==="human"?"human":null,Ce.actor?.label||null)}const rt=ye.event;return Lt(rt.actor,rt.actorType,rt.actorProfile?.label||null)},[Lt,Pt]),Vt=Ue.useMemo(()=>{if(!Ye?.completedAt)return null;for(const rt of Pt){if(rt.type!=="event")continue;const Ce=rt.event,Nt=Ce.details?.changes?.status?.to;if(Nt==="done"||Nt==="cancelled")return Lt(Ce.actor,Ce.actorType,Ce.actorProfile?.label||null)}return rn},[Ye?.completedAt,rn,Lt,Pt]),Vn=Ye?.createdByActor?.label||Lt(Ye?.createdBy||null,Ye?.createdByActor?.kind==="ai"?"ai":Ye?.createdByActor?.kind==="human"?"human":null,Ye?.createdByActor?.label||null),qn=rn,Kn=Pt.length;Ue.useLayoutEffect(()=>{if(!t)return;const ye=_t.current;if(!ye)return;const rt=ye.parentElement,Ce=()=>{if(typeof ye.scrollIntoView=="function"){ye.scrollIntoView({block:"end"});return}rt&&(rt.scrollTop=rt.scrollHeight)};Ce();const Nt=window.requestAnimationFrame(Ce);return()=>window.cancelAnimationFrame(Nt)},[Kn,_t,Ye?.id,t]);const ca=t?n.jsxs("aside",{className:Xe.activitySidebar,"aria-label":qe("taskForm.commentsSectionTitle"),children:[n.jsxs("div",{className:Xe.activitySidebarHeader,children:[n.jsx("h2",{className:Xe.activitySidebarTitle,children:qe("taskForm.commentsSectionTitle")}),n.jsx("span",{className:Xe.activitySidebarCount,children:Kn})]}),n.jsxs("div",{className:`${Xe.commentPanel} ${Xe.activitySidebarPanel}`.trim(),children:[n.jsx(Ue.Suspense,{fallback:n.jsx(JE,{count:Kn}),children:n.jsx(ZE,{activity:Ye?.activity,comments:x,formatFieldValue:Ft,resolveActorPresentation:Ht,onOpenTaskById:kt,emptyMessage:qe("taskForm.noComments"),listClassName:Xe.commentThread,emptyClassName:Xe.emptyComments,endRef:_t})}),n.jsxs("div",{className:Xe.commentInputArea,children:[n.jsx("textarea",{className:Xe.commentInput,placeholder:qe("taskForm.commentPlaceholder"),value:I,onChange:ye=>F(ye.target.value),onKeyDown:ye=>{ye.key==="Enter"&&!ye.shiftKey&&(ye.preventDefault(),H())},rows:4}),n.jsx("button",{type:"button",className:Xe.sendCommentBtn,onClick:H,disabled:!I.trim(),"aria-label":"Send comment",title:"Send comment",children:n.jsx(Pk,{size:16})})]})]})]}):null;return n.jsxs("form",{ref:Wt,onSubmit:be,className:`${p.form} ${p.appScrollbar} tf-scrollbar`,children:[a&&n.jsx("div",{className:Xe.error,children:a}),jt&&n.jsx("div",{className:`${Xe.formNotice} tf-text-helper`,children:te?"Deleted tasks are read-only. Restore the task to make changes.":"Archived tasks are read-only. Unarchive the task to make changes."}),n.jsxs("fieldset",{disabled:jt,className:`${Xe.formFieldsetReset} ${t?Xe.formLayoutWithSidebar:Xe.formLayout}`.trim(),children:[n.jsxs("div",{className:Xe.formMainColumn,children:[n.jsxs("div",{className:p.field,children:[n.jsxs("div",{className:p.labelRow,children:[n.jsx("label",{className:p.label,children:"Title"}),k&&n.jsx("span",{title:`Assigned to: ${we}`,className:[Xe.assigneeIndicator,J==="agent"?Xe.assigneeIndicatorAgent:J==="member"?Xe.assigneeIndicatorUser:Xe.assigneeIndicatorUnassigned].join(" "),style:Je?{color:Je}:void 0,children:J==="agent"?n.jsx(nm,{size:20}):J==="member"?n.jsx(ii,{size:20}):n.jsx(Ji,{size:20})})]}),n.jsx("input",{type:"text",value:s,onChange:ye=>xe(ye.target.value),placeholder:"What needs to be done?",className:p.input,required:!0,maxLength:255,autoFocus:!0})]}),n.jsxs("div",{className:p.field,children:[n.jsxs("div",{className:p.labelRow,children:[n.jsx("label",{className:p.label,children:"Description"}),n.jsx("button",{type:"button",className:p.helpLink,onClick:()=>M(!X),title:"Markdown Help",tabIndex:-1,children:n.jsx(Ji,{size:14})})]}),X&&n.jsxs("div",{className:Xe.markdownHelp,children:[n.jsxs("div",{className:Xe.helpHeader,children:[n.jsx("span",{children:"Markdown Guide"}),n.jsx("button",{onClick:()=>M(!1),className:Xe.helpClose,children:n.jsx(ac,{size:12})})]}),n.jsxs("div",{className:Xe.helpGrid,children:[n.jsx("div",{children:n.jsx("code",{children:"**bold**"})}),n.jsx("div",{children:n.jsx("code",{children:"_italic_"})}),n.jsx("div",{children:n.jsx("code",{children:"- list"})}),n.jsx("div",{children:n.jsx("code",{children:"1. list"})}),n.jsx("div",{className:Xe.helpGridItem,children:n.jsx("code",{children:"`inline code`"})}),n.jsxs("div",{className:Xe.helpGridItem,children:[n.jsx("code",{children:"```"}),n.jsx("br",{}),n.jsx("code",{children:"code block"}),n.jsx("br",{}),n.jsx("code",{children:"```"})]}),n.jsx("div",{children:n.jsx("code",{children:"[link](url)"})})]})]}),L||!o?n.jsx("textarea",{className:`${p.textarea} ${Xe.descriptionSurface}`,placeholder:"What needs to be done? (Markdown supported)",value:o,onChange:ye=>oe(ye.target.value),onFocus:()=>Q(!0),onBlur:()=>Q(!1),rows:9,autoFocus:L}):n.jsx("div",{className:`${p.textarea} ${Xe.descriptionSurface} ${Xe.markdownPreview} ${Xe.markdownPreviewContainer}`,onClick:()=>Q(!0),children:n.jsx(cy,{onTaskIdClick:kt,children:o})})]}),n.jsxs("div",{className:Xe.compactMetaSection,children:[n.jsxs("div",{className:Xe.compactMetaGrid,children:[n.jsxs("div",{className:`${p.field} ${Xe.compactMetaField}`,children:[n.jsx("label",{id:"category-label",className:p.label,children:P?.category||"Category"}),n.jsx(id,{value:l,options:Rt,onChange:ye=>le(String(ye)),required:!0,ariaLabelledBy:"category-label"})]}),n.jsxs("div",{className:`${p.field} ${Xe.compactMetaField}`,children:[n.jsx("label",{id:"type-label",className:p.label,children:P?.type||"Type"}),n.jsx(id,{value:i,options:ee,onChange:ye=>Ie(String(ye)),ariaLabelledBy:"type-label"})]}),n.jsxs("div",{className:`${p.field} ${Xe.compactMetaField}`,children:[n.jsx("label",{htmlFor:"task-form-scheduled-date",className:p.label,children:qe("taskForm.scheduledLabel")}),n.jsx("input",{id:"task-form-scheduled-date",type:"date",value:S,onChange:ye=>K(ye.target.value),className:`${p.input} ${p.taskFormDateInput}`})]}),n.jsxs("div",{className:`${p.field} ${Xe.compactMetaField}`,children:[n.jsx("label",{id:"assignee-label",className:p.label,children:"Assigned To"}),n.jsx(id,{value:k||"unassigned",options:c,onChange:ye=>Pe(String(ye)),ariaLabelledBy:"assignee-label"})]}),n.jsx("div",{className:Xe.compactMetaField,children:n.jsx(xp,{label:P?.priority||"Priority",options:Y,value:d,onChange:Ee,type:"priority",showSelectedLabel:!1})}),n.jsxs("div",{className:`${p.field} ${Xe.compactMetaField}`,children:[n.jsx("label",{htmlFor:"task-form-due-date",className:p.label,children:qe("taskForm.dueLabel")}),n.jsx("input",{id:"task-form-due-date",type:"date",value:h,onChange:ye=>A(ye.target.value),className:`${p.input} ${p.taskFormDateInput}`}),Ot&&n.jsx("span",{className:`${Xe.taskFormDateWarning} ${Xe.compactMetaFieldHint}`,children:qe("taskForm.dueBeforeScheduled")}),Dt&&n.jsx("span",{className:`${Xe.taskFormDateError} ${Xe.compactMetaFieldHint}`,children:qe("taskForm.overdue")})]}),y&&n.jsx("div",{className:Xe.compactMetaField,children:n.jsx(xp,{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:je,type:"general"})})]}),!t&&n.jsxs("div",{className:Xe.createWorkstreamRow,children:[n.jsx("label",{className:p.label,children:"Attach to workstream"}),n.jsxs("div",{className:p.pathInputGroup,children:[Ze?n.jsx("input",{type:"text",className:p.input,value:g,onChange:ye=>b(ye.target.value),placeholder:"Type a workstream name or reference","aria-label":"Attach to workstream"}):n.jsx(id,{value:g,options:Le,onChange:ye=>b(String(ye)),placeholder:"Select workstream...",ariaLabel:"Attach to workstream",className:Xe.createWorkstreamDropdown}),n.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:()=>{if(Ze){St(!1),Ct||b("");return}St(!0)},"aria-label":Ze?"Use workstream dropdown":"Enter workstream by name",title:Ze?"Use workstream dropdown":"Enter workstream by name",children:n.jsx(ro,{size:14})})]})]})]}),n.jsxs("div",{className:Xe.sectionBlock,children:[n.jsx("div",{className:Xe.taxonomyFieldsGrid,children:Qe.map(ye=>{if(ye.id==="approach"&&ye.isSystem)return null;const rt=ae[ye.id],Ce=Array.isArray(rt)?rt.map(pt=>String(pt)):rt!=null&&rt!==""?[String(rt)]:[],Nt=ye.options.filter(pt=>pt.status!=="retired"||Ce.includes(String(pt.value)));return n.jsxs("div",{className:p.field,children:[n.jsx("label",{className:p.label,children:ye.label}),ye.description&&n.jsx("div",{className:`${Xe.settingsHint} tf-text-helper`,children:ye.description}),ye.widgetType==="level"?n.jsx(xp,{label:ye.label,options:Nt.map(pt=>({...pt,label:pt.status==="retired"?`${pt.label} (Retired)`:pt.label})),value:ae[ye.id]||"",onChange:pt=>O(ye.id,pt),type:"general",hideLabel:!0}):ye.multiSelect?n.jsx("div",{className:`${p.dropdownList} ${Xe.softSectionSurface}`,children:Nt.map(pt=>{const wt=String(pt.value),Cn=Ce.includes(wt);return n.jsxs("button",{type:"button",className:`${Xe.specialistChip} ${Cn?Xe.specialistChipActive:""}`,onClick:()=>{const kn=Cn?Ce.filter(cn=>cn!==wt):[...Ce,wt];O(ye.id,kn)},title:Cn?"Click to remove":"Click to add",children:[Cn&&n.jsx(ao,{size:12}),pt.status==="retired"?`${pt.label} (Retired)`:pt.label]},wt)})}):n.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 pt=ye.options.find(kn=>String(kn.value)===String(ae[ye.id])),wt=pt?.icon&&Cs[pt.icon]?Cs[pt.icon]:Ji,Cn=pt?.color||"var(--text-secondary)";return n.jsx("div",{className:p.fieldIcon,style:{color:Da(Cn)},children:n.jsx(wt,{size:16})})})(),n.jsxs("select",{value:ae[ye.id]||"",onChange:pt=>O(ye.id,pt.target.value),className:`${p.select} ${p.field_dynamic}`,required:ye.isRequired,children:[n.jsxs("option",{value:"",children:["Select ",ye.label,"..."]}),Nt.map(pt=>n.jsx("option",{value:pt.value,children:pt.status==="retired"?`${pt.label} (Retired)`:pt.label},pt.value))]})]})]},ye.id)})}),se&&n.jsxs("div",{className:p.specialistSection,children:[n.jsxs("div",{className:p.toggleHeading,onClick:()=>$(!me),title:me?"Hide checklist":"Show checklist",children:[n.jsxs("label",{className:p.label,children:["Checklist"," ",v.length>0&&`(${We}/${v.length})`]}),me?n.jsx(al,{size:14}):n.jsx(Xc,{size:14})]}),me&&n.jsxs("div",{className:`${p.dropdownList} ${Xe.stackedList} ${Xe.stackedListSpaced}`,children:[n.jsxs("div",{className:p.pathInputGroup,children:[n.jsx("input",{type:"text",className:p.input,placeholder:"Add checklist item",value:tt,onChange:ye=>Fe(ye.target.value),onKeyDown:ye=>{ye.key==="Enter"&&(ye.preventDefault(),$t())}}),n.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:$t,disabled:!tt.trim(),children:"Add"})]}),v.length>0?n.jsx(yg,{sensors:Ge,collisionDetection:ov,onDragEnd:yt,children:n.jsx(kg,{items:v.map(ye=>ye.id),strategy:vg,children:v.map((ye,rt)=>n.jsx(QE,{id:ye.id||`checklist-${rt}`,item:ye,onToggle:()=>{const Ce=new Date().toISOString();R(v.map((Nt,pt)=>pt===rt?{...Nt,isCompleted:!Nt.isCompleted,updatedAt:Ce}:Nt))},onRemove:()=>R(v.filter((Ce,Nt)=>Nt!==rt).map((Ce,Nt)=>({...Ce,order:Nt})))},ye.id||`checklist-${rt}`))})}):n.jsx("div",{className:`${Xe.settingsHint} tf-text-helper`,children:"No checklist items yet."})]})]})]}),n.jsxs("div",{children:[n.jsx(Ue.Suspense,{fallback:null,children:n.jsx(YE,{taskId:t,taskReferenceLabel:dt,workspaceId:D,apiBaseUrl:U,contextFiles:C,onAddContextFile:ce,onRemoveContextFile:he,onUpdateContextCaption:G})}),n.jsx("div",{className:`${Xe.taskFormLifecycle} ${Xe.taskFormMetaDivider}`,children:n.jsx("div",{className:Xe.taskFormMetaGrid,children:Ye&&n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:Xe.taskFormDateRow,children:[n.jsx("span",{className:Xe.taskFormDateLabel,children:qe("taskForm.createdLabel")}),n.jsxs("span",{className:Xe.taskFormMetaStack,children:[n.jsx("span",{className:Xe.taskFormDateValue,children:ft||qe("taskForm.emptyValue")}),n.jsx("span",{className:Xe.taskFormMetaActor,children:Vn?`by ${Vn}`:qe("taskForm.emptyValue")})]})]}),n.jsxs("div",{className:Xe.taskFormDateRow,children:[n.jsx("span",{className:Xe.taskFormDateLabel,children:qe("taskForm.updatedLabel")}),n.jsxs("span",{className:Xe.taskFormMetaStack,children:[n.jsx("span",{className:Xe.taskFormDateValue,children:it||qe("taskForm.emptyValue")}),n.jsx("span",{className:Xe.taskFormMetaActor,children:qn?`by ${qn}`:qe("taskForm.emptyValue")})]})]}),n.jsxs("div",{className:Xe.taskFormDateRow,children:[n.jsx("span",{className:Xe.taskFormDateLabel,children:qe("taskForm.completedLabel")}),n.jsxs("span",{className:Xe.taskFormMetaStack,children:[n.jsx("span",{className:Xe.taskFormDateValue,children:Et||qe("taskForm.emptyValue")}),n.jsx("span",{className:Xe.taskFormMetaActor,children:Vt?`by ${Vt}`:qe("taskForm.emptyValue")})]})]})]})})})]})]}),ca,n.jsxs("div",{className:Xe.keyboardHint,children:["Press ",n.jsx("kbd",{children:navigator.platform.includes("Mac")?"⌥":"Alt"})," to toggle"]})]})]})}function Zi({ariaLabel:e,children:t,disabled:a=!1,onClick:s,title:o}){return n.jsx("button",{type:"button",className:`${p.taskIdBadge} ${p.taskHierarchyActionBtn}`,onClick:s,disabled:a,title:o,"aria-label":e,children:t})}function Cy({editingTaskId:e,loading:t,autoSaveState:a="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:x,handleToggleReview:I,handleToggleComplete:C,handleToggleCancel:D,handleSetStatus:U,handleArchiveTask:L,handleUnarchiveTask:X,handleRestoreDeletedTask:me,handlePermanentlyDeleteDeletedTask:se}){const[ae,O]=Ue.useState(!1),_=y??(e&&m.find(oe=>oe.id===e)||null),de=!!_?.isArchived,ke=!!_?.isDeleted,Y=Ng(_),P=Y.label||(Y.isProvisional?"Pending":""),z=Y.isProvisional,ie=!!Y.label,fe=k?um(k)||k.id:"",q=S?os(S)||S.id:"";Ue.useEffect(()=>{k&&O(!1)},[k?.id]);const Me=Ue.useCallback(()=>{h.trim()&&v?.()},[v,h]),xe=Ue.useCallback(()=>{O(!1),g?.(""),v?.(null)},[v,g]);return n.jsx("div",{className:p.stickyActionHeader,children:e?n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:p.taskHierarchyHeader,children:[n.jsxs("div",{className:p.taskHierarchyBadgeRow,children:[k?n.jsx(n.Fragment,{children:n.jsx(Zi,{onClick:xe,disabled:t||de||ke,title:"Remove from workstream",ariaLabel:"Remove from workstream",children:n.jsx(Zu,{size:13})})}):null,S?n.jsxs("span",{className:p.taskHierarchySegment,children:[n.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),n.jsx(Qu,{copied:d===q,onClick:oe=>i(oe,q),disabled:t,title:"Copy initiative reference",label:q})]}):null,k?n.jsxs("span",{className:p.taskHierarchySegment,children:[n.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),n.jsx(Qu,{copied:d===fe,onClick:oe=>i(oe,fe),disabled:t,title:"Copy workstream reference",label:fe})]}):n.jsx(n.Fragment,{children:n.jsx(Zi,{onClick:()=>{g?.(""),O(oe=>!oe)},disabled:t||de||ke,title:"Attach to workstream",ariaLabel:"Attach to workstream",children:n.jsx(am,{size:13})})}),P?n.jsxs("span",{className:p.taskHierarchySegment,children:[n.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),n.jsx(Qu,{copied:ie&&d===Y.label,onClick:oe=>i(oe,Y.label),disabled:t||!ie,title:ie?qe("actionHeader.copyTaskIdTitle"):"Task reference pending sync",label:P})]}):null,z?n.jsx("span",{className:p.taskHierarchyMeta,title:"Temporary local reference until cloud sync assigns the final task number.",children:"Pending sync"}):null]}),ae&&!k?n.jsxs("div",{className:p.taskHierarchyEditor,children:[n.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(),Me()),oe.key==="Escape"&&(oe.preventDefault(),g?.(""),O(!1))}}),n.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:Me,disabled:!h.trim()||t,title:"Attach workstream","aria-label":"Attach workstream",children:n.jsx(ao,{size:14})}),n.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:()=>{g?.(""),O(!1)},disabled:t,title:"Cancel workstream attach","aria-label":"Cancel workstream attach",children:n.jsx(ac,{size:14})})]}):null]}),n.jsx("div",{className:p.taskSaveStatusCenter,children:n.jsx("div",{className:`${p.taskSaveStatus} ${a==="error"?p.taskSaveStatusError:""}`,"aria-live":"polite",children:a==="saving"?n.jsxs(n.Fragment,{children:[n.jsx(kr,{size:14,className:p.spinner}),n.jsx("span",{children:"Saving…"})]}):a==="saved"?n.jsx("span",{children:"Saved"}):a==="error"?n.jsx("span",{children:"Save failed"}):null})}),n.jsx("div",{className:p.editActionsGroup,children:ke&&_?.deletedRecordId?n.jsxs(n.Fragment,{children:[me&&n.jsx("button",{type:"button",className:p.actionBtn,onClick:()=>me(_.deletedRecordId||""),disabled:t,title:"Restore deleted task",children:n.jsx(gd,{size:16})}),se&&n.jsx("button",{type:"button",className:`${p.actionBtn} ${p.deleteBtn}`,onClick:()=>se(_.deletedRecordId||""),disabled:t,title:"Permanently delete deleted task",children:n.jsx(xm,{size:16})})]}):n.jsx(gy,{task:_,disabled:t,statusDisabled:t||de,archiveActionMode:de?"unarchive":"auto",onSetStatus:(oe,le)=>{if(U){U(oe,le);return}if(le==="in-progress"){x(oe);return}if(le==="review"){I(oe);return}if(le==="done"){C(oe);return}le==="cancelled"&&D(oe)},onArchiveTask:L,onUnarchiveTask:oe=>X?.(oe.id)})})]}):n.jsxs(n.Fragment,{children:[n.jsxs("button",{type:"button",onClick:l,disabled:t,className:p.secondaryHeaderBtn,title:qe("actionHeader.clearFormTitle"),children:[n.jsx(gd,{size:16}),qe("actionHeader.clear")]}),n.jsxs("button",{type:"button",onClick:oe=>o(oe),disabled:t||!s.trim(),className:p.primaryUpdateBtn,title:qe("actionHeader.addTaskTitle"),children:[t?n.jsx(kr,{size:16,className:p.spinner}):n.jsx(ro,{size:16}),qe("actionHeader.addTask")]})]})})}const XE="_topNoticeLayer_1m6a1_1",eD="_topNotice_1m6a1_1",tD="_topNoticeMessage_1m6a1_32",nD="_topNoticeSuccess_1m6a1_38",aD="_topNoticeError_1m6a1_44",rD="_topNoticeInfo_1m6a1_50",sD="_topNoticeDismiss_1m6a1_56",Vi={topNoticeLayer:XE,topNotice:eD,topNoticeMessage:tD,topNoticeSuccess:nD,topNoticeError:aD,topNoticeInfo:rD,topNoticeDismiss:sD};function Ay({notice:e,onDismiss:t}){if(!e)return null;const a=e.tone==="error"?Vi.topNoticeError:e.tone==="success"?Vi.topNoticeSuccess:Vi.topNoticeInfo,s=e.tone==="error"?"alert":"status";return n.jsx("div",{className:Vi.topNoticeLayer,children:n.jsxs("div",{className:`${Vi.topNotice} ${a}`,role:s,"aria-live":e.tone==="error"?"assertive":"polite",children:[e.tone==="error"?n.jsx(yd,{size:14}):e.tone==="success"?n.jsx(ao,{size:14}):n.jsx(Ek,{size:14}),n.jsx("span",{className:Vi.topNoticeMessage,children:e.message}),t&&n.jsx("button",{type:"button",className:Vi.topNoticeDismiss,onClick:t,"aria-label":"Dismiss notice",title:"Dismiss notice",children:n.jsx(ac,{size:14})})]})})}const oD=Ue.lazy(()=>As(()=>import("./TaskSettings-BXVvZZwH.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings})));function iD(e){const{activeTab:t,setActiveTab:a,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:x,setSettingsSection:I,projectRoot:C,projectName:D,mcpScriptPath:U,serverHostRoot:L,showFolderBrowser:X,setShowFolderBrowser:me,folders:se,files:ae,currentBrowsePath:O,fetchFolders:_,browserTarget:de,setBrowserTarget:ke,handleSelectPath:Y,handleAddPath:P,handleRemovePath:z,tasks:ie,loadingTasks:fe,archivedTasks:q,deletedTasks:Me,activeCategories:xe,activeTypes:oe,priorities:le,taxonomyDisplayLabels:Ie,approaches:Ee,taxonomies:je,searchQuery:Pe,setSearchQuery:K,filterCategories:A,setFilterCategories:b,filterTypes:R,setFilterTypes:F,filterPriorities:Q,setFilterPriorities:M,filterStatus:$,setFilterStatus:be,filterAssignees:H,setFilterAssignees:ce,assigneeOptions:he,filterTaxonomies:G,setFilterTaxonomies:re,sortBy:ue,setSortBy:Re,sortOrder:Te,toggleSortOrder:De,showArchive:Oe,setShowArchive:vt,taskScope:st,setTaskScope:kt,clearFilters:Ye,filteredTasks:_t,filteredArchive:dt,groupedTasks:Qe,collapsedCategories:Rt,setCollapsedCategories:ee,handleEdit:ze,handleDelete:ft,handleCopyId:it,handleToggleComplete:Et,handleToggleCancel:ht,handleToggleInProgress:Ot,handleToggleReview:Dt,handleArchiveTask:We,handleBulkArchive:tt,handleUnarchive:Fe,handleRestoreDeletedTask:Ze,handlePermanentlyDeleteDeletedTask:St,handleEmptyDeletedTasks:ot,fetchArchive:te,editingTaskId:Le,loading:Ct,error:jt,title:Wt,setTitle:Ge,description:$t,setDescription:yt,checklistItems:E,setChecklistItems:c,category:J,setCategory:we,type:Ae,setType:Ke,priority:Je,setPriority:Ne,complexity:zt,setComplexity:Jt,manualComplexityEnabled:Pt,checklistDropdownEnabled:Ft,showTaskCardStatusLabel:Lt,approach:Ht,setApproach:rn,assignee:Vt,setAssignee:Vn,scheduledDate:qn,setScheduledDate:Kn,dueDate:ca,setDueDate:ye,workstreamInput:rt,setWorkstreamInput:Ce,formTaxonomies:Nt,setFormTaxonomies:pt,comments:wt,newCommentText:Cn,setNewCommentText:kn,attachments:cn,setAttachments:ln,setAttachmentsDirty:$n,descriptionFocused:gt,setDescriptionFocused:rr,showMarkdownHelp:mn,setShowMarkdownHelp:tn,showChecklist:bn,setShowChecklist:Kt,showComments:vr,setShowComments:Rn,handleSubmit:Xn,resetForm:jn,handleAddComment:Zt,handleSetWorkstreamForCurrentTask:Zn,handleOpenTaskById:nn,autoSaveState:la,unsavedModalOpen:ya,setUnsavedModalOpen:Sr,pendingNavigation:dn,handleNavigation:wr,handleClose:qr,scheduleWarningPrompt:Va,confirmScheduleWarning:ka,cancelScheduleWarning:Un,uiNotice:br,clearNotice:da,taskReturnTrail:Dn,clearReturnToParentTask:Nn,returnToPreviousTask:xr,copiedId:At,recentlyChangedTaskIds:va,tasksScrollRef:Sa,setTasksScrollPos:ua,currentTask:zn,currentTaskWorkstream:sr,currentTaskInitiative:Pn,exportEnvironment:vn,setExportEnvironment:La,exportWorkflowsPath:wa,setExportWorkflowsPath:Sn,exportResult:Yt,exportingResource:ba,availableWorkflows:Hn,onExportWorkflows:Mn,availableEnvironments:Ba,handleUpdateCategory:En,handleRemoveCategory:Mr,handleSaveCategory:an,handleUpdateCategoryIcon:un,handleUpdateCategoryColor:ea,handleSaveType:or,handleRemoveType:Er,handleUpdateTaxonomies:_r,handleUpdatePriorities:Xt,pathValidation:xa,validatePaths:_a,getCategoryPaths:Cr,commentsEndRef:Ar,currentWorkspaceId:qa,settingsModel:Ka,onHeaderMouseDown:ir,isDragging:ta}=e,Ca=r.useRef(null),[Za,na]=Ue.useState(0);r.useLayoutEffect(()=>{if(t==="tasks"&&Sa.current&&Za>0){const et=setTimeout(()=>{Sa.current&&(Sa.current.scrollTop=Za)},50);return()=>clearTimeout(et)}},[t,Za,ie]);const cs=et=>{Re(et)},Yn=()=>{wr(()=>{if(t==="add"||t==="settings"){if(t==="add"&&xr())return;t==="add"&&Dn.length>0&&Nn(),t==="add"&&jn(),a("tasks")}else e.onClose?e.onClose():qr()})},Kr=()=>{Sr(!1),dn?(t==="add"&&jn(),dn()):a("tasks")},Dr=async()=>{await Xn({preventDefault:()=>{}}),Sr(!1),dn&&dn()},Aa=(et,Bt)=>{pt(Ln=>({...Ln,[et]:Bt})),et==="approach"&&typeof Bt=="string"&&rn(Bt)},cr=r.useCallback(et=>{jn(),we(et),wr(()=>{a("add")})},[jn,we,a,wr]),Wa=Ue.useMemo(()=>Me.map(et=>({...et.taskSnapshot,isDeleted:!0,deletedRecordId:et.id})),[Me]),ma=Ue.useMemo(()=>new globalThis.Map(Me.map(et=>[et.taskId,et])),[Me]),lr=Ue.useMemo(()=>{const et=Rm(Pe),Bt={categories:xe,types:oe,priorities:le,assigneeOptions:he,taxonomies:je},Ln=xe.every(Gt=>A.includes(Gt.value)),An=oe.every(Gt=>R.includes(Gt.value)),wn=Array.from(new Set(Q.map(Gt=>Number(Gt)).filter(Gt=>Number.isFinite(Gt)))),Ya=le.map(Gt=>Number(Gt.value)).filter(Gt=>Number.isFinite(Gt)).every(Gt=>wn.includes(Gt)),Fa=["task","in-progress","review","done","cancelled","on-hold"].every(Gt=>$.includes(Gt)),Oa=he.length>0&&he.every(Gt=>H.includes(Gt.value)),Ta=_d(je,Wa);return Wa.filter(Gt=>{const $a=pm(Gt,et,Bt),pa=Ln||A.includes(Gt.category),Bn=Ya||wn.includes(sm(Gt.priority)),Lr=An||R.includes(Gt.type||Vr),Br=Fa||$.includes(Gt.status),dr=Oa||H.includes(Gt.assignee||"unassigned"),ur=Object.entries(G).every(([Fs,ra])=>{const fa=Ta.find(W=>W.id===Fs);if(!fa||bf(fa,Wa).every(W=>ra.includes(W.value)))return!0;const mr=Gt.taxonomies?.[Fs];return mr?Array.isArray(mr)?mr.some(W=>ra.includes(W)):ra.includes(mr):ra.includes("")});return $a&&pa&&Bn&&Lr&&Br&&dr&&ur}).sort((Gt,$a)=>fm(Gt,$a,ue,Te,je))},[xe,oe,q,he,Wa,H,A,Q,$,G,R,le,Pe,ue,Te,je,ie]),Zr=Ue.useMemo(()=>{const et={};return lr.forEach(Bt=>{const An=xe.find(wn=>wn.value===Bt.category||wn.label===Bt.category)?.label||Bt.category||"General";et[An]||(et[An]=[]),et[An].push(Bt)}),et},[xe,lr]),ls=st==="archived"?dt.length:st==="deleted"?lr.length:_t.length;return n.jsxs(n.Fragment,{children:[n.jsxs("div",{ref:Ca,className:`${Tt.modal} ${p.coreModal} ${t==="settings"?Tt.settingsViewModal:""}`,"data-theme":l,children:[n.jsxs("div",{className:"tf-modal-header",onMouseDown:ir,style:{cursor:ir?ta?"grabbing":"grab":"default"},children:[n.jsxs("div",{className:`tf-modal-title ${en.headerTitleWidget}`,children:["Taskforce",D&&n.jsxs(n.Fragment,{children:[n.jsx("span",{className:p.projectSlash,children:"/"}),n.jsx("span",{className:p.projectName,style:{fontSize:"14px",padding:"1px 6px"},children:D})]}),n.jsx("span",{className:p.taskCountBadge,title:`${st.charAt(0).toUpperCase()+st.slice(1)} tasks`,children:ls})]}),n.jsxs("div",{className:Tt.headerActions,children:[t==="tasks"&&n.jsx(n.Fragment,{children:n.jsx("button",{className:"tf-control-icon",onClick:()=>{wr(()=>{jn(),a("add")})},title:"Add New Task",children:n.jsx(ro,{size:18})})}),n.jsx("button",{className:`tf-control-icon ${t==="settings"?"tf-control-icon-active":""}`,onClick:()=>{t!=="settings"&&wr(()=>{a("settings")})},title:"Settings",children:n.jsx(nf,{size:18})}),n.jsx("button",{className:"tf-control-icon",onClick:Yn,title:t==="tasks"?"Close":"Back to Tasks",children:t==="tasks"?n.jsx(ac,{size:20}):n.jsx(Dk,{size:20})})]})]}),n.jsx(Ay,{notice:br,onDismiss:da}),t==="add"&&n.jsx(Cy,{editingTaskId:Le,loading:Ct,autoSaveState:la,title:Wt,currentTask:zn,currentTaskWorkstream:sr,currentTaskInitiative:Pn,workstreamInput:rt,onWorkstreamInputChange:Ce,onSetWorkstreamForCurrentTask:Zn,handleSubmit:Xn,resetForm:jn,handleCopyId:it,copiedId:At,tasks:ie,handleToggleInProgress:Ot,handleToggleReview:Dt,handleToggleComplete:Et,handleToggleCancel:ht,handleArchiveTask:We,handleUnarchiveTask:et=>{if(zn?.isDeleted){const Bt=ma.get(et);Bt&&Ze(Bt.id);return}Fe(et)},handleRestoreDeletedTask:et=>{Ze(et)},handlePermanentlyDeleteDeletedTask:et=>{St(et)}}),t==="tasks"&&n.jsx(xy,{ref:Sa,tasks:ie,archivedTasks:q,categories:xe,types:oe,priorities:le,taxonomyDisplayLabels:Ie,taxonomies:je,searchQuery:Pe,filterCategories:A,filterTypes:R,filterPriorities:Q,filterStatus:$,filterAssignees:H,assigneeOptions:he,filterTaxonomies:G,sortBy:ue,sortOrder:Te,showArchive:Oe,taskScope:st,collapsedCategories:Rt,loadingTasks:fe,filteredTasks:_t,filteredArchive:dt,groupedTasks:Qe,filteredDeletedTasks:lr,groupedDeletedTasks:Zr,copiedId:At,recentlyChangedTaskIds:va,showTaskCardStatusLabel:Lt,workstreams:e.workstreams,initiatives:e.initiatives,onSearchChange:K,onFilterCategoriesChange:et=>b(et),onFilterTypesChange:et=>F(et),onFilterPrioritiesChange:M,onFilterStatusChange:be,onFilterAssigneesChange:et=>ce(et),onTaxonomyFilterChange:(et,Bt)=>re(Ln=>({...Ln,[et]:Bt})),onSortByChange:cs,onSortOrderChange:De,onShowArchiveChange:vt,onTaskScopeChange:kt,onClearFilters:Ye,onToggleCategory:et=>ee(Bt=>({...Bt,[et]:!Bt[et]})),onEditTask:ze,onOpenTaskById:nn,onCopyId:it,onToggleInProgress:Ot,onToggleReview:Dt,onToggleComplete:Et,onToggleCancel:ht,onArchiveTask:We,onBulkArchive:tt,onUnarchive:et=>{const Bt=ma.get(et);if(Bt){Ze(Bt.id);return}Fe(et)},onDelete:et=>{const Bt=ma.get(et);if(Bt){St(Bt.id);return}ft(et)},onDeleteAllDeleted:()=>{ot()},onFetchArchive:te,onAddTaskToCategory:cr,supplementalTasks:Wa}),t==="add"&&n.jsx(_y,{editingTaskId:Le,error:jt,title:Wt,description:$t,checklistItems:E,category:J,type:Ae,priority:Je,complexity:zt,manualComplexityEnabled:Pt,approach:Ht,assignee:Vt,scheduledDate:qn,dueDate:ca,workstreamInput:rt,formTaxonomies:Nt,onTaxonomyChange:Aa,taxonomies:je,comments:wt,newCommentText:Cn,contextFiles:cn,currentWorkspaceId:qa,apiBaseUrl:"",descriptionFocused:gt,showMarkdownHelp:mn,showChecklist:bn,checklistEnabled:Ft,showComments:vr,categories:xe,types:oe,priorities:le,taxonomyDisplayLabels:Ie,assigneeOptions:he,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:At,onTitleChange:Ge,onDescriptionChange:yt,onChecklistItemsChange:c,onCategoryChange:we,onTypeChange:Ke,onPriorityChange:Ne,onComplexityChange:Jt,onApproachChange:et=>{rn(et),pt(Bt=>({...Bt,approach:et}))},onAssigneeChange:Vn,onScheduledDateChange:Kn,onDueDateChange:ye,onWorkstreamInputChange:Ce,onNewCommentTextChange:kn,onDescriptionFocusedChange:rr,onShowMarkdownHelpChange:tn,onShowChecklistChange:Kt,onShowCommentsChange:Rn,onOpenSettings:et=>{wr(()=>{I(et),a("settings")})},onSubmit:Xn,commentsEndRef:Ar,onAddComment:()=>Zt(Cn),onOpenTaskById:nn,onAddContextFile:et=>{$n(!0),ln(Bt=>[...Bt,et])},onRemoveContextFile:async et=>{$n(!0),ln(Bt=>Bt.filter((Ln,An)=>An!==et))},onUpdateContextCaption:(et,Bt)=>{$n(!0),ln(Ln=>Ln.map((An,wn)=>wn!==et?An:typeof An=="string"?{path:An,caption:Bt,timestamp:new Date().toISOString()}:{...An,caption:Bt}))},onCopyId:it,onToggleInProgress:Ot,onToggleReview:Dt,onToggleComplete:Et,onToggleCancel:ht,onArchiveTask:We,onUnarchive:et=>{if(zn?.isDeleted){const Bt=ma.get(et);Bt&&Ze(Bt.id);return}Fe(et)},currentTask:zn}),t==="settings"&&n.jsx(r.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:n.jsx(kr,{size:20,className:p.spinner})}),children:n.jsx(oD,{settingsModel:Ka,onSectionChange:I})})]}),X&&Yi.createPortal(n.jsx("div",{className:Tn.overlay,children:n.jsxs("div",{className:Tn.browser,children:[n.jsxs("div",{className:Tn.header,children:[n.jsxs("div",{className:Tn.pathInfo,children:[n.jsx(Po,{size:14}),n.jsx("span",{children:O||"Project Root"})]}),n.jsxs("div",{className:Tn.actions,children:[O&&n.jsx("button",{className:p.helpLink,onClick:()=>{const et=O.split("/").filter(Boolean);et.pop(),_(et.length?et.join("/")+"/":"")},children:"Back"}),n.jsx("button",{className:p.helpLink,onClick:()=>me(!1),children:"Close"})]})]}),n.jsxs("div",{className:Tn.list,children:[de&&typeof de=="object"&&n.jsxs("div",{className:`${Tn.item} ${Tn.itemCurrent}`,onClick:()=>Y(O),children:[n.jsx(ao,{size:14})," Select Current: ./",O||"(root)"]}),se.map(et=>n.jsxs("div",{className:Tn.item,onClick:()=>_(O+et+"/"),children:[n.jsx(Po,{size:14})," ",et,"/"]},et)),ae.map(et=>n.jsxs("div",{className:`${Tn.item} ${Tn.itemFile}`,onClick:()=>Y(O+et),children:[n.jsx(Dp,{size:14})," ",et]},et)),se.length===0&&ae.length===0&&n.jsx("div",{className:`${Tn.item} ${Tn.empty}`,children:"No items found"})]})]})}),document.body),ya&&n.jsx("div",{className:`${Tt.overlay} ${Tt.unsavedOverlay}`,children:n.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${Tt.modal} ${Tt.unsavedModal}`,"data-theme":l,children:[n.jsx("div",{className:`tf-modal-header ${Tt.unsavedHeader}`,children:n.jsxs("div",{className:`tf-modal-title ${Tt.unsavedTitle}`,children:[n.jsx(yd,{size:20}),"Unsaved Changes"]})}),n.jsx("div",{className:`${Tt.form} ${Tt.unsavedContent}`,children:n.jsx("p",{className:Tt.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),n.jsxs("div",{className:`${Tt.formActions} ${Tt.unsavedActions}`,children:[n.jsx("button",{className:p.cancelBtn,onClick:()=>Sr(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),n.jsx("button",{className:p.destructiveBtn,onClick:Kr,title:"Discard unsaved changes and leave",children:"Discard"}),n.jsxs("button",{className:p.submitBtn,onClick:Dr,disabled:Ct,title:"Save changes and leave",children:[Ct?n.jsx(kr,{size:16,className:p.spinner}):n.jsx(ug,{size:16}),"Save"]})]})]})}),Va&&n.jsx("div",{className:`${Tt.overlay} ${Tt.unsavedOverlay}`,children:n.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${Tt.modal} ${Tt.unsavedModal}`,"data-theme":l,children:[n.jsx("div",{className:`tf-modal-header ${Tt.unsavedHeader}`,children:n.jsxs("div",{className:`tf-modal-title ${Tt.unsavedTitle}`,children:[n.jsx(yd,{size:20}),"Date Warning"]})}),n.jsxs("div",{className:`${Tt.form} ${Tt.unsavedContent}`,children:[n.jsx("p",{className:Tt.unsavedText,children:"Due date is before scheduled date."}),n.jsxs("p",{style:{margin:0,fontSize:"12px",color:"var(--text-muted)"},children:["Due: ",Va.dueDate," · Scheduled: ",Va.scheduledDate]})]}),n.jsxs("div",{className:`${Tt.formActions} ${Tt.unsavedActions}`,children:[n.jsx("button",{className:p.cancelBtn,onClick:Un,children:"Go Back"}),n.jsx("button",{className:p.submitBtn,onClick:ka,children:"Save Anyway"})]})]})})]})}const cD="_accountMenuWrap_1mocf_1",lD="_avatarBtn_1mocf_5",dD="_avatarBadge_1mocf_9",uD="_avatarImage_1mocf_24",mD="_avatarIcon_1mocf_30",pD="_accountMenu_1mocf_1",fD="_accountMenuItem_1mocf_48",hD="_accountMenuItemActive_1mocf_68",gD="_accountMenuSection_1mocf_73",yD="_accountMenuSectionLabel_1mocf_79",kD="_accountMenuMeta_1mocf_88",vD="_accountMenuHint_1mocf_93",SD="_accountIdentityEmail_1mocf_99",wD="_accountIdentityBlock_1mocf_104",bD="_accountIdentityMetaLine_1mocf_109",xD="_accountIdentityMetaAction_1mocf_116",_D="_accountIdentityMetaValue_1mocf_125",CD="_accountIdentityMetaLabel_1mocf_130",AD="_accountMenuError_1mocf_159",ID="_accountHubCard_1mocf_165",TD="_profileAvatarEditor_1mocf_172",RD="_profileEditLayout_1mocf_178",jD="_profileFieldStack_1mocf_185",ND="_profileFieldLabel_1mocf_191",mt={accountMenuWrap:cD,avatarBtn:lD,avatarBadge:dD,avatarImage:uD,avatarIcon:mD,accountMenu:pD,accountMenuItem:fD,accountMenuItemActive:hD,accountMenuSection:gD,accountMenuSectionLabel:yD,accountMenuMeta:kD,accountMenuHint:vD,accountIdentityEmail:SD,accountIdentityBlock:wD,accountIdentityMetaLine:bD,accountIdentityMetaAction:xD,accountIdentityMetaValue:_D,accountIdentityMetaLabel:CD,accountMenuError:AD,accountHubCard:ID,profileAvatarEditor:TD,profileEditLayout:RD,profileFieldStack:jD,profileFieldLabel:ND},PD="_authBlockedBanner_1virb_1",MD="_loginView_1virb_10",ED="_loginCard_1virb_20",DD="_loginCloseBtn_1virb_34",LD="_loginLogo_1virb_56",BD="_authBrandRow_1virb_62",WD="_setupHeaderRow_1virb_68",FD="_runtimeIconBadge_1virb_75",OD="_loginTitle_1virb_94",$D="_loginTitleAccent_1virb_105",UD="_loginSubtitle_1virb_109",zD="_loginError_1virb_115",HD="_loginField_1virb_121",GD="_loginFieldLabel_1virb_126",VD="_loginInput_1virb_133",qD="_loginPrimaryBtn_1virb_149",KD="_authPrimaryActions_1virb_154",ZD="_registerConsent_1virb_159",YD="_registerConsentLink_1virb_167",JD="_authModeSwitch_1virb_177",QD="_authModeSwitchLink_1virb_184",XD="_authModeLinks_1virb_199",eL="_authSecondaryActions_1virb_207",tL="_authModeLink_1virb_199",nL="_optionGrid_1virb_236",aL="_optionGroup_1virb_242",rL="_optionRow_1virb_247",sL="_inlineHint_1virb_254",oL="_actionRowEnd_1virb_260",iL="_oauthProviders_1virb_267",cL="_oauthDivider_1virb_274",lL="_oauthButtons_1virb_290",dL="_oauthButton_1virb_290",ge={authBlockedBanner:PD,loginView:MD,loginCard:ED,loginCloseBtn:DD,loginLogo:LD,authBrandRow:BD,setupHeaderRow:WD,runtimeIconBadge:FD,loginTitle:OD,loginTitleAccent:$D,loginSubtitle:UD,loginError:zD,loginField:HD,loginFieldLabel:GD,loginInput:VD,loginPrimaryBtn:qD,authPrimaryActions:KD,registerConsent:ZD,registerConsentLink:YD,authModeSwitch:JD,authModeSwitchLink:QD,authModeLinks:XD,authSecondaryActions:eL,authModeLink:tL,optionGrid:nL,optionGroup:aL,optionRow:rL,inlineHint:sL,actionRowEnd:oL,oauthProviders:iL,oauthDivider:cL,oauthButtons:lL,oauthButton:dL};function uL(e={x:0,y:0}){const[t,a]=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 x=y.current.getBoundingClientRect();m(x.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,x=g.clientY-l.y;x<-d&&(x=-d),a({x:v,y:x})}},[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:a}}function Ws({isOpen:e,onClose:t,title:a,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:x,modalRef:I}=uL();if(r.useEffect(()=>{const D=U=>{U.key==="Escape"&&e&&t()};return window.addEventListener("keydown",D),()=>window.removeEventListener("keydown",D)},[e,t]),r.useEffect(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[e]),!e)return null;const C={sm:Tt.modalSizeSm,md:Tt.modalSizeMd,mdWide:Tt.modalSizeMdWide,lg:Tt.modalSizeLg,xl:Tt.modalSizeXl,full:Tt.modalSizeFull};return Yi.createPortal(n.jsx("div",{className:`${Tt.overlay} ${d||""} ${Tt.overlayHighZ}`,ref:h,onClick:D=>{S&&D.target===h.current&&t()},children:n.jsxs("div",{ref:I,className:`tf-surface-modal tf-modal-shell ${Tt.modal} tf-scrollbar-scope ${C[l]} ${y?Tt.draggableModal:""} ${k?Tt.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:[n.jsxs("div",{className:`tf-modal-header ${y?Tt.draggableHeader:""}`,onMouseDown:y?x:void 0,style:{cursor:y?v?"grabbing":"grab":"default"},children:[n.jsx("div",{className:"tf-modal-title",children:a}),n.jsxs("div",{className:Tt.headerActions,children:[m,n.jsx("button",{className:"tf-control-icon",onClick:t,title:"Close",children:n.jsx(ac,{size:20})})]})]}),n.jsx("div",{className:Tt.modalContent,children:s}),o&&n.jsx("div",{className:`${Tt.formActions} ${Tt.modalFooter}`,children:o})]})}),document.body)}const mL="_modalBody_1t87j_1",pL="_mutedText_1t87j_5",fL="_sectionText_1t87j_10",hL="_sectionTextSpaced_1t87j_15",gL="_sectionTextTop_1t87j_20",yL="_errorText_1t87j_25",kL="_inlineFieldLabel_1t87j_29",vL="_wrapRow_1t87j_35",SL="_actionRowEnd_1t87j_42",wL="_modalActionsEnd_1t87j_50",bL="_helpIntro_1t87j_56",xL="_supportEmailRow_1t87j_61",_L="_supportEmailAddress_1t87j_68",CL="_supportEmailBtn_1t87j_80",AL="_supportPanel_1t87j_86",IL="_supportPanelHeader_1t87j_92",TL="_supportRouteList_1t87j_104",RL="_supportRouteBtn_1t87j_110",jL="_memberRow_1t87j_114",NL="_memberTitle_1t87j_120",PL="_memberActions_1t87j_124",ML="_selectRole_1t87j_131",EL="_selectPermission_1t87j_135",DL="_inviteRow_1t87j_139",LL="_listHeading_1t87j_143",BL="_auditList_1t87j_148",WL="_auditPager_1t87j_154",FL="_labelFixed_1t87j_161",lt={modalBody:mL,mutedText:pL,sectionText:fL,sectionTextSpaced:hL,sectionTextTop:gL,errorText:yL,inlineFieldLabel:kL,wrapRow:vL,actionRowEnd:SL,modalActionsEnd:wL,helpIntro:bL,supportEmailRow:xL,supportEmailAddress:_L,supportEmailBtn:CL,supportPanel:AL,supportPanelHeader:IL,supportRouteList:TL,supportRouteBtn:RL,memberRow:jL,memberTitle:NL,memberActions:PL,selectRole:ML,selectPermission:EL,inviteRow:DL,listHeading:LL,auditList:BL,auditPager:WL,labelFixed:FL};function OL({isOpen:e,theme:t,onClose:a,onConfirm:s}){return n.jsx(Ws,{isOpen:e,onClose:a,title:"New Workspace",size:"sm",theme:t,draggable:!0,footer:n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button",className:p.cancelBtn,onClick:a,children:"Cancel"}),n.jsx("button",{type:"button",className:p.submitBtn,onClick:s,children:"Start Setup"})]}),children:n.jsx("div",{className:`${Tt.form} ${lt.modalBody}`,children:n.jsx("p",{className:lt.sectionText,children:"Create and configure a new workspace."})})})}const $L=new Set(["active","trialing","grace"]),Bh={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 nc(e){return String(e||"").trim()}function Iy(e){return nc(e).toLowerCase()}function UL(e){return nc(e).toLowerCase()}function zL(e){return!!(nc(e?.stripeCustomerId)||nc(e?.stripeSubscriptionId))}function HL(e){const t=nc(e?.trialEnd||e?.effectiveUntil);if(t){const a=new Date(t);if(!Number.isNaN(a.getTime()))return a.getTime()<=Date.now()?"Your trial end date has passed. Billing status is updating.":`Your trial is active through ${a.toLocaleString()}.`}return"Your trial is active. Continue to Taskforce or manage billing anytime."}function GL(e){return $L.has(Iy(e))}function Kp(e,t){const a=Iy(e?.entitlementState),s=UL(e?.gate||t),o=nc(e?.billingConflictCode).toUpperCase(),l=nc(e?.message),i=GL(a),d=zL(e);return o==="CHECKOUT_SESSION_EXPIRED"?{entitlementState:a||null,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:Bh.CHECKOUT_SESSION_EXPIRED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:d,markCurrentPlan:!1}:o==="CHECKOUT_SESSION_SUPERSEDED"?{entitlementState:a||null,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:Bh.CHECKOUT_SESSION_SUPERSEDED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:d,markCurrentPlan:!1}:a==="trialing"?{entitlementState:a,gate:s||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:HL(e),primaryAction:d?"manage_billing":"none",primaryLabel:d?"Manage Billing":null,showManageBilling:d,markCurrentPlan:!0}:i?{entitlementState:a||null,gate:s||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:l||null,primaryAction:"none",primaryLabel:null,showManageBilling:d,markCurrentPlan:!0}:a==="suspended"?{entitlementState:a,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}:a==="canceled"?{entitlementState:a,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}:a==="pending_plan_selection"||e?.planSelectionRequired===!0||s==="plan_selection_required"?{entitlementState:a||"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}:a==="checkout_pending"||s==="checkout_pending"?{entitlementState:a||"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:a||null,gate:s,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:Hu.misconfigured,primaryAction:"none",primaryLabel:null,showManageBilling:!1,markCurrentPlan:!1}:s==="missing_entitlement"?{entitlementState:a||null,gate:s,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:Hu.missingEntitlement,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:{entitlementState:a||null,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:l?"error":"info",message:l||null,primaryAction:"none",primaryLabel:null,showManageBilling:d,markCurrentPlan:!1}}const Zp=12,VL=new Set(["12345678","123456789","1234567890","admin123","changeme","letmein","letmein123","password","password1","password12","password123","password1234","qwerty","qwerty123","welcome","welcome123"]),qL=e=>String(e||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"");function KL(e){const t=new Set,a=String(e?.email||"").trim().toLowerCase(),s=String(e?.displayName||"").trim().toLowerCase();if(a.includes("@")){const o=a.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 ${Zp} characters.`,"Avoid common passwords or obvious patterns.","Do not include your email or display name."]}function Ry(e,t){const a=String(e||"");if(!a)return{ok:!1,code:"PASSWORD_REQUIRED",message:"Password is required."};if(a.length<Zp)return{ok:!1,code:"PASSWORD_TOO_SHORT",message:`Password must be at least ${Zp} characters.`};const s=qL(a);return VL.has(s)?{ok:!1,code:"PASSWORD_TOO_COMMON",message:"Choose a less common password."}:KL(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 ZL({isOpen:e,theme:t,runtimeMode:a,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:x,canManageWorkspaceSync:I,workspaceCloudSyncEnabled:C,syncStatusLabel:D,workspaceSyncError:U,syncControlBusy:L,cloudAuthEnabled:X,availableAuthProviders:me,onFetchLoginMethods:se,onUnlinkLoginMethod:ae,onAddPassword:O,onLinkProvider:_,onClose:de,onOpenWorkspaceAudit:ke,onBillingIntervalChange:Y,onRefreshBilling:P,onUpdateInterval:z,onManageBilling:ie,onStartCheckout:fe,onToggleWorkspaceSync:q,onOpenHelp:Me}){const xe=Kp(g),oe=Ty(),le=xe.message,Ie=xe.primaryLabel||"Start Checkout",Ee=String(g?.planName||g?.planId||"n/a").trim()||"n/a",je=()=>{if(xe.primaryAction==="manage_billing"){ie();return}fe()},[Pe,K]=r.useState([]),[A,b]=r.useState(!1),[R,F]=r.useState(null),[Q,M]=r.useState(null),[$,be]=r.useState(null),[H,ce]=r.useState(!1),[he,G]=r.useState(""),[re,ue]=r.useState(!1),[Re,Te]=r.useState(null),[De,Oe]=r.useState(!1);r.useEffect(()=>{!e||!o||!X||(b(!0),F(null),se().then(Qe=>{b(!1),Qe.success&&Qe.methods?K(Qe.methods):F(Qe.error||"Failed to load login methods.")}))},[e,o,X,se]);const vt=async Qe=>{M(Qe),be(null);const Rt=await ae(Qe);M(null),Rt.success?K(ee=>ee.filter(ze=>ze.provider!==Qe)):be(Rt.error||"Unlink failed.")},st=async()=>{const Qe=Ry(he);if(!Qe.ok){Te(Qe.message||"Password does not meet the password policy.");return}ue(!0),Te(null);const Rt=await O(he);if(ue(!1),!Rt.success)Te(Rt.error||"Failed to add password.");else{Oe(!0),G(""),ce(!1);const ee=await se();ee.success&&ee.methods&&K(ee.methods)}},kt={password:"Email & Password",google:"Google",github:"GitHub",apple:"Apple"},Ye=new Set(Pe.map(Qe=>Qe.provider)),_t=Ye.has("password"),dt=me.filter(Qe=>Qe!=="password"&&!Ye.has(Qe));return n.jsx(Ws,{isOpen:e,onClose:de,title:"Account Hub",size:"md",theme:t,draggable:!0,children:n.jsxs("div",{className:`${Tt.form} ${lt.modalBody}`,children:[n.jsx("p",{className:lt.mutedText,children:"Manage sign in, profile, and workspace controls from one place."}),n.jsxs("div",{className:mt.accountHubCard,children:[n.jsx("strong",{children:"Authentication"}),n.jsx("p",{className:lt.sectionText,children:a==="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."}),n.jsx("p",{className:lt.sectionTextSpaced,children:o?l?n.jsxs(n.Fragment,{children:["Signed in as ",n.jsx("span",{className:mt.accountIdentityEmail,children:i})]}):"Signed in":"Signed in as: not signed in"}),a==="cloud"&&s&&!o&&n.jsx("p",{className:lt.sectionTextTop,children:"Use the `/login` screen to sign in."})]}),o&&X&&n.jsxs("div",{className:mt.accountHubCard,children:[n.jsx("strong",{children:"Login Methods"}),A&&n.jsx("p",{className:lt.sectionText,children:"Loading..."}),R&&n.jsx("p",{className:`${ge.loginError} ${lt.errorText}`,children:R}),$&&n.jsx("p",{className:`${ge.loginError} ${lt.errorText}`,children:$}),De&&n.jsx("p",{className:lt.sectionText,style:{color:"var(--color-success, #4ade80)"},children:"Password login added."}),!A&&Pe.length>0&&n.jsx("div",{style:{marginTop:8,display:"grid",gap:6},children:Pe.map(Qe=>n.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,flexWrap:"wrap"},children:[n.jsxs("span",{className:lt.sectionText,children:[n.jsx("strong",{children:kt[Qe.provider]||Qe.provider}),Qe.providerEmail?n.jsxs(n.Fragment,{children:[" · ",n.jsx("span",{className:mt.accountMenuMeta,children:Qe.providerEmail})]}):null]}),Pe.length>1&&n.jsx("button",{className:p.cancelBtn,style:{fontSize:11,padding:"2px 8px"},disabled:Q===Qe.provider,onClick:()=>vt(Qe.provider),children:Q===Qe.provider?"Removing…":"Remove"})]},Qe.provider))}),!A&&!_t&&!H&&n.jsx("div",{className:lt.actionRowEnd,children:n.jsx("button",{className:p.cancelBtn,onClick:()=>{ce(!0),Oe(!1),Te(null)},children:"Add Password Login"})}),H&&n.jsxs("div",{style:{marginTop:10,display:"grid",gap:6},children:[n.jsxs("label",{className:mt.accountMenuMeta,style:{display:"block"},children:["New password",n.jsx("input",{type:"password",className:p.input,placeholder:"Use 12+ characters",value:he,onChange:Qe=>G(Qe.target.value),disabled:re,style:{marginTop:4,display:"block",width:"100%"},autoComplete:"new-password"})]}),n.jsx("p",{className:mt.accountMenuMeta,style:{margin:0},children:oe.join(" ")}),Re&&n.jsx("p",{className:`${ge.loginError} ${lt.errorText}`,children:Re}),n.jsxs("div",{className:lt.actionRowEnd,children:[n.jsx("button",{className:p.cancelBtn,onClick:()=>{ce(!1),G(""),Te(null)},disabled:re,children:"Cancel"}),n.jsx("button",{className:p.submitBtn,onClick:st,disabled:re||!he,children:re?"Saving…":"Save Password"})]})]}),!A&&dt.length>0&&n.jsxs("div",{style:{marginTop:10},children:[n.jsx("p",{className:mt.accountMenuMeta,style:{marginBottom:6},children:"Link another account:"}),n.jsx("div",{className:ge.oauthButtons,children:dt.map(Qe=>n.jsx("button",{className:ge.oauthButton,onClick:()=>_(Qe),children:kt[Qe]||Qe},Qe))})]})]}),n.jsxs("div",{className:mt.accountHubCard,children:[n.jsx("strong",{children:"Profile & Account"}),n.jsx("p",{className:lt.sectionText,children:"Profile editing and account preferences will live here."})]}),n.jsxs("div",{className:mt.accountHubCard,children:[n.jsx("strong",{children:"Billing"}),o?a!=="cloud"?n.jsx("p",{className:lt.sectionText,children:"Billing remains cloud-backed in local runtime and uses your connected cloud account."}):n.jsxs(n.Fragment,{children:[d&&n.jsx("p",{className:lt.sectionTextSpaced,children:"Loading billing status..."}),m&&n.jsx("p",{className:`${ge.loginError} ${lt.errorText}`,children:m}),y&&n.jsx("p",{className:`${ge.loginError} ${lt.errorText}`,children:y}),k&&n.jsx("p",{className:lt.errorText,children:k}),le&&n.jsx("p",{className:lt.sectionText,children:le}),n.jsxs("p",{className:lt.sectionTextSpaced,children:["Plan: ",n.jsx("code",{children:Ee})," · ","Entitlement: ",n.jsx("code",{children:String(g?.entitlementState||"n/a")})]}),n.jsxs("p",{className:lt.sectionText,children:["Stripe status: ",n.jsx("code",{children:String(g?.stripeStatus||"n/a")}),g?.effectiveUntil?` · Effective until ${new Date(g.effectiveUntil).toLocaleString()}`:""]}),n.jsx("div",{className:lt.wrapRow,children:n.jsxs("label",{className:`${mt.accountMenuMeta} ${lt.inlineFieldLabel}`,children:["Interval",n.jsxs("select",{className:p.input,value:h,onChange:Qe=>Y(Qe.target.value==="year"?"year":"month"),disabled:S,children:[n.jsx("option",{value:"month",children:"Monthly"}),n.jsx("option",{value:"year",children:"Yearly"})]})]})}),n.jsxs("div",{className:lt.actionRowEnd,children:[n.jsx("button",{className:p.cancelBtn,onClick:P,disabled:S||d,children:"Refresh Billing"}),n.jsx("button",{className:p.cancelBtn,onClick:z,disabled:S||!g?.stripeSubscriptionId,children:"Update Interval"}),n.jsx("button",{className:p.cancelBtn,onClick:ie,disabled:S||!g?.stripeCustomerId,children:"Manage Billing"}),n.jsx("button",{className:p.submitBtn,onClick:je,disabled:S||xe.primaryAction==="manage_billing"&&!g?.stripeCustomerId,children:S?"Working...":Ie})]})]}):n.jsx("p",{className:lt.sectionText,children:"Sign in to manage subscription billing."})]}),n.jsxs("div",{className:mt.accountHubCard,children:[n.jsx("strong",{children:"Workspace Audit Log"}),n.jsx("p",{className:lt.sectionText,children:"Audit entries are workspace-scoped for the active workspace, not global account history."}),n.jsxs("p",{className:lt.sectionText,children:["Active workspace: ",n.jsx("code",{children:v})]}),n.jsx("div",{className:lt.actionRowEnd,children:n.jsx("button",{className:p.cancelBtn,onClick:ke,disabled:!x,children:"Open Workspace Audit"})})]}),n.jsxs("div",{className:mt.accountHubCard,children:[n.jsx("strong",{children:"Workspace Cloud Sync"}),n.jsx("p",{className:lt.sectionText,children:I?C?`Enabled · ${D}`:"Disabled":"Sign in to cloud account to enable workspace sync."}),U&&n.jsx("p",{className:`${ge.loginError} ${lt.errorText}`,children:U}),n.jsx("div",{className:lt.actionRowEnd,children:n.jsx("button",{className:p.cancelBtn,disabled:!I||L,onClick:()=>q(!C),children:C?"Disable Sync":"Enable Sync"})})]}),n.jsxs("div",{className:`${Tt.formActions} ${lt.modalActionsEnd}`,children:[n.jsx("button",{className:p.cancelBtn,onClick:Me,children:"Help & Support"}),n.jsx("button",{className:p.submitBtn,onClick:de,children:"Close"})]})]})})}var Wh=(e,t,a,s,o,l)=>{if(l===0)e.rect(t,a,s,o);else{let i=s-l,d=o-l;e.translate(t,a),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,-a)}},YL=(e,t,a,s,o,l)=>{e.fillStyle=l;let i=s/3,d=o/3;e.fillRect(t,a,1,o),e.fillRect(i+t,a,1,o),e.fillRect(i*2+t,a,1,o),e.fillRect(i*3+t,a,1,o),e.fillRect(i*4+t,a,1,o),e.fillRect(t,a,s,1),e.fillRect(t,d+a,s,1),e.fillRect(t,d*2+a,s,1),e.fillRect(t,d*3+a,s,1),e.fillRect(t,d*4+a,s,1)},JL=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((a,s)=>{let o=new Image;o.addEventListener("load",()=>a(o)),o.addEventListener("error",s),!JL(e)&&t&&(o.crossOrigin=t),o.src=e}),QL=e=>new Promise((t,a)=>{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){a(l)}}),s.readAsDataURL(e)}),XL=typeof File<"u",Fh=e=>Math.PI/180*e,Oh={x:.5,y:.5},eB=class{constructor(e){this.imageState=Oh,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:a,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:a,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},a=1/this.config.scale*this.getXScale(),s=1/this.config.scale*this.getYScale(),o={x:t.x-a/2,y:t.y-s/2,width:a,height:s},l=0,i=1-o.width,d=0,m=1-o.height;return(this.config.disableBoundaryChecks||a>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 a,s,o=this.getDimensions();return o.height/o.width>t/e?(a=o.height,s=a/t*e):(s=o.width,a=s/e*t),{height:a,width:s}}async loadImage(e){let t;if(XL&&e instanceof File)t=await QL(e);else if(typeof e=="string")t=await jy(e,this.config.crossOrigin);else throw Error("Invalid image source");let a={...this.getInitialSize(t.width,t.height),resource:t,x:.5,y:.5};return this.imageState=a,a}clearImage(){this.imageState=Oh}calculatePosition(e=this.imageState,t){let[a,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+=a):(d+=a,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,a=this.getDimensions(),[s,o]=this.getBorders(a.border),l=a.canvas.height,i=a.canvas.width;t=Math.max(t,0),t=Math.min(t,i/2-s,l/2-o),e.beginPath(),Wh(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(),Wh(e,s+.5,o+.5,i-s*2-1,l-o*2-1,t),e.stroke()),this.config.showGrid&&YL(e,s,o,i-s*2,l-o*2,this.config.gridColor),e.restore()}paintImage(e,t,a,s=this.pixelRatio){if(!t.resource)return;let o=this.calculatePosition(t,a);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 a=document.createElement("canvas");this.isVertical()?(a.width=Math.round(e.height),a.height=Math.round(e.width)):(a.width=Math.round(e.width),a.height=Math.round(e.height));let s=a.getContext("2d");if(!s)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return s.translate(a.width/2,a.height/2),s.rotate(this.config.rotate*Math.PI/180),s.translate(-(a.width/2),-(a.height/2)),this.isVertical()&&s.translate((a.width-a.height)/2,(a.height-a.width)/2),this.config.backgroundColor&&(s.fillStyle=this.config.backgroundColor,s.fillRect(0,0,a.width,a.height)),s.drawImage(t.resource,-e.x,-e.y),a}getImageScaledToCanvas(){let e=this.getDimensions(),t=this.imageState,a=document.createElement("canvas");if(this.isVertical()?(a.width=e.height,a.height=e.width):(a.width=e.width,a.height=e.height),!t.resource)return a;let s=a.getContext("2d");if(!s)return a;let o=this.calculatePosition(t,0);return s.save(),s.translate(a.width/2,a.height/2),s.rotate(this.config.rotate*Math.PI/180),s.translate(-(a.width/2),-(a.height/2)),this.isVertical()&&s.translate((a.width-a.height)/2,(a.height-a.width)/2),this.config.backgroundColor&&(s.fillStyle=this.config.backgroundColor,s.fillRect(0,0,a.width,a.height)),s.drawImage(t.resource,o.x,o.y,o.width,o.height),s.restore(),a}calculateDragPosition(e,t,a,s){let o=a-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(Fh(k)),h=Math.sin(Fh(k)),g=m+o*S+l*h,v=y+-o*h+l*S,x=1/this.config.scale*this.getXScale(),I=1/this.config.scale*this.getYScale();return{x:g/i+x/2,y:v/d+I/2}}},$h=()=>{},tB=()=>{let e=!1;try{let t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",$h,t),window.removeEventListener("test",$h,t)}catch{e=!1}return e},Ny=r.forwardRef((e,t)=>{let{scale:a=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:x,backgroundColor:I,crossOrigin:C,onLoadStart:D,onLoadFailure:U,onLoadSuccess:L,onImageReady:X,onImageChange:me,onMouseUp:se,onMouseMove:ae,onPositionChange:O,borderColor:_,style:de}=e,ke=r.useRef(null),Y=r.useRef(new eB({width:i,height:d,border:o,borderRadius:l,scale:a,rotate:s,color:m,backgroundColor:I,borderColor:_,showGrid:y,gridColor:k,disableBoundaryChecks:S,disableHiDPIScaling:h,disableCanvasRotation:g,crossOrigin:C})),P=r.useRef(!1),z=r.useRef(void 0),ie=r.useRef(void 0),[fe,q]=r.useState(!1),[Me,xe]=r.useState(!1),[oe,le]=r.useState(Y.current.getImageState()),Ie=r.useRef(se);Ie.current=se;let Ee=r.useRef(ae);Ee.current=ae;let je=r.useRef(O);je.current=O,r.useEffect(()=>{Y.current.updateConfig({width:i,height:d,border:o,borderRadius:l,scale:a,rotate:s,color:m,backgroundColor:I,borderColor:_,showGrid:y,gridColor:k,disableBoundaryChecks:S,disableHiDPIScaling:h,disableCanvasRotation:g,crossOrigin:C})},[i,d,o,l,a,s,m,I,_,y,k,S,h,g,C]);let Pe=r.useCallback(()=>{if(!ke.current)throw Error("No canvas found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return ke.current},[]),K=r.useCallback(()=>{let ce=Pe().getContext("2d");if(!ce)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return ce},[Pe]),A=r.useCallback(async ce=>{xe(!0),D?.();try{let he=await Y.current.loadImage(ce);P.current=!1,q(!1),le(he),X?.(),L?.(he)}catch{U?.()}finally{xe(!1)}},[D,X,L,U]),b=r.useCallback(()=>{let ce=Pe();K().clearRect(0,0,ce.width,ce.height),Y.current.clearImage(),le(Y.current.getImageState())},[Pe,K]),R=r.useCallback(()=>{let ce=K(),he=Pe();ce.clearRect(0,0,he.width,he.height),Y.current.paint(ce),Y.current.paintImage(ce,oe,o)},[K,Pe,oe,o,i,d,l,a,s,m,I,_,y,k,S,h,g,C]),F=r.useCallback(ce=>{ce.preventDefault(),P.current=!0,z.current=void 0,ie.current=void 0,q(!0)},[]),Q=r.useCallback(()=>{P.current=!0,z.current=void 0,ie.current=void 0,q(!0)},[]);r.useImperativeHandle(t,()=>({getImage:()=>Y.current.getImage(),getImageScaledToCanvas:()=>Y.current.getImageScaledToCanvas(),getCroppingRect:()=>Y.current.getCroppingRect()}),[]),r.useEffect(()=>{let ce=K();v&&A(v),Y.current.paint(ce);let he=ue=>{if(!P.current)return;ue.cancelable&&ue.preventDefault();let Re="targetTouches"in ue?ue.targetTouches[0].pageX:ue.clientX,Te="targetTouches"in ue?ue.targetTouches[0].pageY:ue.clientY,De=z.current,Oe=ie.current;if(z.current=Re,ie.current=Te,De!==void 0&&Oe!==void 0){let vt=Y.current.getImageState();if(vt.width&&vt.height){let st=Y.current.calculateDragPosition(Re,Te,De,Oe);je.current?.(st);let kt={...vt,...st};Y.current.setImageState(kt),le(kt)}}Ee.current?.(ue)},G=()=>{P.current&&(P.current=!1,q(!1),Ie.current?.())},re=tB()?{passive:!1}:!1;return document.addEventListener("mousemove",he,re),document.addEventListener("mouseup",G,re),document.addEventListener("touchmove",he,re),document.addEventListener("touchend",G,re),()=>{document.removeEventListener("mousemove",he,!1),document.removeEventListener("mouseup",G,!1),document.removeEventListener("touchmove",he,!1),document.removeEventListener("touchend",G,!1)}},[]),r.useEffect(()=>{v?A(v):!v&&oe.x!==.5&&oe.y!==.5&&b()},[v,i,d,I]),r.useEffect(()=>{R()},[R]),r.useEffect(()=>{if(!Me)return;let ce=ke.current;if(!ce)return;let he=ce.getContext("2d");if(!he)return;let G,re=performance.now(),ue=Re=>{let Te=(Re-re)/1e3,De=.03+Math.sin(Te*2.5)*.02+.02;he.save(),he.clearRect(0,0,ce.width,ce.height),he.fillStyle=`rgba(255,255,255,${De})`,he.fillRect(0,0,ce.width,ce.height),he.restore(),G=requestAnimationFrame(ue)};return G=requestAnimationFrame(ue),()=>cancelAnimationFrame(G)},[Me]);let M=r.useRef({image:v,width:i,height:d,position:x,scale:a,rotate:s,imageX:oe.x,imageY:oe.y});r.useEffect(()=>{let ce=M.current;(ce.image!==v||ce.width!==i||ce.height!==d||ce.position!==x||ce.scale!==a||ce.rotate!==s||ce.imageX!==oe.x||ce.imageY!==oe.y)&&(me?.(),M.current={image:v,width:i,height:d,position:x,scale:a,rotate:s,imageX:oe.x,imageY:oe.y})},[v,i,d,x,a,s,oe.x,oe.y,me]);let $=Y.current.getDimensions(),be=Y.current.getPixelRatio(),H={width:$.canvas.width,height:$.canvas.height,cursor:fe?"grabbing":"grab",touchAction:"none",maxWidth:"none",maxHeight:"none"};return Ue.createElement("canvas",{width:$.canvas.width*be,height:$.canvas.height*be,onMouseDown:F,onTouchStart:Q,style:{...H,...de},ref:ke})});Ny.displayName="AvatarEditor";const nB="_avatarManagerBody_1bfwv_1",aB="_editorPanel_1bfwv_7",rB="_editorFrame_1bfwv_13",sB="_gifPreviewImage_1bfwv_21",oB="_emptyPreview_1bfwv_28",iB="_controlPanel_1bfwv_41",cB="_zoomField_1bfwv_47",lB="_zoomSlider_1bfwv_52",dB="_actionGrid_1bfwv_57",uB="_fileInput_1bfwv_63",mB="_messageStack_1bfwv_67",Ls={avatarManagerBody:nB,editorPanel:aB,editorFrame:rB,gifPreviewImage:sB,emptyPreview:oB,controlPanel:iB,zoomField:cB,zoomSlider:lB,actionGrid:dB,fileInput:uB,messageStack:mB},_p=512,pB=48,Gu=512;function Uh(e,t,a){return new Promise(s=>{e.toBlob(s,t,a)})}function fB(e,t){const a=String(e).trim()||"avatar",s=a.lastIndexOf(".");return s<=0?`${a}${t}`:`${a.slice(0,s)}${t}`}async function hB(e,t){const a=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(a,0,0,Gu,Gu);const i=await Uh(s,"image/webp",.9)||await Uh(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],fB(t,m),{type:d,lastModified:Date.now()})}function gB({isOpen:e,theme:t,title:a="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:x}){const I=r.useRef(null),C=r.useRef(null),[D,U]=r.useState(null),[L,X]=r.useState(""),[me,se]=r.useState(1.1),[ae,O]=r.useState(null),[_,de]=r.useState(null);r.useEffect(()=>{e||(U(null),X(""),se(1.1),O(null),de(null))},[e]),r.useEffect(()=>{if(!D){X("");return}const oe=URL.createObjectURL(D);return X(oe),()=>URL.revokeObjectURL(oe)},[D]);const ke=L||o||s,Y=D?.name||"avatar",P=String(l||"").trim().charAt(0).toUpperCase(),z=ae||k,ie=_||S,fe=r.useCallback(oe=>{if(O(null),de(null),!!oe){if(!oe.type.startsWith("image/")){O("Profile photo must be an image file.");return}oe.type==="image/gif"&&de("Animated GIFs will upload without repositioning."),U(oe),se(1.1)}},[]),q=r.useCallback(async()=>{O(null);const oe=I.current;if(D?.type==="image/gif"){await g(D)&&h();return}if(!oe||!ke){O("Choose a profile photo first.");return}try{const le=await hB(oe,Y);await g(le,D)&&h()}catch(le){O(le instanceof Error?le.message:"Unable to prepare profile photo.")}},[ke,g,h,D,Y]),Me=D?.type==="image/gif"||!!ke,xe=r.useMemo(()=>n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button",className:p.secondaryButton,onClick:h,disabled:d,children:"Cancel"}),n.jsx("button",{type:"button",className:p.primaryUpdateBtn,onClick:()=>{q()},disabled:d||!Me,children:d?"Applying...":"Apply Photo"})]}),[d,Me,q,h]);return n.jsx(Ws,{isOpen:e,onClose:h,title:a,size:"md",theme:t,draggable:!0,footer:xe,children:n.jsxs("div",{className:Ls.avatarManagerBody,children:[n.jsxs("div",{className:Ls.editorPanel,children:[n.jsx("div",{className:`tf-surface-inset ${Ls.editorFrame}`,children:D?.type==="image/gif"&&L?n.jsx("img",{src:L,alt:"",className:Ls.gifPreviewImage}):ke?n.jsx(Ny,{ref:I,image:ke,width:_p,height:_p,border:pB,borderRadius:_p/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}):n.jsx("div",{className:Ls.emptyPreview,"aria-hidden":"true",children:P})}),n.jsxs("div",{className:Ls.controlPanel,children:[n.jsx("input",{ref:C,type:"file","aria-label":"Choose profile photo",accept:i,className:Ls.fileInput,onChange:oe=>fe(oe.target.files?.[0]||null),disabled:d}),n.jsxs("div",{className:Ls.actionGrid,children:[n.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>C.current?.click(),disabled:d,children:[n.jsx(Lk,{size:16}),"Choose"]}),m&&x&&n.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:x,disabled:d,children:[n.jsx(gd,{size:16}),"Discard"]}),y&&v&&n.jsxs("button",{type:"button",className:"tf-button-destructive tf-button-compact",onClick:v,disabled:d,children:[n.jsx(xm,{size:16}),"Remove"]})]}),n.jsxs("label",{className:`tf-field-stack ${Ls.zoomField}`,children:[n.jsx("span",{className:"tf-field-label",children:"Zoom"}),n.jsx("input",{type:"range",min:"1",max:"3",step:"0.01",value:me,onChange:oe=>se(Number(oe.target.value)),className:Ls.zoomSlider,disabled:d||!ke||D?.type==="image/gif"})]})]})]}),(z||ie)&&n.jsxs("div",{className:Ls.messageStack,children:[z&&n.jsx("p",{className:"tf-text-error",children:z}),ie&&!z&&n.jsx("p",{className:"tf-text-helper",children:ie})]})]})})}const yB="_editableAvatarButton_1ga39_1",kB="_editableAvatarImage_1ga39_47",vB="_editableAvatarFallback_1ga39_54",SB="_editableAvatarBadge_1ga39_65",Vu={editableAvatarButton:yB,editableAvatarImage:kB,editableAvatarFallback:vB,editableAvatarBadge:SB};function wB({label:e,imageUrl:t,fallback:a,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,x=i??o,I=typeof d=="number"?`${d}px`:d,C=typeof m=="number"?`${m}px`:m;return n.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":`${x}px`,...I?{"--editable-avatar-radius":I}:{},...C?{"--editable-avatar-badge-size":C}:{},...s?{"--editable-avatar-accent":s}:{}},children:[g?n.jsx("img",{src:g,alt:"",className:Vu.editableAvatarImage}):n.jsx("span",{className:Vu.editableAvatarFallback,children:a}),n.jsx("span",{className:Vu.editableAvatarBadge,"aria-hidden":"true",children:n.jsx(Bk,{size:y})})]})}function bB({isOpen:e,theme:t,onClose:a,onSave:s,displayName:o,email:l,avatarDisplayUrl:i,accountBadgeInitial:d,saveBusy:m,avatarBusy:y,saveError:k,saveNotice:S,onDisplayNameChange:h,onOpenAvatarManager:g}){return n.jsx(Ws,{isOpen:e,onClose:a,title:"Edit Profile",size:"sm",theme:t,draggable:!0,footer:n.jsxs(n.Fragment,{children:[n.jsx("button",{type:"button",className:p.secondaryButton,onClick:a,disabled:m||y,children:"Cancel"}),n.jsx("button",{type:"button",className:p.primaryUpdateBtn,onClick:s,disabled:m||y||!o.trim(),children:m?"Saving...":"Save Profile"})]}),children:n.jsxs("div",{className:`${Tt.form} ${lt.modalBody}`,children:[n.jsxs("div",{className:mt.profileEditLayout,children:[n.jsx("div",{className:mt.profileAvatarEditor,children:n.jsx(wB,{label:"Edit profile photo",imageUrl:i,fallback:d,disabled:m||y,onClick:g})}),n.jsxs("div",{className:mt.profileFieldStack,children:[n.jsxs("label",{className:mt.profileFieldLabel,children:[n.jsx("span",{children:"Display name"}),n.jsx("input",{className:p.input,type:"text",value:o,onChange:v=>h(v.target.value),placeholder:"Display name",disabled:m})]}),n.jsxs("label",{className:mt.profileFieldLabel,children:[n.jsx("span",{children:"Email"}),n.jsx("input",{className:p.input,type:"email",value:l,readOnly:!0,disabled:!0})]})]})]}),k&&n.jsx("p",{className:`${ge.loginError} ${lt.errorText}`,children:k}),S&&!k&&n.jsx("p",{className:lt.errorText,children:S})]})})}const Yp="support@taskforcehq.ai";function qu(e){return String(e||"").trim()}function xB(e={}){const t=qu(e.workspaceName),a=qu(e.workspaceId),s=qu(e.accountLabel),o=qu(e.runtimeMode),l=[t?`Workspace: ${t}`:"",a?`Workspace ID: ${a}`:"",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:${Yp}?${d.toString()}`}function _B({isOpen:e,theme:t,onClose:a,onOpenSettings:s,onOpenAccountHub:o,supportMailtoHref:l}){const[i,d]=r.useState("idle"),m=async()=>{try{await navigator.clipboard.writeText(Yp),d("copied"),window.setTimeout(()=>d("idle"),1600)}catch{d("failed"),window.setTimeout(()=>d("idle"),2200)}};return n.jsx(Ws,{isOpen:e,onClose:a,title:"Help & Support",size:"md",theme:t,draggable:!0,children:n.jsxs("div",{className:`${Tt.form} ${lt.modalBody}`,children:[n.jsxs("div",{className:lt.helpIntro,children:[n.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."}),n.jsxs("div",{className:lt.supportEmailRow,children:[n.jsx("code",{className:lt.supportEmailAddress,children:Yp}),n.jsxs("button",{className:`${p.submitBtn} ${lt.supportEmailBtn}`,onClick:()=>{m()},type:"button",children:[i==="copied"?n.jsx(ao,{size:16}):n.jsx(tf,{size:16}),i==="copied"?"Copied":i==="failed"?"Copy Failed":"Copy Email"]})]}),n.jsxs("a",{className:`${p.cancelBtn} ${lt.supportEmailBtn}`,href:l,children:[n.jsx(mg,{size:16}),"Open Email App"]})]}),n.jsxs("div",{className:`${lt.supportPanel} tf-surface-panel`,children:[n.jsxs("div",{className:lt.supportPanelHeader,children:[n.jsx(Wk,{size:16}),n.jsxs("div",{children:[n.jsx("h3",{className:"tf-heading-card",children:"Before you email"}),n.jsx("p",{className:"tf-text-secondary",children:"These are the fastest places to check for common workspace, account, and setup issues."})]})]}),n.jsxs("div",{className:lt.supportRouteList,children:[n.jsxs("button",{className:`${p.cancelBtn} ${lt.supportRouteBtn}`,onClick:s,children:[n.jsx(nf,{size:15}),"Open Settings"]}),o&&n.jsxs("button",{className:`${p.cancelBtn} ${lt.supportRouteBtn}`,onClick:o,children:[n.jsx(Fk,{size:15}),"Open Account Hub"]})]})]}),n.jsx("div",{className:`${Tt.formActions} ${lt.modalActionsEnd}`,children:n.jsx("button",{className:p.cancelBtn,onClick:a,children:"Close"})})]})})}function CB({prompt:e,theme:t,onClose:a,onConfirm:s}){return n.jsx(Ws,{isOpen:!!e,onClose:a,title:"Date Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:n.jsxs("div",{className:`${p.form} tf-inline-stack-sm`,style:{padding:"16px",gap:"12px"},children:[n.jsx("p",{className:"tf-text-body",children:"Due date is before scheduled date."}),e&&n.jsxs("p",{className:"tf-text-helper",children:["Due: ",e.dueDate," · Scheduled: ",e.scheduledDate]}),n.jsxs("div",{className:p.formActions,children:[n.jsx("button",{className:p.cancelBtn,onClick:a,children:"Go Back"}),n.jsx("button",{className:p.submitBtn,onClick:s,children:"Save Anyway"})]})]})})}function AB({isOpen:e,theme:t,onClose:a,onConfirm:s}){return n.jsx(Ws,{isOpen:e,onClose:a,title:"Cloud Sync Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:n.jsxs("div",{className:`${p.form} tf-inline-stack-sm`,style:{padding:"16px",gap:"12px"},children:[n.jsx("p",{className:"tf-text-body",children:"Turning on cloud sync can renumber task, document, and image references to match the cloud workspace."}),n.jsxs("p",{className:"tf-text-helper",children:["Labels like ",n.jsx("code",{children:"T-12"}),", ",n.jsx("code",{children:"D-4"}),", and ",n.jsx("code",{children:"IMG-2"})," may change. Plain file attachments are not renumbered."]}),n.jsxs("div",{className:p.formActions,children:[n.jsx("button",{className:p.cancelBtn,onClick:a,children:"Go Back"}),n.jsx("button",{className:p.submitBtn,onClick:s,children:"Enable Sync Anyway"})]})]})})}const IB="_syncStatusModal_4pd1g_1",TB="_syncStatusTop_4pd1g_6",RB="_syncStatusMetaHeader_4pd1g_15",jB="_syncStatusHeaderInfo_4pd1g_22",NB="_syncToggle_4pd1g_43",PB="_syncStatusBadge_4pd1g_47",MB="_syncToggleControl_4pd1g_75",EB="_syncToggleControlEnabled_4pd1g_91",DB="_syncToggleControlDisabled_4pd1g_98",LB="_syncToggleControlBusy_4pd1g_102",BB="_syncToggleControlBlocked_4pd1g_107",WB="_syncToggleInput_4pd1g_112",FB="_syncToggleState_4pd1g_125",OB="_syncToggleStateOn_4pd1g_136",$B="_syncToggleStateOff_4pd1g_141",UB="_syncToggleThumb_4pd1g_146",zB="_syncStatusSummaryValue_4pd1g_173",HB="_syncStatusSummaryCompact_4pd1g_180",GB="_syncStatusRepairBanner_4pd1g_190",VB="_syncStatusRepairHeader_4pd1g_200",qB="_syncStatusRepairBadge_4pd1g_207",KB="_syncStatusRepairMeta_4pd1g_216",ZB="_syncStatusRepairText_4pd1g_223",YB="_syncStatusLabel_4pd1g_257",JB="_syncStatusSectionHeader_4pd1g_265",QB="_syncStatusCompactGrid_4pd1g_278",XB="_syncStatusCompactItem_4pd1g_284",eW="_syncStatusValue_4pd1g_295",tW="_syncStatusValueError_4pd1g_325",nW="_syncStatusActions_4pd1g_329",aW="_syncStatusPanel_4pd1g_336",rW="_syncStatusPanelHeader_4pd1g_346",sW="_syncStatusPanelMeta_4pd1g_353",oW="_syncStatusEventsList_4pd1g_375",iW="_syncStatusEventItem_4pd1g_384",cW="_syncStatusEventItemError_4pd1g_391",lW="_syncStatusEventItemMuted_4pd1g_396",dW="_syncStatusEventLine_4pd1g_401",uW="_syncStatusSecondaryActions_4pd1g_411",mW="_syncStatusPrimaryActions_4pd1g_425",pW="_syncStatusPrimaryActionSlot_4pd1g_432",fW="_syncStatusActionPlaceholder_4pd1g_440",at={syncStatusModal:IB,syncStatusTop:TB,syncStatusMetaHeader:RB,syncStatusHeaderInfo:jB,syncToggle:NB,syncStatusBadge:PB,syncToggleControl:MB,syncToggleControlEnabled:EB,syncToggleControlDisabled:DB,syncToggleControlBusy:LB,syncToggleControlBlocked:BB,syncToggleInput:WB,syncToggleState:FB,syncToggleStateOn:OB,syncToggleStateOff:$B,syncToggleThumb:UB,syncStatusSummaryValue:zB,syncStatusSummaryCompact:HB,syncStatusRepairBanner:GB,syncStatusRepairHeader:VB,syncStatusRepairBadge:qB,syncStatusRepairMeta:KB,syncStatusRepairText:ZB,syncStatusLabel:YB,syncStatusSectionHeader:JB,syncStatusCompactGrid:QB,syncStatusCompactItem:XB,syncStatusValue:eW,syncStatusValueError:tW,syncStatusActions:nW,syncStatusPanel:aW,syncStatusPanelHeader:rW,syncStatusPanelMeta:sW,syncStatusEventsList:oW,syncStatusEventItem:iW,syncStatusEventItemError:cW,syncStatusEventItemMuted:lW,syncStatusEventLine:dW,syncStatusSecondaryActions:uW,syncStatusPrimaryActions:mW,syncStatusPrimaryActionSlot:pW,syncStatusActionPlaceholder:fW};function hW({isOpen:e,theme:t,currentWorkspaceLabel:a,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:x,syncLastError:I,workspaceSyncDiagnostics:C,activeReferenceMismatchSummaries:D,syncDiagnosticsSummary:U,syncEventRows:L,syncEventsListRef:X,workspaceSyncRepairQueued:me,workspaceSyncBusy:se,workspaceSyncCopied:ae,runtimeMode:O,isAuthenticated:_,onClose:de,onToggleWorkspaceSync:ke,onRepairSync:Y,onCopyReport:P,onOpenLogin:z,onRetrySync:ie}){return n.jsx(Ws,{isOpen:e,onClose:de,title:"Sync Manager",size:"mdWide",theme:t,draggable:!0,children:n.jsxs("div",{className:`${Tt.form} ${at.syncStatusModal}`,style:{gap:"10px"},children:[n.jsxs("div",{className:at.syncStatusTop,children:[n.jsx("div",{className:at.syncStatusHeaderInfo,children:n.jsxs("div",{className:at.syncStatusMetaHeader,children:[n.jsx("div",{className:at.syncStatusBadge,style:{borderColor:s.border,background:s.background,color:s.color},children:s.label}),n.jsxs("span",{className:at.syncStatusLabel,children:["Workspace: ",n.jsx("code",{children:a})]})]})}),n.jsx("label",{className:at.syncToggle,children:n.jsxs("span",{className:[at.syncToggleControl,o?at.syncToggleControlEnabled:at.syncToggleControlDisabled,l?at.syncToggleControlBusy:"",i?"":at.syncToggleControlBlocked].filter(Boolean).join(" "),children:[n.jsx("input",{className:at.syncToggleInput,type:"checkbox",role:"switch","aria-label":"Enable Sync",checked:o,disabled:!i||l,onChange:fe=>ke(fe.target.checked)}),n.jsx("span",{className:`${at.syncToggleState} ${at.syncToggleStateOn}`,children:"On"}),n.jsx("span",{className:`${at.syncToggleState} ${at.syncToggleStateOff}`,children:"Off"}),n.jsx("span",{className:at.syncToggleThumb})]})})]}),n.jsxs("div",{className:at.syncStatusSummaryCompact,children:[n.jsx("span",{className:at.syncStatusLabel,children:"Health"}),n.jsx("span",{className:at.syncStatusSummaryValue,children:d})]}),n.jsxs("div",{className:at.syncStatusSummaryCompact,children:[n.jsx("span",{className:at.syncStatusLabel,children:"Next Step"}),n.jsx("span",{className:at.syncStatusSummaryValue,children:m})]}),y&&n.jsxs("div",{className:at.syncStatusRepairBanner,children:[n.jsxs("div",{className:at.syncStatusRepairHeader,children:[n.jsxs("div",{className:at.syncStatusRepairBadge,children:[n.jsx(kr,{size:13,className:p.spinner}),n.jsx("span",{children:"Repair In Progress"})]}),n.jsx("span",{className:at.syncStatusRepairMeta,children:"Advanced recovery mode"})]}),n.jsx("span",{className:at.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."})]}),n.jsx("div",{className:at.syncStatusSectionHeader,children:n.jsx("span",{className:at.syncStatusLabel,children:"Current Session"})}),n.jsxs("div",{className:at.syncStatusCompactGrid,children:[n.jsxs("div",{className:at.syncStatusCompactItem,children:[n.jsx("span",{className:at.syncStatusLabel,children:"Stage"}),n.jsx("span",{className:at.syncStatusValue,children:S})]}),n.jsxs("div",{className:at.syncStatusCompactItem,children:[n.jsx("span",{className:at.syncStatusLabel,children:"Local Changes"}),n.jsx("span",{className:at.syncStatusValue,children:h})]}),n.jsxs("div",{className:at.syncStatusCompactItem,children:[n.jsx("span",{className:at.syncStatusLabel,children:"Last Successful"}),n.jsx("span",{className:at.syncStatusValue,children:g})]})]}),n.jsx("div",{className:at.syncStatusSectionHeader,children:n.jsx("span",{className:at.syncStatusLabel,children:"Activity"})}),n.jsxs("div",{className:at.syncStatusCompactGrid,children:[n.jsxs("div",{className:at.syncStatusCompactItem,children:[n.jsx("span",{className:at.syncStatusLabel,children:"Last Pull"}),n.jsx("span",{className:at.syncStatusValue,children:v})]}),n.jsxs("div",{className:at.syncStatusCompactItem,children:[n.jsx("span",{className:at.syncStatusLabel,children:"Last Push"}),n.jsx("span",{className:at.syncStatusValue,children:x})]})]}),I!=="None"&&n.jsxs("div",{className:at.syncStatusPanel,style:{background:"rgba(239, 68, 68, 0.05)",borderColor:"rgba(239, 68, 68, 0.2)"},children:[n.jsxs("div",{className:at.syncStatusSectionHeader,style:{marginTop:0},children:[n.jsx(yd,{size:12,color:"#fda4af"}),n.jsxs("span",{className:at.syncStatusLabel,style:{color:"#fda4af"},children:["Last Error (",C.lastErrorAt?new Date(C.lastErrorAt).toLocaleTimeString():"Recent",")"]})]}),n.jsx("span",{className:`${at.syncStatusValue} ${at.syncStatusValueError}`,children:I})]}),k>0&&n.jsxs("div",{className:at.syncStatusPanel,style:{background:"rgba(250, 204, 21, 0.08)",borderColor:"rgba(250, 204, 21, 0.22)"},children:[n.jsxs("div",{className:at.syncStatusPanelHeader,children:[n.jsx("span",{className:at.syncStatusLabel,style:{color:"#fde68a"},children:"Identifier Integrity"}),n.jsxs("span",{className:at.syncStatusPanelMeta,children:[k," mismatch",k===1?"":"es"," detected"]})]}),n.jsx("span",{className:at.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."}),D.length>0&&n.jsx("div",{style:{marginTop:"10px",display:"flex",flexDirection:"column",gap:"8px"},children:D.map(fe=>n.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:[n.jsx("span",{className:at.syncStatusValue,style:{fontSize:"12px",wordBreak:"break-all"},children:fe.pathLabel}),fe.refsLabel?n.jsx("span",{className:at.syncStatusPanelMeta,children:fe.refsLabel}):null]},fe.key))})]}),n.jsxs("div",{className:at.syncStatusPanel,children:[n.jsxs("div",{className:at.syncStatusPanelHeader,children:[n.jsx("span",{className:at.syncStatusLabel,children:"Local Sync Diagnostics"}),n.jsx("span",{className:at.syncStatusPanelMeta,style:{fontSize:"10px"},children:"AI profiles & metadata"})]}),n.jsx("div",{className:at.syncStatusCompactGrid,style:{gridTemplateColumns:"repeat(2, 1fr)"},children:U.map(fe=>n.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:"8px"},children:[n.jsx("span",{className:at.syncStatusLabel,style:{fontSize:"9px",textTransform:"capitalize"},children:fe.label}),n.jsx("span",{className:at.syncStatusValue,style:{fontSize:"11px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:fe.value})]},fe.label))})]}),n.jsxs("div",{className:at.syncStatusPanel,children:[n.jsx("div",{className:at.syncStatusPanelHeader,children:n.jsx("span",{className:at.syncStatusLabel,children:"Recent Events"})}),n.jsx("div",{ref:X,className:at.syncStatusEventsList,style:{height:"120px"},children:L.map(fe=>n.jsx("div",{className:[at.syncStatusEventItem,fe.tone==="error"?at.syncStatusEventItemError:"",fe.tone==="muted"?at.syncStatusEventItemMuted:""].filter(Boolean).join(" "),style:{padding:"6px 8px",borderRadius:"6px"},children:n.jsx("span",{className:at.syncStatusEventLine,style:{fontSize:"11px"},children:fe.text})},fe.key))})]}),n.jsxs("div",{className:`${Tt.formActions} ${at.syncStatusActions}`,children:[n.jsxs("div",{className:at.syncStatusSecondaryActions,children:[n.jsx("button",{className:p.cancelBtn,onClick:Y,disabled:y,title:y?"Repair is running now.":me?"Repair is queued and will start when the current sync finishes.":se?"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?n.jsxs(n.Fragment,{children:[n.jsx(kr,{size:14,className:p.spinner}),n.jsx("span",{style:{marginLeft:"6px"},children:"Repairing..."})]}):me?"Repair Queued":"Repair"}),n.jsxs("button",{className:p.cancelBtn,onClick:P,title:"Copy the current sync manager report for support or AI troubleshooting.",children:[n.jsx(tf,{size:14}),n.jsx("span",{style:{marginLeft:"6px"},children:ae?"Copied":"Copy Report"})]})]}),n.jsxs("div",{className:at.syncStatusPrimaryActions,children:[n.jsx("div",{className:at.syncStatusPrimaryActionSlot,children:O==="local"&&!_?n.jsx("button",{className:p.submitBtn,onClick:z,children:"Sign In / Register"}):n.jsx("div",{className:at.syncStatusActionPlaceholder,"aria-hidden":"true"})}),n.jsx("div",{className:at.syncStatusPrimaryActionSlot,children:n.jsx("button",{className:p.submitBtn,onClick:ie,disabled:se,children:se?n.jsxs(n.Fragment,{children:[n.jsx(kr,{size:14,className:p.spinner}),"Syncing..."]}):n.jsxs(n.Fragment,{children:[n.jsx(Ok,{size:14}),"Sync"]})})})]})]})]})})}function gW({isOpen:e,theme:t,teamPlanMode:a,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:x,teamAuditPage:I,teamAuditPages:C,teamAuditHasMore:D,onClose:U,onOpenMembersTab:L,onOpenInvitesTab:X,onOpenAuditTab:me,onMemberRoleChange:se,onMemberPermissionChange:ae,onToggleMemberDisabled:O,onRevokeInvite:_,onRemoveMember:de,onInviteEmailChange:ke,onInviteRoleChange:Y,onInvitePermissionModeChange:P,onSubmitInvite:z,onLoadAuditPrevious:ie,onLoadAuditNext:fe}){return n.jsx(Ws,{isOpen:e,onClose:U,title:"Team Management",size:"md",theme:t,draggable:!0,children:n.jsxs("div",{className:`${Tt.form} ${lt.modalBody}`,children:[a==="personal"&&n.jsx("p",{className:ge.loginError,children:"Team management is only available in TEAM accounts."}),s&&n.jsx("p",{className:ge.loginError,children:s}),n.jsxs("div",{className:`${p.settingsTabs} tf-scrollbar tf-scrollbar--track-transparent tf-scrollbar--compact`,children:[n.jsx("button",{className:`${p.settingsTabBtn} ${o==="members"?p.settingsTabBtnActive:""}`,onClick:L,children:"Members"}),n.jsx("button",{className:`${p.settingsTabBtn} ${o==="invites"?p.settingsTabBtnActive:""}`,onClick:X,children:"Invites"}),n.jsx("button",{className:`${p.settingsTabBtn} ${o==="audit"?p.settingsTabBtnActive:""}`,onClick:me,children:"Audit Log"})]}),o==="members"&&n.jsxs("div",{className:mt.accountHubCard,children:[l&&n.jsx("p",{className:lt.mutedText,children:"Loading members..."}),!l&&i.length===0&&n.jsx("p",{className:lt.mutedText,children:"No users found."}),!l&&i.map(q=>n.jsxs("div",{className:lt.memberRow,children:[n.jsx("div",{className:lt.memberTitle,children:q.displayName||q.email}),n.jsxs("div",{className:mt.accountMenuMeta,children:[q.email," · ",q.status,q.disabled?" · deactivated":""]}),n.jsxs("div",{className:lt.memberActions,children:[n.jsxs("select",{className:`${p.input} ${lt.selectRole}`,value:q.role,onChange:Me=>se(q.userId,Me.target.value),disabled:d===q.userId,children:[n.jsx("option",{value:"owner",children:"Owner"}),n.jsx("option",{value:"admin",children:"Admin"}),n.jsx("option",{value:"member",children:"Member"})]}),q.role==="member"&&n.jsxs("select",{className:`${p.input} ${lt.selectPermission}`,value:q.permissionMode,onChange:Me=>ae(q.userId,Me.target.value),disabled:d===q.userId,children:[n.jsx("option",{value:"read-write",children:"Read / Write"}),n.jsx("option",{value:"read-only",children:"Read Only"})]}),n.jsx("button",{className:p.cancelBtn,disabled:d===q.userId,onClick:()=>O(q.userId,!q.disabled),children:q.disabled?"Reactivate":"Deactivate"}),q.status==="invited"&&n.jsx("button",{className:p.cancelBtn,disabled:d===q.userId,onClick:()=>_(q.userId),children:"Revoke Invite"}),n.jsx("button",{className:p.cancelBtn,disabled:d===q.userId,onClick:()=>de(q.userId),children:"Remove"})]})]},q.userId))]}),o==="invites"&&n.jsxs("div",{className:mt.accountHubCard,children:[m&&n.jsx("p",{className:lt.sectionText,children:m}),n.jsxs("div",{className:p.pathInputGroup,children:[n.jsx("label",{className:`${p.label} ${lt.labelFixed}`,children:"Email"}),n.jsx("input",{className:p.input,value:y,onChange:q=>ke(q.target.value),placeholder:"name@company.com"})]}),n.jsxs("div",{className:p.pathInputGroup,children:[n.jsx("label",{className:`${p.label} ${lt.labelFixed}`,children:"Role"}),n.jsxs("select",{className:`${p.input} ${lt.selectRole}`,value:k,onChange:q=>Y(q.target.value==="admin"?"admin":"member"),children:[n.jsx("option",{value:"member",children:"Member"}),n.jsx("option",{value:"admin",children:"Admin"})]}),k==="member"&&n.jsxs("select",{className:`${p.input} ${lt.selectPermission}`,value:S,onChange:q=>P(q.target.value==="read-only"?"read-only":"read-write"),children:[n.jsx("option",{value:"read-write",children:"Read / Write"}),n.jsx("option",{value:"read-only",children:"Read Only"})]}),n.jsx("button",{className:p.submitBtn,disabled:h||!y.trim()||a!=="team",onClick:z,children:h?"Sending...":"Send Invite"})]}),n.jsxs("div",{className:lt.inviteRow,children:[n.jsx("div",{className:lt.listHeading,children:"Pending Invites"}),g.length===0&&n.jsx("p",{className:lt.mutedText,children:"No pending invites."}),g.map(q=>n.jsxs("div",{className:lt.memberRow,children:[n.jsx("div",{className:lt.memberTitle,children:q.displayName||q.email}),n.jsxs("div",{className:mt.accountMenuMeta,children:[q.email," · ",q.role]})]},q.userId))]})]}),o==="audit"&&n.jsxs("div",{className:mt.accountHubCard,children:[v&&n.jsx("p",{className:lt.mutedText,children:"Loading audit entries..."}),!v&&x.length===0&&n.jsx("p",{className:lt.mutedText,children:"No audit events for this workspace."}),!v&&n.jsx("div",{className:lt.auditList,children:x.map(q=>n.jsxs("div",{className:lt.memberRow,children:[n.jsx("div",{className:mt.accountMenuMeta,children:new Date(q.createdAt).toLocaleString()}),n.jsx("div",{className:lt.memberTitle,children:q.action}),n.jsxs("div",{className:mt.accountMenuMeta,children:[q.actorUserId," (",q.actorRole,")"]})]},q.id))}),n.jsxs("div",{className:lt.auditPager,children:[n.jsx("button",{className:p.cancelBtn,disabled:v||I===0,onClick:ie,children:"Previous"}),n.jsxs("span",{className:mt.accountMenuMeta,children:["Page ",I+1," of ",C]}),n.jsx("button",{className:p.cancelBtn,disabled:v||!D||I+1>=C,onClick:fe,children:"Next"})]})]}),n.jsx("div",{className:`${Tt.formActions} ${lt.modalActionsEnd}`,children:n.jsx("button",{className:p.cancelBtn,onClick:U,children:"Close"})})]})})}const Py=e=>{const t=e.status||"task";return t==="done"||t==="cancelled"?"completed":t},yW=(e,t,a)=>{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=a,o):(t==="cancelled"&&(o.status="cancelled"),o)},kW=({targetTasks:e,overTaskId:t,isBelowOverItem:a})=>{if(!t)return e.length;const s=e.findIndex(o=>o.id===t);return s<0?e.length:s+(a?1:0)},My=(e,t=new Map)=>{const a=new Map(t);return e.forEach((s,o)=>{a.set(s.id,{...a.get(s.id)||{},orderInDay:o})}),a},Af=e=>Array.from(e.entries()).map(([t,a])=>({taskId:t,updates:a})),Ey=({sourceColumnId:e,targetColumnId:t,sourceTasks:a,updates:s})=>!e||e===t?s:My(a,s),vW=({activeTask:e,sourceColumnId:t,targetTasks:a,sourceTasks:s,insertAt:o})=>{const l=[...a];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)},SW=({activeTask:e,targetTasks:t,insertAt:a})=>{const s=[...t];return s.splice(a,0,e),Af(My(s))},wW=({activeTask:e,sourceColumnId:t,targetColumnId:a,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:a,sourceTasks:o,updates:y}),Af(y)},bW=({activeTask:e,sourceColumnId:t,targetColumnId:a,targetTasks:s,sourceTasks:o,overTaskId:l,isBelowOverItem:i,scheduleDates:d,parseToIsoWeekKey:m,todayDate:y})=>{const k=["mon","tue","wed","thu","fri","sat","sun"];if(!(a==="backlog"||a==="expired"||k.includes(a)))return null;const h=kW({targetTasks:s,overTaskId:l,isBelowOverItem:i});if(a==="expired")return t!=="expired"?null:{kind:"updates",updates:SW({activeTask:e,targetTasks:s,insertAt:h})};if(a==="backlog")return{kind:"updates",updates:vW({activeTask:e,sourceColumnId:t,targetTasks:s,sourceTasks:o,insertAt:h})};if(!k.includes(a))return null;const g=d[a];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:wW({activeTask:e,sourceColumnId:t,targetColumnId:a,targetTasks:s,sourceTasks:o,insertAt:h,scheduledDate:g,scheduledWeekKey:m(g)}),selectedDate:g}:null},Xu="expired::";function xW({tasks:e,columns:t,groupBy:a,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:x,onToggleComplete:I,onToggleCancel:C,onSetStatus:D,onArchiveTask:U,onUnarchive:L,onDelete:X,allTasks:me=[],onAddTaskToColumn:se,emptyColumnMode:ae="show",filterCategories:O=[],filterTypes:_=[],filterPriorities:de=[],filterStatus:ke=[],filterAssignees:Y=[],filtersReady:P=!0,scheduleFilteredTaskIds:z,categories:ie=[],compressed:fe=!1,readOnlyMode:q=null,recentlyChangedTaskIds:Me=[],scheduleDates:xe,onScheduleDaySelected:oe,persistedScrollLeft:le,onScrollLeftChange:Ie,sortBy:Ee="created",sortOrder:je="desc",planningDropTargets:Pe=null,onAssignTaskToWorkstream:K,onAssignWorkstreamToInitiative:A,showTaskCardStatusLabel:b=!0,workstreams:R=[],initiatives:F=[]}){const[Q,M]=r.useState(null),[$,be]=r.useState(!1),[H,ce]=r.useState(!1),he=r.useMemo(()=>new Set(Me),[Me]),G=r.useMemo(()=>new Map(R.map(E=>[E.id,E])),[R]),re=r.useMemo(()=>new Map(F.map(E=>[E.id,E])),[F]),ue=r.useCallback(E=>{const c=E.workstreamId&&G.get(E.workstreamId)||null,J=c?.initiativeId&&re.get(c.initiativeId)||null;return{taskWorkstream:c,taskInitiative:J}},[re,G]),Re=r.useMemo(()=>new Set(e.map(E=>E.id)),[e]),Te=r.useCallback(E=>E.startsWith(Xu)?E.slice(Xu.length):E,[]),De=r.useCallback(E=>Re.has(Te(E)),[Re,Te]),Oe=r.useMemo(()=>new Set(z||[]),[z]),vt=r.useRef(null),st=r.useCallback(E=>{const c=E?.data?.current||{},J=String(E?.id||"");let we=String(c.taskId||""),Ae=String(c.workstreamId||"");!we&&J&&De(J)&&(we=Te(J)),!Ae&&J.startsWith("planning-workstream:")&&(Ae=J.slice(20));let Ke=String(c.type||"");return Ke||(we?Ke="task-card":Ae&&(Ke="planning-workstream")),{activeId:J,type:Ke,taskId:we,workstreamId:Ae}},[Te,De]),kt=gg(Lp(Sg,{activationConstraint:{distance:10}}),Lp(dv,{coordinateGetter:lv})),Ye=Py,_t=r.useMemo(()=>{const E=new Date,c=E.getFullYear(),J=String(E.getMonth()+1).padStart(2,"0"),we=String(E.getDate()).padStart(2,"0");return`${c}-${J}-${we}`},[]),dt=r.useMemo(()=>{const E=we=>{const Ae=we.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!Ae)return null;const Ke=new Date(Date.UTC(Number(Ae[1]),Number(Ae[2])-1,Number(Ae[3]))),Je=Ke.getUTCDay()||7;Ke.setUTCDate(Ke.getUTCDate()+4-Je);const Ne=new Date(Date.UTC(Ke.getUTCFullYear(),0,1)),zt=Math.ceil(((Ke.getTime()-Ne.getTime())/864e5+1)/7);return`${Ke.getUTCFullYear()}-W${String(zt).padStart(2,"0")}`};return{dates:{...(()=>{const we=new Date,Ae=we.getDay(),Ke=Ae===0?-6:1-Ae,Je=new Date(we);Je.setDate(we.getDate()+Ke);const Ne=Pt=>{const Ft=Pt.getFullYear(),Lt=String(Pt.getMonth()+1).padStart(2,"0"),Ht=String(Pt.getDate()).padStart(2,"0");return`${Ft}-${Lt}-${Ht}`},zt={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return["mon","tue","wed","thu","fri","sat","sun"].forEach((Pt,Ft)=>{const Lt=new Date(Je);Lt.setDate(Je.getDate()+Ft),zt[Pt]=Ne(Lt)}),zt})(),...xe||{}},parseToIsoWeekKey:E}},[xe]),Qe=E=>{const c=E.scheduledDate||null;return c?new Map([[dt.dates.mon,"mon"],[dt.dates.tue,"tue"],[dt.dates.wed,"wed"],[dt.dates.thu,"thu"],[dt.dates.fri,"fri"],[dt.dates.sat,"sat"],[dt.dates.sun,"sun"]]).get(c)||"__offweek":"backlog"},Rt=r.useMemo(()=>{if(a==="schedule")return[];const E=new Set(t.map(Ae=>String(Ae.value))),c=new Set(t.map(Ae=>Ae.label)),J=[],we=Ae=>{const Ke=a==="status"?Ye(Ae):Ae[a],Je=String(Ke??"");if(!Je||E.has(Je)||c.has(Je))return null;if(a==="category"){const Ne=ie.find(zt=>zt.value===Je||zt.label===Je);return{value:Je,label:Ne?.label||Je,icon:Ne?.icon||"Folder",color:Ne?.color}}if(a==="type"){const Ne=i?.find(zt=>zt.value===Je||zt.label===Je);return{value:Je,label:Ne?.label||Je,icon:Ne?.icon||"CheckSquare",color:Ne?.color}}if(a==="priority"){const Ne=d?.find(zt=>Number(zt.value)===Number(Je));return{value:Number.isFinite(Number(Je))?Number(Je):Je,label:Ne?.label||Je,icon:Ne?.icon||"Flag",color:Ne?.color}}if(a==="complexity")return{value:Number.isFinite(Number(Je))?Number(Je):Je,label:Je,icon:"Gauge"};if(a==="status")return{value:Je,label:Je,icon:"Circle"};if(a==="assignee"){const Ne=y.find(zt=>zt.value===Je);return{value:Je,label:Ne?.label||Je,icon:Ne?.icon==="HelpCircle"?"Circle":Ne?.icon,color:Ne?.color}}return{value:Je,label:Je}};for(const Ae of e){const Ke=we(Ae);Ke&&(J.push(Ke),E.add(String(Ke.value)),c.add(Ke.label))}return J},[y,ie,a,t,d,e,i]),ee=r.useMemo(()=>[...t,...Rt],[Rt,t]),ze=r.useMemo(()=>{const E=new Map;for(const c of ee)E.set(String(c.value),c),E.has(c.label)||E.set(c.label,c);return E},[ee]),ft=r.useMemo(()=>{const E={};return ee.forEach(J=>{E[String(J.value)]=0}),(me.length>0?me:e).forEach(J=>{let we="";if(a==="status")we=Ye(J);else if(a==="schedule")we=Qe(J);else{const Ke=J[a];we=String(Ke??"")}const Ae=ze.get(we);if(Ae&&E[String(Ae.value)]++,a==="schedule"){const Ke=J.status==="done"||J.status==="cancelled";J.scheduledDate&&!Ke&&J.scheduledDate<_t&&ze.has("expired")&&(E.expired=(E.expired||0)+1)}}),E},[me,e,ee,a,ze,_t]),it=r.useMemo(()=>{const E={};if(ee.forEach(c=>{E[String(c.value)]=[]}),e.forEach(c=>{let J="";if(a==="status")J=Ye(c);else if(a==="schedule")J=Qe(c);else{const Ae=c[a];J=String(Ae??"")}const we=ze.get(J);if(we){if(a==="schedule"&&String(we.value)==="backlog"&&!Oe.has(c.id))return;E[String(we.value)].push(c)}if(a==="schedule"){const Ae=c.status==="done"||c.status==="cancelled";c.scheduledDate&&!Ae&&c.scheduledDate<_t&&E.expired&&E.expired.push(c)}}),a==="schedule"){const c=(we,Ae)=>{const Ke=typeof we.orderInDay=="number"?we.orderInDay:Number.MAX_SAFE_INTEGER,Je=typeof Ae.orderInDay=="number"?Ae.orderInDay:Number.MAX_SAFE_INTEGER;return Ke!==Je?Ke-Je:String(we.createdAt||"").localeCompare(String(Ae.createdAt||""))},J=(we,Ae)=>fm(we,Ae,Ee,je,l);Object.keys(E).forEach(we=>{if(we==="backlog"||we==="expired"){E[we].sort(J);return}E[we].sort(c)})}return E},[e,me,ee,a,ze,Oe,_t,Ee,je]),Et=Q?Te(Q):null,ht=Et?e.find(E=>E.id===Et):null,Ot=r.useRef(null),Dt=r.useRef(null),We=r.useRef({pointerId:null,startX:0,startY:0,startScrollLeft:0,didPan:!1}),tt=r.useRef(-1),Fe=(E,c)=>P?a==="category"?!O.includes(String(E)):a==="type"?!_.includes(String(E)):a==="priority"?!de.some(J=>Number(J)===Number(E)):a==="status"?String(E)==="completed"?!ke.includes("done")&&!ke.includes("cancelled"):!ke.includes(String(E)):a==="assignee"?!Y.includes(String(E)):!1:!1,Ze=r.useMemo(()=>{let we=0;return ee.forEach((Ae,Ke)=>{const Je=it[String(Ae.value)]||[],Ne=Fe(Ae.value,Ae.label),zt=a!=="schedule"&&ae==="hide"&&Je.length===0;if(Ne||zt)return;const Jt=ae==="collapse"&&Je.length===0;we+=Jt?72:320,we+=4}),we},[ee,it,ae,a,O,_,de,ke,Y,P]),St=r.useCallback(E=>{if(!Ie)return;const c=Math.max(0,Math.round(E));c!==tt.current&&(tt.current=c,Ie(c))},[Ie]);r.useEffect(()=>{const E=Ot.current,c=Dt.current;if(!E||!c)return;let J=!1,we=!1;const Ae=()=>{!E||we||(J=!0,E.scrollLeft=c.scrollLeft,St(c.scrollLeft),setTimeout(()=>J=!1,0))},Ke=()=>{!c||J||(we=!0,c.scrollLeft=E.scrollLeft,St(E.scrollLeft),setTimeout(()=>we=!1,0))};return c.addEventListener("scroll",Ae),E.addEventListener("scroll",Ke),()=>{c.removeEventListener("scroll",Ae),E.removeEventListener("scroll",Ke)}},[St]);const ot=r.useRef(!1);r.useEffect(()=>{if(ot.current)return;if(typeof le!="number"||!Number.isFinite(le)){ot.current=!0;return}const E=Ot.current,c=Dt.current;if(!E||!c)return;const J=Math.max(0,E.scrollWidth-E.clientWidth),we=Math.min(Math.max(0,le),J);E.scrollLeft=we,c.scrollLeft=we,ot.current=!0},[le,Ze]),r.useEffect(()=>{const E=()=>{const c=Ot.current;if(!c){ce(!1);return}ce(c.scrollWidth>c.clientWidth+4)};return E(),window.addEventListener("resize",E),()=>{window.removeEventListener("resize",E)}},[Ze,ee.length,it]),r.useEffect(()=>{const E=J=>{const we=We.current;if(we.pointerId===null||we.pointerId!==J.pointerId)return;const Ae=J.clientX-we.startX,Ke=J.clientY-we.startY;if(!we.didPan){if(Math.abs(Ae)<7||Math.abs(Ae)<Math.abs(Ke))return;we.didPan=!0,be(!0),document.body.style.userSelect="none"}const Je=we.startScrollLeft-Ae;Ot.current&&(Ot.current.scrollLeft=Je),Dt.current&&(Dt.current.scrollLeft=Je),J.preventDefault()},c=()=>{const J=We.current;J.pointerId!==null&&(J.pointerId=null,J.didPan=!1,$&&(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=""}},[$]);const te=E=>{!H||E.target?.closest('button, a, input, select, textarea, [role="button"], [data-no-header-pan="true"]')||(We.current.pointerId=E.pointerId,We.current.startX=E.clientX,We.current.startY=E.clientY,We.current.startScrollLeft=Ot.current?.scrollLeft||0,We.current.didPan=!1)},Le=E=>{M(E.active.id)},Ct=E=>{const c=st(E.active),J=String(E.over?.data?.current?.type||"");c.type==="task-card"&&J.startsWith("planning-")?vt.current=`${String(E.over?.id||"")}:${J}`:vt.current&&(vt.current=null)},jt=E=>{const{active:c,over:J}=E;vt.current=null,M(null);const we=st(c),Ae=we.type,Ke=String(J?.data?.current?.type||""),Je=we.taskId,Ne=we.workstreamId,zt=String(J?.data?.current?.workstreamId||""),Jt=String(J?.data?.current?.initiativeId||"");if(Ae==="task-card"&&Ke==="planning-workstream-target"&&Je&&zt){K?.(Je,zt);return}if(Ae==="planning-workstream"){if(Ke==="planning-initiative-target"&&Ne&&Jt){A?.(Ne,Jt);return}return}const Pt=String(c.id),Ft=J?String(J.id):null,Lt=Te(Pt);Ft&&Te(Ft);const Ht=e.find(ye=>ye.id===Lt);if(!Ht||!Ft)return;const rn=Wt(Pt),Vn=String(c?.data?.current?.sortable?.containerId||"")||rn,Kn=String(J?.data?.current?.sortable?.containerId||"")||Wt(Ft);if(!Kn)return;const ca=ze.get(Kn)||ee.find(ye=>String(ye.value)===Kn||ye.label===Kn);if(ca){if(a==="schedule"){const Ce=String(ca.value),Nt=Ft&&De(Ft)?Te(Ft):null,pt=J?.rect,Cn=c.rect.current.translated||c.rect.current.initial,kn=!!(pt&&Cn&&Cn.top+Cn.height/2>pt.top+pt.height/2),cn=(it[Ce]||[]).filter(gt=>gt.id!==Lt),ln=(it[String(Vn)]||[]).filter(gt=>gt.id!==Lt),$n=bW({activeTask:Ht,sourceColumnId:Vn,targetColumnId:Ce,targetTasks:cn,sourceTasks:ln,overTaskId:Nt,isBelowOverItem:kn,scheduleDates:dt.dates,parseToIsoWeekKey:dt.parseToIsoWeekKey,todayDate:_t});if(!$n)return;if($n.kind==="blocked"){window.alert($n.reason);return}$n.updates.forEach(({taskId:gt,updates:rr})=>k(gt,rr)),$n.selectedDate&&oe?.($n.selectedDate);return}let ye=ca.value;if(a==="status"){const Ce=String(ye),Nt=yW(Ht,Ce,new Date().toISOString());Nt&&k(Ht.id,Nt);return}(a==="priority"||a==="complexity")&&(ye=Number(ye));const rt=Ht[a];if(String(rt??"")!==String(ye??"")){const Ce={[a]:ye};k(Ht.id,Ce)}}},Wt=E=>{if(ze.has(E)){const we=ze.get(E);return we?String(we.value):E}if(a==="schedule"&&E.startsWith(Xu))return"expired";const c=Te(E),J=e.find(we=>we.id===c);if(J){let we="";a==="status"?we=Ye(J):a==="schedule"?we=Qe(J):we=String(J[a]??"");const Ae=ze.get(we);return Ae?String(Ae.value):null}return null},Ge={sideEffects:uv({styles:{active:{opacity:"0"}}})},$t=E=>{try{const c=cv(E);if(c.length>0){const J=c.find(zt=>String(zt.id).startsWith("planning-"));if(J)return[J];const we=E.pointerCoordinates;if(!we)return[c[0]];const Ae=c.filter(zt=>{const Jt=String(zt.id);return De(Jt)&&Jt!==Q});if(Ae.length===0){const Jt=c.filter(Lt=>{const Ht=String(Lt.id);return!De(Ht)}).find(Lt=>!!Wt(String(Lt.id)))||null,Pt=Jt?Wt(String(Jt.id)):null,Ft=(E.droppableContainers||[]).filter(Lt=>{const Ht=String(Lt.id);return!De(Ht)||Ht===Q?!1:Pt?Wt(Ht)===Pt:!0});if(Ft.length>0){const Lt=Qf({...E,droppableContainers:Ft});if(Lt.length>0)return[Lt[0]]}return Jt?[Jt]:[c[0]]}const Ke=Ae;let Je=Ke[0],Ne=Number.POSITIVE_INFINITY;for(const zt of Ke){const Jt=E.droppableRects?.get(zt.id);if(!Jt)continue;const Pt=Jt.left+Jt.width/2,Ft=Jt.top+Jt.height/2,Lt=we.x-Pt,Ht=we.y-Ft,rn=Lt*Lt+Ht*Ht;rn<Ne&&(Ne=rn,Je=zt)}return[Je]}return Qf(E)}catch(c){return console.error("[TaskKanban] collision detection error",c),[]}},yt={searchQuery:s,copiedId:o,taxonomies:l,types:i,priorities:d,approaches:m,assigneeOptions:y,onCopyId:g,onToggleInProgress:v,onToggleReview:x,onToggleComplete:I,onToggleCancel:C,onSetStatus:D,onArchiveTask:U,onUnarchive:L,onDelete:X,onOpenTaskById:h,categories:ie,readOnlyMode:q,changedTaskIdSet:he,resolveTaskHierarchy:ue,groupBy:a,showStatusLabel:b};return n.jsxs(yg,{sensors:kt,collisionDetection:$t,onDragStart:Le,onDragOver:Ct,onDragEnd:jt,onDragCancel:E=>{vt.current=null,M(null)},children:[Pe,n.jsxs("div",{className:p.kanbanWrapper,children:[n.jsx("div",{ref:Dt,className:`${p.kanbanTopScroll} tf-scrollbar`,children:n.jsx("div",{className:p.kanbanTopScrollSpacer,style:{width:`${Ze}px`}})}),n.jsx("div",{className:p.kanbanContainer,ref:Ot,children:ee.map(E=>{const c=it[String(E.value)]||[],J=Fe(E.value,E.label),we=a!=="schedule"&&ae==="hide"&&c.length===0,Ae=a==="schedule",Ke=Ae&&ee.some(Ht=>String(Ht.value)==="backlog"),Je=Ae&&String(E.value)==="backlog",Ne=Ae&&String(E.value)==="expired",zt=it.backlog||[],Pt=ae==="collapse"&&zt.length===0?72:320,Ft=Je?0:Ne?Ke?Pt+4:0:void 0,Lt=Je?6:Ne?5:void 0;return J||we?null:n.jsx(_W,{id:String(E.value),title:E.label,color:E.color,icon:E.icon,tasks:c,activeId:Q,activeTaskId:Et,totalCount:ft[String(E.value)],onAddTask:()=>se?.(a,E.value),onTaskClick:S,commonCardProps:yt,collapseEmpty:ae==="collapse",compressed:fe,onHeaderPointerDown:te,isHeaderPanning:$,headerPanEnabled:H,stickyLeft:Ft,stickyZIndex:Lt,isPast:!!E.isPast,isSelected:!!E.isSelected,isWeekend:!!E.isWeekend,disableSorting:!1,scheduleDate:a==="schedule"?dt.dates[String(E.value)]:void 0,onScheduleDaySelected:oe},String(E.value))})})]}),Yi.createPortal(n.jsx(iv,{dropAnimation:Ge,children:ht?(()=>{const{taskWorkstream:E,taskInitiative:c}=ue(ht);return n.jsx(bd,{task:ht,taskWorkstream:E,taskInitiative:c,isOverlay:!0,...yt,isArchived:ht.isArchived,categories:ie,compressed:fe,isRecentlyChanged:he.has(ht.id)})})():null}),document.body)]})}function _W({id:e,title:t,color:a,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:x=!1,stickyLeft:I,stickyZIndex:C,isPast:D=!1,isSelected:U=!1,isWeekend:L=!1,disableSorting:X=!1,scheduleDate:me,onScheduleDaySelected:se}){const{setNodeRef:ae}=sf({id:e,data:{type:"Column"}}),O=S&&o.length===0,_=i?o.filter(z=>z.id!==i):o,de=typeof I=="number",ke=r.useRef(null),Y=z=>e==="expired"?`${Xu}${z}`:z,P=z=>{if(!me||!se)return;const ie=z.target;ie&&(ie.closest('[data-task-card="true"]')||ie.closest(`.${p.kanbanCardWrapper}`)||se(me))};return n.jsxs("div",{ref:ae,className:`${p.kanbanColumn} ${O?p.kanbanColumnCollapsed:""} ${de?p.kanbanColumnSticky:""} ${D?p.kanbanColumnPast:""} ${U?p.kanbanColumnSelectedDay:""} ${L?p.kanbanColumnWeekend:""}`,style:de?{left:`${I}px`,zIndex:C??4}:void 0,onClick:P,children:[n.jsxs("div",{className:`${p.kanbanHeader} ${x?p.kanbanHeaderDraggable:""} ${v?p.kanbanHeaderPanning:""}`,style:{borderTopColor:Da(a)||"var(--color-purple)"},onPointerDown:g,children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0,overflow:"hidden"},children:[(()=>{const z=s&&tc[s]?tc[s]:Po,ie=Da(a)||"var(--color-purple)";return n.jsx(z,{size:16,style:{color:ie}})})(),!O&&n.jsx("span",{style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:t})]}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0},children:[(!O||d>0)&&n.jsx("span",{className:p.kanbanCount,children:O?d:`${o.length} / ${d}`}),!k.readOnlyMode&&n.jsx("button",{className:"tf-control-icon tf-control-icon-compact",onClick:z=>{z.stopPropagation(),m()},title:`Add task to ${t}`,"aria-label":`Add task to ${t}`,"data-no-header-pan":"true",children:n.jsx(ro,{size:14})})]})]}),n.jsx("div",{className:p.kanbanDroppable,children:n.jsx("div",{className:`${p.kanbanDroppableScroll} ${p.appScrollbar} tf-scrollbar`,ref:ke,children:X?_.map(z=>n.jsx("div",{className:p.kanbanCardWrapper,children:(()=>{const{taskWorkstream:ie,taskInitiative:fe}=k.resolveTaskHierarchy?.(z)||{};return n.jsx(bd,{task:z,taskWorkstream:ie,taskInitiative:fe,onClick:y,...k,isArchived:z.isArchived,readOnlyMode:k.readOnlyMode||null,compressed:h,isRecentlyChanged:!1})})()},z.id)):n.jsx(kg,{id:e,items:_.map(z=>Y(z.id)),strategy:vg,children:_.map(z=>n.jsx(CW,{sortableId:Y(z.id),task:z,onClick:y,commonCardProps:k,compressed:h,isRecentlyChanged:k.changedTaskIdSet?.has(z.id)},Y(z.id)))})})})]})}function CW({sortableId:e,task:t,onClick:a,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:rf.Transform.toString(k),transition:S,opacity:h?0:1,pointerEvents:h?"none":"auto"},v=s?.groupBy==="schedule",x=!v&&l;return n.jsx("div",{ref:y,style:g,...i?{}:d,...i?{}:m,className:`${p.kanbanCardWrapper} ${x?p.kanbanCardWrapperRaised:""}`,children:(()=>{const{taskWorkstream:I,taskInitiative:C}=s.resolveTaskHierarchy?.(t)||{};return n.jsx(bd,{task:t,taskWorkstream:I,taskInitiative:C,onClick:a,...s,isArchived:t.isArchived,readOnlyMode:s?.readOnlyMode||null,compressed:o,isRecentlyChanged:v?!1:l})})()})}function AW(e,t,a){const s=String(t);if(e==="category"){const o=a.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=a.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 IW(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 TW(e){const t=e.runtimeMode==="local"&&e.isAuthenticated;if(t){const a=IW(e.retryBlockedReason||e.pullBlockedReason||e.pushBlockedReason||null);return{actionable:t,status:e.workspaceSyncStatus,syncEnabledLabel:e.workspaceCloudSyncEnabled?"yes":"no",summary:a?.summary||e.workspaceSyncSummary,recommendedAction:a?.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 RW(e,t,a){const s=t.filter(d=>Sm(a,!!d.isArchived)),o=a==="deleted"?[]:e.filter(d=>Sm(a,!!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 jW(e){return typeof e.eventType=="string"&&e.eventType.trim().length>0?e.eventType.trim():"sync"}function NW(e){const t=Im(e.details),a=t?t.source:null;return typeof a=="string"?a.trim():""}function zh(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 Hh(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 PW(e){const t=Dy(e),a=Im(e.details),s=NW(e);return s==="retry.blocked"?`${t} manual retry blocked: ${zh(a?.reason)} during ${Hh(a?.phase)}`:s==="repair.started"?`${t} manual repair started: ${Hh(a?.repairPhase)} selected`:s==="repair.blocked"?`${t} manual repair blocked: ${zh(a?.reason)}`:null}function nl(e,t=0){const a=String(e.id??"").trim();return a?`id:${a}`:[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 MW(e,t,a=15){const s=new Map;for(const[o,l]of e.entries())s.set(nl(l,o),l);for(const[o,l]of t.entries())s.set(nl(l,o),l);return Array.from(s.values()).sort((o,l)=>String(l.occurredAt||"").localeCompare(String(o.occurredAt||""))).slice(0,Math.max(1,a))}function EW(e,t){if(e.length!==t.length)return!1;for(let a=0;a<e.length;a+=1)if(nl(e[a],a)!==nl(t[a],a))return!1;return!0}function Ly(e){const t=PW(e);if(t)return t;const a=Dy(e),s=jW(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`${a} ${s} ${o}${i}${m}${k}${S}`}function Jp(e){if(!e)return"Never";const t=new Date(e);return Number.isNaN(t.getTime())?"Never":t.toLocaleString()}function DW(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,a){if(t)return"Repairing";if(a&&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 LW(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:Jp(e.aiProfileSnapshotLastFetchAt)},{label:"AI snapshot fetch error",value:e.aiProfileSnapshotLastFetchError||"None"},{label:"AI snapshot skip reason",value:e.aiProfileSnapshotLastSkipReason||"None"}]}function BW({syncRecentEvents:e,syncRecentEventsError:t,syncRecentEventsLoading:a}){return a&&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:nl(s,o),text:Ly(s),tone:s.status==="error"?"error":"default"}))}function Wy(e){const t=[];for(const a of e){if(String(a.errorMessage||"").toLowerCase().includes("reference number mismatch")){t.push(a);continue}if(String(a.status||"").toLowerCase()==="success")break}return t}function WW(e){return Wy(e).length}function FW(e){return Wy(e).map((t,a)=>{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 ${a+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:nl(t,a),pathLabel:y,refsLabel:k}})}function OW({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:a,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: ${a}`,`Recommended action: ${s}`,`Last successful sync: ${o}`,`Last pull from cloud: ${l}`,`Last push to cloud: ${i}`,`Last error at: ${Jp(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: ${Jp(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(x=>Ly(x));return[...g,"","Recent sync events",...v.length>0?v:["No recent sync events recorded."]].join(`
5
- `)}const Gh="/api/taskforce/account/profile-summary",$W=9e4,qc=new Map;function Ku(){return typeof performance<"u"?performance.now():Date.now()}function Fy(e,t){const a=String(e||"").trim();if(!a)return"";const s=String(t||"").trim();return s?`${a}::${s}`:a}function Vh(e,t){qc.delete(Fy(e,t?.identityKey))}async function UW(e,t){const a=String(e||"").trim(),s=Fy(e,t?.identityKey);if(!s||!a)return null;const o=t?.force===!0,l=Date.now(),i=qc.get(s);if(!o&&i?.payload!==void 0&&l-i.fetchedAt<$W)return Ut("account_profile_summary_cache_hit",{url:a,cacheKey:s,ageMs:l-i.fetchedAt}),i.payload;if(!o&&i?.promise)return Ut("account_profile_summary_request_reused",{url:a,cacheKey:s}),i.promise;const d=Ku(),m=(async()=>{const y=await fetch(a,{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}),Ut("account_profile_summary_loaded",{url:a,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}),Ut("account_profile_summary_failed",{url:a,cacheKey:s,durationMs:Math.round(Ku()-d),error:y instanceof Error?y.message:String(y||"Unknown error"),returnedStale:!0}),k;throw qc.delete(s),Ut("account_profile_summary_failed",{url:a,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 zW=1024,HW=5*1024*1024,GW=[.9,.82,.74,.66,.58],VW=[.9,.82,.74,.66,.58],qW=[1,.85,.7,.55,.4],KW=new Set(["image/png","image/jpeg","image/webp"]);function ZW(e,t){const a=document.createElement("canvas");return a.width=Math.max(1,Math.round(e)),a.height=Math.max(1,Math.round(t)),a}async function YW(e){const t=URL.createObjectURL(e);try{const a=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:a.naturalWidth||a.width,height:a.naturalHeight||a.height,source:a}}finally{URL.revokeObjectURL(t)}}async function JW(e){const t=ZW(e.width,e.height),a=t.getContext("2d");if(!a)throw new Error("Image optimization requires a 2D canvas context.");return a.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 QW={loadImage:YW,renderToBlob:JW};function qh(e,t){return e==="image/png"?".png":e==="image/jpeg"?".jpg":e==="image/webp"?".webp":(t.includes(".")?t.slice(t.lastIndexOf(".")):"")||".img"}function Kh(e,t){const a=String(e||"").trim();if(!a)return`avatar${t}`;const s=a.lastIndexOf(".");return s<=0?`${a}${t}`:`${a.slice(0,s)}${t}`}function XW(e){const t=e==="image/jpeg"?"image/jpeg":"image/webp";return Array.from(new Set([t,"image/webp","image/jpeg"]))}function eF(e){return e==="image/webp"?GW:e==="image/jpeg"?VW:[void 0]}async function tF(e,t,a=QW){const s=Number.isFinite(t?.maxBytes)&&(t?.maxBytes||0)>0?Math.floor(t?.maxBytes):HW,o=Number.isFinite(t?.maxDimension)&&(t?.maxDimension||0)>0?Math.floor(t?.maxDimension):zW;if(e.size<=s)return{file:e,optimized:!1,exceededLimit:!1};if(!KW.has(e.type))return{file:e,optimized:!1,exceededLimit:!0};const l=await a.loadImage(e),i=Math.max(l.width,l.height,1),d=Math.min(1,o/i);let m=null;for(const k of qW){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 XW(e.type))for(const x of eF(v)){const I=await a.renderToBlob({image:l,width:h,height:g,type:v,quality:x});if((!m||I.size<m.size)&&(m=I),I.size<=s)return{file:new File([I],Kh(e.name,qh(I.type||v,e.name)),{type:I.type||v,lastModified:e.lastModified}),optimized:!0,exceededLimit:!1}}}if(!m)return{file:e,optimized:!1,exceededLimit:!0};const y=new File([m],Kh(e.name,qh(m.type||e.type,e.name)),{type:m.type||e.type,lastModified:e.lastModified});return{file:y,optimized:y.size<e.size,exceededLimit:y.size>s}}const Qp="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg2IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1IDg3LjY1ODkyMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMSIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICAgIGlkPSJkZWZzMSIgLz48ZwogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMwLjk2ODgxLC04NzIuMDY2NjgpIj48ZwogICAgICAgaWQ9ImcxLTctMS02LTItMS05IgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aAogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIKICAgICAgICAgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiCiAgICAgICAgIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJUIiAvPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmVuZDtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6ZW5kO2ZpbGw6I2ZmOGEwMDtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZmOGEwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIgogICAgICAgICBkPSJtIDE1My41Mzg4OCwxNjQuNTI2NiBoIC0zLjUwNjc0IHYgLTEzLjYzNzMzIGggMTAuODEyNDUgdiAyLjcyNzQ2IGggLTcuMzA1NzEgdiAzLjIxNDUyIGggNS43NDcxNiB2IDIuNzI3NDYgaCAtNS43NDcxNiB6IgogICAgICAgICBpZD0idGV4dDEtOS04LTQtMy03LTItNyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",Oy="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg5IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1OCA4Ny42NTg5MjMiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnMKICAgICBpZD0iZGVmczEiIC8+PGcKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcKICAgICAgIGlkPSJnMS03LTEtNi0yLTEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCg0Ljk4MTU0NzksMCwwLDQuOTg1NTgyMiwtNjkwLjYwODc4LDQ2LjUyNDE0OCkiPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTQ5LjQ0MDY2LDE2MS4xOTUwNSBoIC0zLjUwNjc0IHYgLTEwLjkwOTg2IGggLTQuMDkxMiB2IC0yLjcyNzQ3IGggMTEuNjg5MTQgdiAyLjcyNzQ3IGggLTQuMDkxMiB6IgogICAgICAgICBpZD0idGV4dDEtNC0zLTMtMS0wIgogICAgICAgICB0cmFuc2Zvcm09InNrZXdYKC0xNSkiCiAgICAgICAgIGFyaWEtbGFiZWw9IlQiIC8+PHBhdGgKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiCiAgICAgICAgIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",Zh="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjEwMDAiPjxzdHlsZT4KICAgICNsaWdodC1pY29uIHsKICAgICAgZGlzcGxheTogaW5saW5lOwogICAgfQogICAgI2RhcmstaWNvbiB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAjbGlnaHQtaWNvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAjZGFyay1pY29uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICAgIH0KICAgIH0KICA8L3N0eWxlPjxnIGlkPSJsaWdodC1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODkyNTA0ODkwMzI3LDAsMCwyLjcyNzE4OTI1MDQ4OTAzMjcsMCw0OC4yMjgzNzgzMTg2MzgxOSkiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzNjYuNjc3ODkiIGhlaWdodD0iMzMxLjMwOTMzIiB2aWV3Qm94PSIwIDAgOTcuMDE2ODU4IDg3LjY1ODkyMyIgaWQ9InN2ZzEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzIGlkPSJkZWZzMSI+PC9kZWZzPjxnIGlkPSJsYXllcjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcgaWQ9ImcxLTctMS02LTItMSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTY5MC42MDg3OCw0Ni41MjQxNDgpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIiBkPSJtIDE0OS40NDA2NiwxNjEuMTk1MDUgaCAtMy41MDY3NCB2IC0xMC45MDk4NiBoIC00LjA5MTIgdiAtMi43Mjc0NyBoIDExLjY4OTE0IHYgMi43Mjc0NyBoIC00LjA5MTIgeiIgaWQ9InRleHQxLTQtMy0zLTEtMCIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJGIj48L3BhdGg+PC9nPjwvZz48L3N2Zz48L2c+PC9nPjwvc3ZnPjwvZz48ZyBpZD0iZGFyay1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODk0NzM2MTU4ODcsMCwwLDIuNzI3MTg5NDczNjE1ODg3LDAsNDguMjI4MzQxMzU2NjMzOTA1KSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2Ni42Nzc4NiIgaGVpZ2h0PSIzMzEuMzA5MzMiIHZpZXdCb3g9IjAgMCA5Ny4wMTY4NSA4Ny42NTg5MjMiIGlkPSJzdmcxIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcyBpZD0iZGVmczEiPjwvZGVmcz48ZyBpZD0ibGF5ZXIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzAuOTY4ODEsLTg3Mi4wNjY2OCkiPjxnIGlkPSJnMS03LTEtNi0yLTEtOSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMi03IiB0cmFuc2Zvcm09InNrZXdYKC0xNSkiIGFyaWEtbGFiZWw9IkYiPjwvcGF0aD48L2c+PC9nPjwvc3ZnPjwvZz48L2c+PC9zdmc+PC9nPjwvc3ZnPg==";function nF({projectName:e,currentWorkspaceId:t,brandLabel:a="TaskForce",brandHomeLabel:s="Go to Kanban",onBrandClick:o,runtimeMode:l="local",theme:i=rm,meta:d,actions:m}){const y=r.useRef(null),k=r.useRef(null),[S,h]=r.useState(!0),g=Tg(i)?Oy:Qp,v=String(e||"").trim(),x=String(t||"").trim(),I=x.toLowerCase(),C=!!(v&&(l!=="cloud"||I&&I!=="default")),D=r.useCallback(()=>{if(!C){h(!0);return}const se=y.current,ae=k.current;if(!se||!ae)return;const O=se.getBoundingClientRect().width,_=ae.getBoundingClientRect().width;if(O<=0||_<=0)return;const de=window.getComputedStyle(se),ke=Number.parseFloat(de.columnGap||de.gap||"0")||0,Y=Array.from(se.children).filter(ie=>{if(ie===ae)return!1;const fe=ie.getBoundingClientRect();return fe.width>0&&fe.height>0}),z=Y.reduce((ie,fe)=>ie+fe.getBoundingClientRect().width,0)+_+ke*Y.length;h(z<=O)},[C]);r.useLayoutEffect(()=>{D();const se=y.current,ae=k.current;if(!se||!ae)return;if(typeof ResizeObserver>"u")return window.addEventListener("resize",D),()=>window.removeEventListener("resize",D);const O=new ResizeObserver(D);return O.observe(se),O.observe(ae),()=>O.disconnect()},[D,v,d]);const U=C&&S,L=()=>{if(!x||typeof navigator>"u")return;const se=navigator.clipboard;se?.writeText&&se.writeText(x).catch(()=>{})},X=se=>{se.key!=="Enter"&&se.key!==" "||(se.preventDefault(),L())},me=n.jsxs(n.Fragment,{children:[n.jsx("img",{src:g,alt:"Taskforce Logo",className:p.brandIcon,onError:se=>{const ae=se.currentTarget;ae.src!==Zh?ae.src=Zh:ae.style.display="none"}}),n.jsx("span",{children:a}),l==="cloud"&&n.jsx("span",{className:p.brandCloudSuffix,children:"HQ"})]});return n.jsxs("div",{className:`${p.header} ${en.standaloneHeader}`,children:[n.jsxs("div",{ref:y,className:`${p.headerTitle} ${en.standaloneTitle}`,children:[o?n.jsx("button",{type:"button",className:p.brandHomeButton,onClick:o,title:s,"aria-label":s,children:me}):n.jsx("span",{className:p.brandHomeStatic,children:me}),C&&n.jsxs("span",{ref:k,className:`${p.projectNameGroup} ${U?"":p.projectNameGroupHidden}`.trim(),"aria-hidden":U?void 0:!0,children:[n.jsx("span",{className:p.projectSlash,children:"/"}),n.jsx("span",{className:p.projectName,title:U&&x?`Workspace ID: ${x}`:void 0,role:U&&x?"button":void 0,tabIndex:U&&x?0:void 0,onClick:L,onMouseDown:se=>se.preventDefault(),onKeyDown:X,children:v})]}),d]}),n.jsx("div",{className:p.headerActions,style:{gap:"16px"},children:m})]})}function aF({value:e,placeholder:t,active:a=!1,onChange:s,onClear:o,clearTitle:l}){return n.jsxs("div",{className:p.searchContainer,style:{width:"240px"},children:[n.jsx($k,{size:16,className:p.searchIcon}),n.jsx("input",{type:"text",className:`${p.searchInput} ${a?p.searchActive:""}`,placeholder:t,value:e,onChange:i=>s(i.target.value)}),e&&o&&n.jsx("button",{className:p.clearSearchBtn,onClick:o,title:l,children:n.jsx("span",{"aria-hidden":"true",children:"×"})})]})}function Yh({label:e,value:t,options:a,onChange:s,trailingAction:o,width:l}){return n.jsxs("div",{className:p.groupByContainer,style:l?{width:l}:void 0,children:[n.jsx("span",{className:p.groupByLabel,children:e}),n.jsx("select",{className:`${p.select} ${p.groupBySelect}`,value:t,onChange:i=>s(i.target.value),children:a.map(i=>n.jsx("option",{value:i.value,children:i.label},String(i.value)))}),o]})}function Cp({actions:e}){return n.jsx(n.Fragment,{children:e.map(t=>n.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 Jh(){return n.jsx("div",{className:p.headerDivider})}function rF({icon:e,label:t,onClick:a,disabled:s=!1}){return n.jsxs("button",{className:p.primaryUpdateBtn,onClick:a,disabled:s,children:[e," ",t]})}function If({children:e}){return n.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 sF(){return n.jsx(If,{children:n.jsx("div",{"aria-hidden":"true",style:{minHeight:"32px",flex:1}})})}function oF({categoryFilterOptions:e,typeFilterOptions:t,priorities:a,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:x=[],selectedInitiativeId:I="",setSelectedInitiativeId:C=()=>{},workstreamFilterOptions:D=[],selectedWorkstreamId:U="",setSelectedWorkstreamId:L=()=>{},taskScope:X,setTaskScope:me,showArchive:se,setShowArchive:ae,fetchArchive:O,onDeleteAllDeleted:_,clearFilters:de}){return n.jsxs(n.Fragment,{children:[n.jsx(vy,{}),n.jsx(Ki,{label:s?.category||qe("standalone.categoryLabel"),options:e,selected:o,onChange:ke=>l(ke),variant:"value"}),n.jsx(Ki,{label:s?.type||qe("standalone.typeLabel"),options:t,selected:i,onChange:ke=>d(ke),variant:"value"}),n.jsx(Ki,{label:s?.priority||qe("standalone.priorityLabel"),options:a,selected:m,onChange:ke=>y(ke),variant:"value"}),n.jsx(Ki,{label:qe("standalone.statusLabel"),options:no,selected:k,onChange:ke=>S(ke),variant:"value"}),n.jsx(Ki,{label:qe("standalone.assigneeLabel"),options:v,selected:h,onChange:ke=>g(ke),variant:"value"}),n.jsx("div",{className:p.headerDivider,style:{height:"16px",margin:"0 8px"}}),n.jsx(Eh,{label:"Initiative",options:x,selected:I,onChange:C,allLabel:"All Initiatives",title:"Filter by initiative"}),n.jsx(Eh,{label:"Workstream",options:D,selected:U,onChange:L,allLabel:"All Workstreams",title:"Filter by workstream"}),n.jsx(wy,{scope:X,onScopeChange:ke=>{me(ke),ke==="archived"?(ae(!0),O()):se&&ae(!1)},className:p.groupByContainer,labelClassName:p.groupByLabel}),n.jsx("div",{style:{flex:1}}),X==="deleted"&&_&&n.jsx(by,{onClick:_,className:`${p.bulkArchiveBtn} ${p.taskToolbarAction} ${p.bulkDeleteBtn}`,title:"Empty trash",children:"Empty Trash"}),n.jsx(Sy,{onClick:de})]})}function iF(e){return n.jsx(If,{children:n.jsx(oF,{...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 cF({typeFilters:e,setTypeFilters:t,attachmentFilters:a,setAttachmentFilters:s,clearFilters:o}){return n.jsxs(If,{children:[n.jsx(vy,{}),n.jsx(Ki,{label:"Attachment",options:tm,selected:a,onChange:l=>s(l),variant:"value"}),n.jsx(Ki,{label:"Type",options:em,selected:e,onChange:l=>t(l),variant:"value"}),n.jsx("div",{style:{flex:1}}),n.jsx(Sy,{onClick:o})]})}const lF="_drawerBody_ljth8_1",dF="_paneShell_ljth8_9",uF="_collapsedPaneShell_ljth8_18",mF="_collapsedPaneHeader_ljth8_27",pF="_collapsedPaneLabel_ljth8_39",fF="_treePane_ljth8_49",hF="_treePaneSplit_ljth8_59",gF="_detailPane_ljth8_63",yF="_paneHeader_ljth8_73",kF="_paneHeaderLabel_ljth8_87",vF="_paneContent_ljth8_96",SF="_sectionTitle_ljth8_105",wF="_sectionHeaderRow_ljth8_113",bF="_headerActionGroup_ljth8_120",xF="_toggleActive_ljth8_127",_F="_sectionGroup_ljth8_133",CF="_treeList_ljth8_158",AF="_treeChildren_ljth8_164",IF="_treeRow_ljth8_172",TF="_treeRowDetailOpen_ljth8_184",RF="_treeRowDropReady_ljth8_190",jF="_treeRowDropActive_ljth8_194",NF="_treeRowDropMode_ljth8_200",PF="_treeChevron_ljth8_200",MF="_rowButton_ljth8_201",EF="_detailsButton_ljth8_202",DF="_treeRowDragging_ljth8_206",LF="_treeChevronPlaceholder_ljth8_230",BF="_rowContent_ljth8_252",WF="_rowTopRow_ljth8_262",FF="_referenceBadgeButton_ljth8_271",OF="_referenceBadgeStatic_ljth8_277",$F="_rowTitle_ljth8_298",UF="_rowMeta_ljth8_312",zF="_detailsButtonActive_ljth8_340",HF="_emptyPanel_ljth8_347",GF="_emptyPanelTitle_ljth8_356",VF="_emptyPanelText_ljth8_362",qF="_sectionNote_ljth8_368",KF="_detailHero_ljth8_375",ZF="_detailReferenceRow_ljth8_382",YF="_detailTitle_ljth8_389",JF="_detailDescription_ljth8_396",QF="_detailActionRow_ljth8_407",XF="_metricGrid_ljth8_414",eO="_metricCard_ljth8_421",tO="_editorCard_ljth8_426",nO="_editorField_ljth8_433",aO="_editorLabel_ljth8_439",rO="_editorHint_ljth8_445",sO="_editorActions_ljth8_450",oO="_metricValue_ljth8_456",iO="_metricLabel_ljth8_463",cO="_progressTrack_ljth8_470",lO="_progressFill_ljth8_478",dO="_listCard_ljth8_484",uO="_activityTimelineList_ljth8_493",mO="_activityTimelineEmpty_ljth8_502",pO="_deferredPanelFallback_ljth8_506",fO="_sectionDropReady_ljth8_532",hO="_sectionDropActive_ljth8_537",gO="_sectionDropMode_ljth8_543",yO="_attachReferenceRow_ljth8_547",kO="_attachReferenceInput_ljth8_554",vO="_listItem_ljth8_559",SO="_listItemButton_ljth8_568",wO="_detailCardButton_ljth8_577",bO="_listItemText_ljth8_582",xO="_listItemTitle_ljth8_597",_O="_listItemMeta_ljth8_611",CO="_detailChildCard_ljth8_616",AO="_detailChildCardArchived_ljth8_628",IO="_detailChildCardTopRow_ljth8_633",TO="_detailChildReferenceRow_ljth8_642",RO="_taskStatusIcon_ljth8_649",_e={drawerBody:lF,paneShell:dF,collapsedPaneShell:uF,collapsedPaneHeader:mF,collapsedPaneLabel:pF,treePane:fF,treePaneSplit:hF,detailPane:gF,paneHeader:yF,paneHeaderLabel:kF,paneContent:vF,sectionTitle:SF,sectionHeaderRow:wF,headerActionGroup:bF,toggleActive:xF,sectionGroup:_F,treeList:CF,treeChildren:AF,treeRow:IF,treeRowDetailOpen:TF,treeRowDropReady:RF,treeRowDropActive:jF,treeRowDropMode:NF,treeChevron:PF,rowButton:MF,detailsButton:EF,treeRowDragging:DF,treeChevronPlaceholder:LF,rowContent:BF,rowTopRow:WF,referenceBadgeButton:FF,referenceBadgeStatic:OF,rowTitle:$F,rowMeta:UF,detailsButtonActive:zF,emptyPanel:HF,emptyPanelTitle:GF,emptyPanelText:VF,sectionNote:qF,detailHero:KF,detailReferenceRow:ZF,detailTitle:YF,detailDescription:JF,detailActionRow:QF,metricGrid:XF,metricCard:eO,editorCard:tO,editorField:nO,editorLabel:aO,editorHint:rO,editorActions:sO,metricValue:oO,metricLabel:iO,progressTrack:cO,progressFill:lO,listCard:dO,activityTimelineList:uO,activityTimelineEmpty:mO,deferredPanelFallback:pO,sectionDropReady:fO,sectionDropActive:hO,sectionDropMode:gO,attachReferenceRow:yO,attachReferenceInput:kO,listItem:vO,listItemButton:SO,detailCardButton:wO,listItemText:bO,listItemTitle:xO,listItemMeta:_O,detailChildCard:CO,detailChildCardArchived:AO,detailChildCardTopRow:IO,detailChildReferenceRow:TO,taskStatusIcon:RO},jO="_header_c26na_1",NO="_title_c26na_31",PO="_icon_c26na_40",Ap={header:jO,title:NO,icon:PO};function MO({label:e,count:t,showZeroCount:a=!1,expanded:s,expandedTitle:o,collapsedTitle:l,onToggle:i,className:d=""}){const m=typeof t=="number"&&(a||t>0),y=s?al:Xc;return n.jsxs("button",{type:"button",className:`${Ap.header} ${d}`.trim(),onClick:i,"aria-expanded":s,title:s?o:l,children:[n.jsxs("span",{className:Ap.title,children:[e,m?` (${t})`:""]}),n.jsx(y,{className:Ap.icon,size:14,"aria-hidden":"true"})]})}const EO=Ue.lazy(()=>As(()=>import("./EntityActivityTimeline-DD33onAC.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),DO=Ue.lazy(()=>As(()=>import("./ContextAttachmentManager-BAmEyLHL.js"),__vite__mapDeps([8,1,9,2,3,4,5])).then(e=>({default:e.ContextAttachmentManager}))),cd=332,to=392,Ip=56;function $y(e,t,a,s,o){return(e?Ip:cd)+(t?a?Ip:to:0)+(s?o?Ip:to:0)}function LO(e,t){const a=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===a)&&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:a=!0}){const[s,o]=Ue.useState(!1),l=Ue.useCallback(async i=>{i.stopPropagation();try{await navigator.clipboard.writeText(e),o(!0),window.setTimeout(()=>o(!1),1200)}catch{o(!1)}},[e]);return a?n.jsx(ly,{copied:s,label:e,onClick:l,title:`Copy ${t} reference`,ariaLabel:s?`Copied ${t} reference`:`Copy ${t} reference`,className:_e.referenceBadgeButton,children:e}):n.jsx("span",{className:`${p.taskIdBadge} ${_e.referenceBadgeStatic}`.trim(),children:n.jsx("span",{children:e})})}function Rp({rowId:e,rowType:t,referenceLabel:a,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",x=t==="initiative"&&g==="planning-workstream",I=t==="workstream"?"planning-workstream-target":"planning-initiative-target",{setNodeRef:C,isOver:D}=sf({id:`${I}:${e}`,data:t==="workstream"?{type:I,workstreamId:e}:{type:I,initiativeId:e}}),U=t==="workstream",{attributes:L,listeners:X,setNodeRef:me,transform:se,isDragging:ae}=mv({id:`planning-workstream:${e}`,data:{type:"planning-workstream",workstreamId:e},disabled:!U}),O=U&&se?{transform:rf.Translate.toString(se)}:void 0,_=v||x;return n.jsxs("div",{ref:C,style:O,className:`${_e.treeRow} ${i?_e.treeRowDetailOpen:""} ${_?_e.treeRowDropReady:""} ${D?_e.treeRowDropActive:""} ${ae?_e.treeRowDragging:""} ${_?_e.treeRowDropMode:""}`,children:[d?n.jsx("button",{type:"button",className:_e.treeChevron,onClick:y,title:m?"Collapse workstreams":"Expand workstreams",children:m?n.jsx(al,{size:15}):n.jsx(Xc,{size:15})}):n.jsx("span",{className:`${_e.treeChevron} ${_e.treeChevronPlaceholder}`,"aria-hidden":"true"}),n.jsxs("div",{className:_e.rowContent,children:[n.jsxs("div",{className:_e.rowTopRow,children:[a?n.jsx(ld,{label:a,entityType:t}):n.jsx("span",{"aria-hidden":"true"}),n.jsx("button",{type:"button",className:`${_e.detailsButton} ${l?_e.detailsButtonActive:""}`,onClick:k,title:l?"Clear board scope":"Scope board to this item",children:n.jsx(fg,{size:14})})]}),n.jsxs("button",{type:"button",ref:U?me:void 0,className:_e.rowButton,onClick:S,...U?L:{},...U?X:{},children:[n.jsx("span",{className:_e.rowTitle,children:s}),n.jsx("span",{className:_e.rowMeta,children:o})]})]})]})}function jp({label:e,onExpand:t}){return n.jsx("div",{className:`${_e.paneShell} ${_e.collapsedPaneShell}`.trim(),children:n.jsxs("div",{className:_e.collapsedPaneHeader,children:[n.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:`Expand ${e}`,children:n.jsx(Xc,{size:16})}),n.jsx("span",{className:_e.collapsedPaneLabel,children:e})]})})}function Qh(){return n.jsxs("div",{className:_e.deferredPanelFallback,"aria-hidden":"true",children:[n.jsx("span",{}),n.jsx("span",{}),n.jsx("span",{})]})}function BO({initiatives:e,standaloneWorkstreams:t,allStandaloneWorkstreams:a=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[x,I]=Ue.useState(!1),C=Ue.useCallback(L=>{if(!x)return L.workstreams;const X=new Set(L.workstreams.map(se=>se.id)),me=(L.allWorkstreams||[]).filter(se=>!!se.isArchived&&!X.has(se.id));return[...L.workstreams,...me]},[x]),D=Ue.useMemo(()=>{if(!x)return t;const L=new Set(t.map(me=>me.id)),X=a.filter(me=>!!me.isArchived&&!L.has(me.id));return[...t,...X]},[a,x,t]),U=Ue.useMemo(()=>{const L=e.reduce((me,se)=>me+(se.allWorkstreams||[]).filter(ae=>!!ae.isArchived).length,0),X=a.filter(me=>!!me.isArchived).length;return L+X},[a,e]);return n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:_e.sectionGroup,children:[n.jsxs("div",{className:_e.sectionHeaderRow,children:[n.jsx("div",{className:_e.sectionTitle,children:"Initiatives"}),n.jsxs("div",{className:_e.headerActionGroup,children:[U>0?n.jsx("button",{type:"button",className:`tf-control-icon ${x?_e.toggleActive:""}`.trim(),title:x?"Hide archived workstreams in tray":"Show archived workstreams in tray","aria-label":x?"Hide archived workstreams in tray":"Show archived workstreams in tray","aria-pressed":x,onClick:()=>I(L=>!L),children:x?n.jsx(af,{size:15}):n.jsx(pg,{size:15})}):null,n.jsx("button",{type:"button",className:"tf-control-icon",title:"Create initiative","aria-label":"Create initiative",onClick:m,children:n.jsx(ro,{size:15})})]})]}),n.jsx("div",{className:_e.treeList,children:e.length===0?n.jsxs("div",{className:_e.emptyPanel,children:[n.jsx("div",{className:_e.emptyPanelTitle,children:"No initiatives yet"}),n.jsxs("div",{className:_e.emptyPanelText,children:["Initiatives give larger efforts a clear home without crowding the task board. Use the ",n.jsx("code",{children:"+"})," action above to create the first one."]})]}):e.map(L=>{const X=l.has(L.id),me=C(L),se=L.workstreamCount||0,ae=me.filter(de=>!!de.isArchived).length,_=`${x&&ae>0?`${se} workstreams + ${ae} archived`:`${se} workstreams`} • ${L.taskCount} tasks${L.isArchived?" • archived":""}`;return n.jsxs("div",{children:[n.jsx(Rp,{rowId:L.id,rowType:"initiative",referenceLabel:os(L),title:L.title,meta:_,active:s===L.id&&!o,detailOpen:i?.type==="initiative"&&i.item.id===L.id,canExpand:me.length>0,expanded:X,onToggleExpand:()=>k(L.id),onToggleScope:()=>S(L.id),onToggleDetails:()=>{if(i?.type==="initiative"&&i.item.id===L.id){g("");return}g(L.id)}}),X&&me.length>0&&n.jsx("div",{className:_e.treeChildren,children:me.map(de=>n.jsx(Rp,{rowId:de.id,rowType:"workstream",referenceLabel:Eo(de),title:de.title,meta:`${de.taskCount} tasks • ${de.progressPercent}% complete${de.isArchived?" • archived":""}`,active:o===de.id,detailOpen:i?.type==="workstream"&&i.item.id===de.id||d?.kind==="detail"&&d.detail.item.id===de.id,onToggleScope:()=>h(de.id,L.id),onToggleDetails:()=>{if(d?.kind==="detail"&&d.detail.item.id===de.id){v("");return}if(i?.type==="workstream"&&i.item.id===de.id){v("");return}v(de.id)}},de.id))})]},L.id)})})]}),n.jsxs("div",{className:_e.sectionGroup,children:[n.jsxs("div",{className:_e.sectionHeaderRow,children:[n.jsx("div",{className:_e.sectionTitle,children:"Workstreams"}),n.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream","aria-label":"Create workstream",onClick:y,children:n.jsx(ro,{size:15})})]}),n.jsx("div",{className:_e.treeList,children:D.length===0?n.jsxs("div",{className:_e.emptyPanel,children:[n.jsx("div",{className:_e.emptyPanelTitle,children:"No standalone workstreams yet"}),n.jsxs("div",{className:_e.emptyPanelText,children:["Smaller projects can still use workstreams without needing initiative-level structure. Use the ",n.jsx("code",{children:"+"})," action above to add one."]})]}):D.map(L=>n.jsx(Rp,{rowId:L.id,rowType:"workstream",referenceLabel:Eo(L),title:L.title,meta:`${L.taskCount} tasks • ${L.progressPercent}% complete${L.isArchived?" • archived":""}`,active:o===L.id,detailOpen:i?.type==="workstream"&&i.item.id===L.id||d?.kind==="detail"&&d.detail.item.id===L.id,onToggleScope:()=>h(L.id,null),onToggleDetails:()=>{if(i?.type==="workstream"&&i.item.id===L.id){v("");return}v(L.id)}},L.id))})]})]})}function Xh({detail:e,currentWorkspaceId:t,onOpenNestedWorkstreamDetails:a,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:x,parentInitiative:I=null,assigneeOptions:C}){const[D,U]=Ue.useState(""),[L,X]=Ue.useState(!1),[me,se]=Ue.useState(!0),{active:ae}=bg(),O=String(ae?.data?.current?.type||""),_=e.type==="workstream"&&O==="task-card",de=e.type==="initiative"&&O==="planning-workstream",ke=e.type==="initiative"?"planning-initiative-target":"planning-workstream-target",{setNodeRef:Y,isOver:P}=sf({id:`${ke}:detail:${e.item.id}`,data:e.type==="initiative"?{type:ke,initiativeId:e.item.id}:{type:ke,workstreamId:e.item.id}}),z=e.type==="initiative"?"Workstreams":"Tasks",ie=Ue.useMemo(()=>{if(e.type!=="initiative")return[];const M=new Set(e.item.workstreams.map(be=>be.id)),$=(e.item.allWorkstreams||[]).filter(be=>!!be.isArchived&&!M.has(be.id));return[...e.item.workstreams,...$]},[e.item,e.type]),fe=Ue.useMemo(()=>e.type!=="workstream"?[]:e.item.tasks||[],[e.item,e.type]),q=e.type==="initiative"?ie.filter(M=>!!M.isArchived).length:fe.filter(M=>!!M.isArchived).length,Me=L?ie:ie.filter(M=>!M.isArchived),xe=L?fe:fe.filter(M=>!M.isArchived),oe=e.type==="initiative"?"Initiative":"Workstream",le=e.type==="initiative"?os(e.item):Eo(e.item);Ue.useEffect(()=>{U(""),X(!1),se(!0)},[e.item.id,e.type]);const Ie=Ue.useCallback(()=>{const M=D.trim();M&&(e.type==="initiative"?h?.(e.item.id,M):S?.(e.item.id,M),U(""))},[D,e.item.id,e.type,S,h]),Ee=e.type==="initiative"?"Attach workstream to initiative":"Attach task to workstream",je=e.type==="initiative"?"archived workstreams":"archived tasks",Pe=e.type==="workstream"&&I?os(I):"",K=Ue.useMemo(()=>{const M=new Map;for(const $ of C){const be=String($.value||"").trim();be&&(M.set(be,$),M.set(be.toLowerCase(),$))}return M},[C]),A=Ue.useCallback((M,$,be)=>{if(be&&be.trim())return be.trim();const H=String(M||"").trim();if(!H)return $==="ai"?"AI Agent":"You";const ce=K.get(H)||K.get(H.toLowerCase());return ce?.label?ce.label:H},[K]),b=Ue.useCallback(M=>{const $=String(M.actorId||"").trim(),be=K.get($)||K.get($.toLowerCase()),H=M.actorProfile||be||null,ce=M.actorType==="system"?"system":M.actorType==="ai"||H?.kind==="ai"||be?.kind==="agent"?"agent":M.actorType==="human"||H?.kind==="human"||be?.kind==="member"?"member":M.fallbackKind||"member",he=String(H&&"icon"in H&&H.icon?H.icon:ce==="agent"?"Bot":ce==="member"?"User":"ClipboardList"),G=tc[he]||(ce==="agent"?nm:ce==="member"?ii:dg);return{kind:ce,label:ce==="system"?"System":A($,ce==="agent"?"ai":"human",H&&"label"in H&&H.label||null),color:H&&"color"in H&&H.color||void 0,ActorIcon:G}},[K,A]),R=Ue.useCallback((M,$)=>{const be=String($||"").trim();if(be){if(M==="ownerId")return K.get(be)?.label||K.get(be.toLowerCase())?.label||be;if(M==="initiativeId"&&I&&be===I.id)return os(I)||I.title}},[K,I]),Q=Ue.useMemo(()=>ky({activity:e.item.activity,comments:e.item.comments}),[e.item.activity,e.item.comments]).length;return n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:_e.detailHero,children:[le?n.jsxs("div",{className:_e.detailReferenceRow,children:[e.type==="workstream"?n.jsxs(n.Fragment,{children:[n.jsx(Zi,{onClick:M=>{if(M.stopPropagation(),Pe){k?.(e.item.id,null);return}s()},title:Pe?"Remove from initiative":"Attach to initiative",ariaLabel:Pe?"Remove from initiative":"Attach to initiative",children:Pe?n.jsx(Zu,{size:13}):n.jsx(am,{size:13})}),n.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),Pe?n.jsxs(n.Fragment,{children:[n.jsx(ld,{label:Pe,entityType:"initiative"}),n.jsx("span",{className:p.taskHierarchyDivider,children:"/"})]}):null]}):null,n.jsx(ld,{label:le,entityType:e.type})]}):null,n.jsx("h3",{className:_e.detailTitle,children:e.item.title}),n.jsx("p",{className:_e.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.")}),n.jsx("div",{className:_e.progressTrack,"aria-label":`${e.item.progressPercent}% complete`,children:n.jsx("div",{className:_e.progressFill,style:{width:`${e.item.progressPercent}%`}})}),n.jsxs("div",{className:_e.detailActionRow,children:[n.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:s,children:n.jsxs("span",{children:["Edit ",oe]})}),e.item.isArchived?n.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:l,children:n.jsx("span",{children:"Unarchive"})}):n.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:o,children:n.jsx("span",{children:"Archive"})})]})]}),n.jsxs("div",{className:_e.metricGrid,children:[n.jsxs("div",{className:_e.metricCard,children:[n.jsx("span",{className:_e.metricValue,children:e.item.taskCount}),n.jsx("span",{className:_e.metricLabel,children:"Tasks in scope"})]}),n.jsxs("div",{className:_e.metricCard,children:[n.jsx("span",{className:_e.metricValue,children:e.item.completedTaskCount}),n.jsx("span",{className:_e.metricLabel,children:"Done / terminal"})]}),n.jsxs("div",{className:_e.metricCard,children:[n.jsx("span",{className:_e.metricValue,children:e.item.ownerLabel||"Unassigned"}),n.jsx("span",{className:_e.metricLabel,children:"Owner"})]}),n.jsxs("div",{className:_e.metricCard,children:[n.jsx("span",{className:_e.metricValue,children:(e.item.commentCount||0)+(e.item.attachmentCount||0)}),n.jsx("span",{className:_e.metricLabel,children:"Context items"})]})]}),n.jsxs("div",{ref:Y,className:`${_e.listCard} ${_||de?_e.sectionDropReady:""} ${P?_e.sectionDropActive:""} ${_||de?_e.sectionDropMode:""}`.trim(),children:[n.jsxs("div",{className:_e.sectionHeaderRow,children:[n.jsx("div",{className:_e.sectionTitle,children:z}),n.jsxs("div",{className:_e.headerActionGroup,children:[q>0?n.jsx("button",{type:"button",className:`tf-control-icon ${L?_e.toggleActive:""}`.trim(),title:L?`Hide ${je}`:`Show ${je}`,"aria-label":L?`Hide ${je}`:`Show ${je}`,"aria-pressed":L,onClick:()=>X(M=>!M),children:L?n.jsx(af,{size:15}):n.jsx(pg,{size:15})}):null,e.type==="initiative"?n.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:n.jsx(ro,{size:15})}):n.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:n.jsx(ro,{size:15})})]})]}),n.jsxs("div",{className:_e.attachReferenceRow,children:[n.jsx(Zi,{onClick:M=>{M.stopPropagation(),Ie()},disabled:!D.trim(),title:Ee,ariaLabel:Ee,children:n.jsx(am,{size:13})}),n.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),n.jsx("input",{type:"text",className:`${p.input} ${_e.attachReferenceInput}`.trim(),placeholder:e.type==="initiative"?"Paste workstream reference (e.g. WS-123)":"Paste task reference (e.g. T-123)",value:D,onChange:M=>U(M.target.value),onKeyDown:M=>{M.key==="Enter"&&(M.preventDefault(),Ie())}})]}),e.type==="initiative"?Me.length>0?Me.map(M=>{const $=Eo(M),be=()=>a?.(M.id);return n.jsx("div",{className:`${_e.listItemButton} ${_e.detailCardButton}`.trim(),children:n.jsxs("div",{className:`${_e.listItem} ${_e.detailChildCard} ${M.isArchived?_e.detailChildCardArchived:""}`.trim(),children:[n.jsx("div",{className:_e.detailChildCardTopRow,children:n.jsxs("div",{className:_e.detailChildReferenceRow,children:[n.jsx(Zi,{onClick:H=>{H.stopPropagation(),k?.(M.id,null)},title:"Remove from initiative",ariaLabel:"Remove from initiative",children:n.jsx(Zu,{size:13})}),n.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),$?n.jsx(ld,{label:$,entityType:"workstream"}):n.jsx("span",{"aria-hidden":"true"})]})}),n.jsxs("div",{role:"button",tabIndex:0,className:_e.listItemText,onClick:be,onKeyDown:H=>{H.key!=="Enter"&&H.key!==" "||(H.preventDefault(),be())},children:[n.jsx("span",{className:_e.listItemTitle,children:M.title}),n.jsxs("span",{className:_e.listItemMeta,children:[M.taskCount," tasks • ",M.progressPercent,"% complete",M.isArchived?" • archived":""]})]})]})},M.id)}):n.jsxs("div",{className:_e.emptyPanel,children:[n.jsx("div",{className:_e.emptyPanelTitle,children:"No workstreams yet"}),n.jsx("div",{className:_e.emptyPanelText,children:"Add the first workstream to break the initiative into clearer lanes of execution."})]}):xe.length>0?[...xe].sort((M,$)=>{const be=pd(M.status).value==="done",H=pd($.status).value==="done";return be===H?0:be?1:-1}).map(M=>{const $=M.referenceNumber?`T-${M.referenceNumber}`:"",be=pd(M.status),H=tc[be.icon||"Square"],ce=Da(be.color)||"var(--text-secondary)",he=()=>m?.(M.id),G=`${Tp(M.status)}${M.isArchived?" • archived":""}`;return n.jsx("div",{className:`${_e.listItemButton} ${_e.detailCardButton}`.trim(),children:n.jsxs("div",{className:`${_e.listItem} ${_e.detailChildCard} ${M.isArchived?_e.detailChildCardArchived:""}`.trim(),children:[n.jsxs("div",{className:_e.detailChildCardTopRow,children:[n.jsxs("div",{className:_e.detailChildReferenceRow,children:[n.jsx(Zi,{onClick:re=>{re.stopPropagation(),y?.(M.id,e.item.id)},title:"Remove from workstream",ariaLabel:"Remove from workstream",children:n.jsx(Zu,{size:13})}),n.jsx("span",{className:p.taskHierarchyDivider,children:"/"}),$?n.jsx(ld,{label:$,entityType:"task"}):n.jsx("span",{"aria-hidden":"true"})]}),n.jsx("span",{className:_e.taskStatusIcon,style:{color:ce},"aria-label":be.shortLabel||Tp(M.status),title:be.shortLabel||Tp(M.status),children:H?n.jsx(H,{size:18,strokeWidth:2.4}):null})]}),n.jsxs("div",{role:"button",tabIndex:0,className:_e.listItemText,onClick:he,onKeyDown:re=>{re.key!=="Enter"&&re.key!==" "||(re.preventDefault(),he())},children:[n.jsx("span",{className:_e.listItemTitle,children:M.title}),n.jsx("span",{className:_e.listItemMeta,children:G})]})]})},M.id)}):n.jsxs("div",{className:_e.sectionNote,children:["No tasks are linked to this workstream yet. Use the ",n.jsx("code",{children:"+"})," action above to add the first one."]})]}),n.jsx("div",{className:_e.listCard,children:n.jsx(Ue.Suspense,{fallback:n.jsx(Qh,{}),children:n.jsx(DO,{ownerType:e.type,ownerId:e.item.id,ownerReferenceLabel:le,workspaceId:t,attachments:e.item.attachments||[],onAddAttachment:M=>g?.(e.type,e.item.id,M),onRemoveAttachment:M=>v?.(e.type,e.item.id,M),onUpdateAttachmentCaption:(M,$)=>x?.(e.type,e.item.id,M,$)})})}),n.jsxs("div",{className:_e.listCard,children:[n.jsx(MO,{label:"Recent Activity",count:Q,showZeroCount:!0,expanded:me,expandedTitle:"Hide recent activity",collapsedTitle:"Show recent activity",onToggle:()=>se(M=>!M)}),me?n.jsx(Ue.Suspense,{fallback:n.jsx(Qh,{}),children:n.jsx(EO,{activity:e.item.activity,comments:e.item.comments,formatFieldValue:R,resolveActorPresentation:b,onOpenTaskById:m,emptyMessage:`No ${e.type} activity yet.`,listClassName:_e.activityTimelineList,emptyClassName:_e.activityTimelineEmpty})}):null]})]})}function eg({editor:e,draftTitle:t,draftDescription:a,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 x=e.entityType==="initiative"?"Initiative":"Workstream",I=g?e.mode==="create"?`Creating ${x}...`:`Saving ${x}...`:e.mode==="create"?`Create ${x}`:`Save ${x}`,C=Ue.useMemo(()=>LO(l,s),[l,s]),D=Ue.useCallback(L=>{L.preventDefault(),h()},[h]),U=Ue.useCallback(()=>{e.mode!=="edit"||e.entityType!=="workstream"||v?.(e.targetId)},[e,v]);return n.jsxs("form",{className:_e.editorCard,onSubmit:D,children:[n.jsxs("div",{className:_e.editorField,children:[n.jsx("label",{className:_e.editorLabel,children:"Title"}),n.jsx("input",{className:p.input,disabled:g,value:t,onChange:L=>d(L.target.value),placeholder:e.entityType==="initiative"?"Q3 Product Launch":"Content Production"})]}),n.jsxs("div",{className:_e.editorField,children:[n.jsx("label",{className:_e.editorLabel,children:"Description"}),n.jsx("textarea",{className:p.textarea,disabled:g,value:a,onChange:L=>m(L.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"&&n.jsxs("div",{className:_e.editorField,children:[n.jsx("label",{className:_e.editorLabel,children:"Initiative"}),i&&n.jsxs("div",{className:_e.editorHint,children:["Current: ",i.title]}),n.jsxs("div",{className:_e.attachReferenceRow,children:[e.mode==="edit"&&n.jsxs(n.Fragment,{children:[n.jsx(Zi,{onClick:L=>{L.stopPropagation(),U()},disabled:g||!o.trim(),title:"Attach workstream to initiative",ariaLabel:"Attach workstream to initiative",children:n.jsx(am,{size:13})}),n.jsx("span",{className:p.taskHierarchyDivider,children:"/"})]}),n.jsx("input",{type:"text",className:`${p.input} ${_e.attachReferenceInput}`.trim(),disabled:g,placeholder:"Paste initiative reference (e.g. IN-123)",value:o,onChange:L=>k(L.target.value),onKeyDown:L=>{L.key==="Enter"&&(L.preventDefault(),U())}})]})]}),n.jsxs("div",{className:_e.editorField,children:[n.jsx("label",{className:_e.editorLabel,children:"Owner"}),n.jsxs("select",{className:`${p.select} ${p.groupBySelect}`,disabled:g,value:s,onChange:L=>y(L.target.value),children:[n.jsx("option",{value:"",children:"Unassigned"}),C.map(L=>n.jsx("option",{value:L.value,children:L.label},L.value))]})]}),n.jsxs("div",{className:_e.editorActions,children:[n.jsx("button",{type:"button",className:p.secondaryHeaderBtn,onClick:S,disabled:g,children:"Cancel"}),n.jsx("button",{type:"submit",className:p.primaryUpdateBtn,disabled:g,children:I})]})]})}function WO({open:e,leftOffset:t=0,initiatives:a,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:x,draftOwner:I,draftInitiativeId:C,onChangeDraftTitle:D,onChangeDraftDescription:U,onChangeDraftOwner:L,onChangeDraftInitiativeId:X,onCollapseTreePane:me,onExpandTreePane:se,onCollapsePrimaryPane:ae,onExpandPrimaryPane:O,onCollapseSecondaryPane:_,onExpandSecondaryPane:de,onBackFromSecondary:ke,treeCollapsed:Y,primaryCollapsed:P,secondaryCollapsed:z,onCancelEditor:ie,onSubmitEditor:fe,isSubmittingEditor:q,onCreateInitiative:Me,onCreateWorkstream:xe,onToggleInitiative:oe,onSelectInitiative:le,onSelectWorkstream:Ie,onOpenInitiativeDetails:Ee,onOpenWorkstreamDetails:je,onOpenNestedWorkstreamDetails:Pe,onEditInitiative:K,onEditWorkstream:A,onArchiveInitiative:b,onUnarchiveInitiative:R,onArchiveWorkstream:F,onUnarchiveWorkstream:Q,onCreateTaskInWorkstream:M,onCreateWorkstreamInInitiative:$,onAssignInitiativeToWorkstream:be,onOpenTaskById:H,onRemoveTaskFromWorkstream:ce,onAttachTaskToWorkstreamByReference:he,onAttachWorkstreamToInitiativeByReference:G,onAddPlanningContextFile:re,onRemovePlanningContextFile:ue,onUpdatePlanningContextCaption:Re}){const Te=!!(m||y),De=!!k,Oe=$y(Y,Te,P,De,z),vt=y?y.entityType==="initiative"?y.mode==="create"?"New Initiative":"Edit Initiative":y.mode==="create"?"New Workstream":"Edit Workstream":m?.type==="initiative"?"Initiative":"Workstream",st=k?.kind==="editor"?k.editor.mode==="create"?"New Workstream":"Edit Workstream":"Workstream",kt=Ue.useCallback(Ye=>{const _t=String(Ye.initiativeId||"").trim();return _t&&a.find(dt=>dt.id===_t)||null},[a]);return n.jsx("aside",{style:{position:"absolute",top:0,left:e?`${t}px`:`${t-Oe-24}px`,bottom:0,width:`${Oe}px`,minWidth:`${Oe}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:n.jsxs("div",{className:_e.drawerBody,children:[Y?n.jsx(jp,{label:"Planning",onExpand:se}):n.jsxs("div",{className:`${_e.paneShell} ${p.appScrollbar} tf-scrollbar ${_e.treePane} ${Te&&!P?_e.treePaneSplit:""}`.trim(),style:{flex:`0 0 ${cd}px`,width:`${cd}px`,minWidth:`${cd}px`,maxWidth:`${cd}px`},children:[n.jsxs("div",{className:_e.paneHeader,children:[n.jsx("span",{className:_e.paneHeaderLabel,children:"Planning"}),n.jsx("button",{type:"button",className:"tf-control-icon",onClick:me,children:n.jsx(Mo,{size:16})})]}),n.jsx("div",{className:_e.paneContent,children:n.jsx(BO,{initiatives:a,standaloneWorkstreams:s,allStandaloneWorkstreams:o,activeInitiativeId:l,activeWorkstreamId:i,expandedInitiativeIds:d,detail:m,secondaryPane:k,onCreateInitiative:Me,onCreateWorkstream:xe,onToggleInitiative:oe,onSelectInitiative:le,onSelectWorkstream:Ie,onOpenInitiativeDetails:Ee,onOpenWorkstreamDetails:je})})]}),Te&&(P?n.jsx(jp,{label:vt,onExpand:O}):n.jsxs("div",{className:`${_e.paneShell} ${p.appScrollbar} tf-scrollbar ${_e.detailPane}`.trim(),style:{flex:`0 0 ${to}px`,width:`${to}px`,minWidth:`${to}px`,maxWidth:`${to}px`},children:[n.jsxs("div",{className:_e.paneHeader,children:[n.jsx("span",{className:_e.paneHeaderLabel,children:vt}),n.jsx("button",{type:"button",className:"tf-control-icon",onClick:ae,children:n.jsx(Mo,{size:16})})]}),n.jsx("div",{className:_e.paneContent,children:y?n.jsx(eg,{editor:y,draftTitle:v,draftDescription:x,draftOwner:I,draftInitiativeId:C,assigneeOptions:h,draftInitiativeSummary:g,onChangeDraftTitle:D,onChangeDraftDescription:U,onChangeDraftOwner:L,onChangeDraftInitiativeId:X,onCancel:ie,onSubmit:fe,isSubmitting:q,onAssignInitiativeToWorkstream:be}):m?n.jsx(Xh,{detail:m,currentWorkspaceId:S,assigneeOptions:h,onOpenNestedWorkstreamDetails:m.type==="initiative"?Pe:void 0,onCreateTaskInWorkstream:m.type==="workstream"?M:void 0,onCreateWorkstreamInInitiative:m.type==="initiative"?$:void 0,onOpenTaskById:m.type==="workstream"?H:void 0,onRemoveTaskFromWorkstream:m.type==="workstream"?ce:void 0,onAssignInitiativeToWorkstream:be,onAttachTaskToWorkstreamByReference:m.type==="workstream"?he:void 0,onAttachWorkstreamToInitiativeByReference:m.type==="initiative"?G:void 0,parentInitiative:m.type==="workstream"?kt(m.item):null,onEdit:()=>m.type==="initiative"?K(m.item.id):A(m.item.id),onArchive:()=>m.type==="initiative"?b(m.item.id):F(m.item.id),onUnarchive:()=>m.type==="initiative"?R(m.item.id):Q(m.item.id),onAddPlanningContextFile:re,onRemovePlanningContextFile:ue,onUpdatePlanningContextCaption:Re}):null})]})),De&&(z?n.jsx(jp,{label:st,onExpand:de}):n.jsxs("div",{className:`${_e.paneShell} ${p.appScrollbar} tf-scrollbar ${_e.detailPane}`.trim(),style:{flex:`0 0 ${to}px`,width:`${to}px`,minWidth:`${to}px`,maxWidth:`${to}px`},children:[n.jsxs("div",{className:_e.paneHeader,children:[n.jsx("span",{className:_e.paneHeaderLabel,children:st}),n.jsx("button",{type:"button",className:"tf-control-icon",onClick:_,children:n.jsx(Mo,{size:16})})]}),n.jsx("div",{className:_e.paneContent,children:k?.kind==="editor"?n.jsx(eg,{editor:k.editor,draftTitle:v,draftDescription:x,draftOwner:I,draftInitiativeId:C,assigneeOptions:h,draftInitiativeSummary:g,onChangeDraftTitle:D,onChangeDraftDescription:U,onChangeDraftOwner:L,onChangeDraftInitiativeId:X,onCancel:ke,onSubmit:fe,isSubmitting:q,onAssignInitiativeToWorkstream:be}):k?n.jsx(Xh,{detail:k.detail,currentWorkspaceId:S,assigneeOptions:h,onCreateTaskInWorkstream:M,onOpenTaskById:H,onRemoveTaskFromWorkstream:ce,onAssignInitiativeToWorkstream:be,onAttachTaskToWorkstreamByReference:he,parentInitiative:kt(k.detail.item),onEdit:()=>A(k.detail.item.id),onArchive:()=>F(k.detail.item.id),onUnarchive:()=>Q(k.detail.item.id),onAddPlanningContextFile:re,onRemovePlanningContextFile:ue,onUpdatePlanningContextCaption:Re}):null})]}))]})})}const FO={"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",tg="initiatives.workspace_access",OO=Object.entries(FO).reduce((e,[t,a])=>(e[t]={key:t,enabled:!!a.enabled,description:String(a.description||""),owner:String(a.owner||""),removalMilestone:String(a.removalMilestone||"")},e),{});function $O(e){const t=String(e||"").trim();return t&&OO[t]||null}function UO(e){const t=$O(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 nd(e){return UO(e.featureKey)}const zO=["tasks","docs","annotate","workflows","agents"];function HO(e){const t=e?.featureAccess||{},a={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 zO.map(s=>a[s])}function GO(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 ng(e,t){const a=t.find(s=>s.id===e);return a?a.enabled?a.id:a.fallbackModuleId:"tasks"}const VO="_weekLabel_vet2o_1",qO="_sectionTitle_vet2o_6",KO="_calendarHeader_vet2o_11",ZO="_monthLabel_vet2o_18",YO="_weekdayGrid_vet2o_23",JO="_weekdayLabel_vet2o_30",QO="_calendarGrid_vet2o_36",XO="_calendarDay_vet2o_42",e5="_calendarDayDot_vet2o_55",t5="_jumpRow_vet2o_67",n5="_displaySection_vet2o_73",a5="_toggleLabel_vet2o_79",r5="_expiredSummary_vet2o_87",s5="_actionButton_vet2o_95",Ha={weekLabel:VO,sectionTitle:qO,calendarHeader:KO,monthLabel:ZO,weekdayGrid:YO,weekdayLabel:JO,calendarGrid:QO,calendarDay:XO,calendarDayDot:e5,jumpRow:t5,displaySection:n5,toggleLabel:a5,expiredSummary:r5,actionButton:s5},ag=["mon","tue","wed","thu","fri","sat","sun"],o5={mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"};function Jc(e){const t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${t}-${a}-${s}`}function dd(e){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;const a=new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));return Number.isNaN(a.getTime())?null:a}function Xp(e,t){const a=e.getDay(),s=t==="sunday"?-a:a===0?-6:1-a,o=new Date(e);return o.setHours(0,0,0,0),o.setDate(o.getDate()+s),o}function i5(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 a=new Date(e);return a.setDate(e.getDate()+t),a}function c5(e){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;const a=new Date(Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3]))),s=a.getUTCDay()||7;a.setUTCDate(a.getUTCDate()+4-s);const o=new Date(Date.UTC(a.getUTCFullYear(),0,1)),l=Math.ceil(((a.getTime()-o.getTime())/864e5+1)/7);return`${a.getUTCFullYear()}-W${String(l).padStart(2,"0")}`}const ef=320;function l5({open:e,onClose:t,scheduleSelectedDate:a,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:x,onMoveExpiredToSelectedWeek:I,onMoveExpiredToBacklog:C,scheduleBulkBusy:D,globalWeekStartsOn:U,resolvedLocale:L,todayDateOnly:X,scheduleBaseTasks:me,scheduleWeekStart:se,scheduleWeekLabel:ae}){const O=Ue.useMemo(()=>{const[P,z]=o.split("-"),ie=Number(P),fe=Number(z);if(!Number.isInteger(ie)||!Number.isInteger(fe)||fe<1||fe>12){const q=dd(a)||new Date;return new Date(q.getFullYear(),q.getMonth(),1)}return new Date(ie,fe-1,1)},[o,a]),_=Ue.useMemo(()=>vm(O,{month:"long",year:"numeric"},L),[O,L]),de=Ue.useMemo(()=>{const P=Xp(O,U);return Array.from({length:42},(z,ie)=>Uy(P,ie))},[O,U]),ke=Ue.useMemo(()=>{const P=new Map;for(const z of me){const ie=z.scheduledDate||"";if(!ie)continue;const q=!(z.status==="done"||z.status==="cancelled")&&ie<X,Me=P.get(ie);Me?(Me.count+=1,q&&(Me.hasExpired=!0)):P.set(ie,{count:1,hasExpired:q})}return P},[me,X]),Y=Ue.useMemo(()=>U==="sunday"?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],[U]);return n.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:`${ef}px`,minWidth:`${ef}px`},children:[n.jsxs("div",{className:"tf-sidebar-header",children:[n.jsxs("div",{className:"tf-sidebar-title",children:[n.jsx(Uk,{size:16}),n.jsx("span",{children:"Schedule Controls"})]}),n.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:"Hide Schedule Sidebar",children:n.jsx(Xc,{size:16})})]}),n.jsxs("div",{className:Ha.weekLabel,children:["Week of ",ae]}),n.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[n.jsxs("div",{className:Ha.calendarHeader,children:[n.jsx("button",{className:"tf-control-icon",onClick:()=>{const P=new Date(O);P.setMonth(O.getMonth()-1),l(`${P.getFullYear()}-${String(P.getMonth()+1).padStart(2,"0")}`)},title:"Previous month",children:n.jsx(Mo,{size:14})}),n.jsx("div",{className:Ha.monthLabel,children:_}),n.jsx("button",{className:"tf-control-icon",onClick:()=>{const P=new Date(O);P.setMonth(O.getMonth()+1),l(`${P.getFullYear()}-${String(P.getMonth()+1).padStart(2,"0")}`)},title:"Next month",children:n.jsx(Xc,{size:14})})]}),n.jsx("div",{className:Ha.weekdayGrid,children:Y.map(P=>n.jsx("div",{className:Ha.weekdayLabel,children:P},P))}),n.jsx("div",{className:Ha.calendarGrid,children:de.map(P=>{const z=Jc(P),ie=P.getMonth()!==O.getMonth(),fe=Xp(P,U),q=Jc(fe)===Jc(se),Me=z===a,xe=z===X,oe=z<X,le=ke.get(z),Ie=!!le,Ee=!!le?.hasExpired;return n.jsxs("button",{onClick:()=>{s(z),l(`${P.getFullYear()}-${String(P.getMonth()+1).padStart(2,"0")}`)},className:Ha.calendarDay,style:{"--calendar-day-border":Me?"1px solid #2563eb":xe?"1px solid rgba(245, 158, 11, 0.95)":"1px solid transparent","--calendar-day-background":Me?"rgba(59,130,246,0.22)":xe?"rgba(245,158,11,0.16)":q?"rgba(59,130,246,0.18)":"transparent","--calendar-day-color":ie?"var(--text-helper)":"var(--text-primary)","--calendar-day-font-weight":Me||xe?700:500,"--calendar-day-opacity":oe?.42:1},title:`${xe?`${z} (Today)`:z}`+(Ie?` • ${le?.count} scheduled`:"")+(Ee?" • includes expired":""),children:[P.getDate(),Ie&&n.jsx("span",{className:Ha.calendarDayDot,style:{"--calendar-dot-background":Ee?"#ef4444":"#3b82f6","--calendar-dot-opacity":ie?.6:.95}})]},z)})}),n.jsx("div",{className:Ha.jumpRow,children:n.jsx("button",{className:"tf-control-icon",onClick:()=>{const P=new Date;s(Jc(P)),l(`${P.getFullYear()}-${String(P.getMonth()+1).padStart(2,"0")}`)},title:"Jump to current week",children:"Today"})})]}),n.jsxs("div",{className:`tf-sidebar-section tf-surface-panel ${Ha.displaySection}`,children:[n.jsx("div",{className:Ha.sectionTitle,children:"Display"}),n.jsxs("label",{className:Ha.toggleLabel,children:[n.jsx("input",{type:"checkbox",checked:i,onChange:P=>d(P.target.checked)}),"Show weekends"]}),n.jsxs("label",{className:Ha.toggleLabel,children:[n.jsx("input",{type:"checkbox",checked:m,onChange:P=>y(P.target.checked)}),"Show backlog"]}),n.jsxs("label",{className:Ha.toggleLabel,children:[n.jsx("input",{type:"checkbox",checked:k,onChange:P=>S(P.target.checked)}),"Only expired/overdue"]})]}),h>0&&n.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[n.jsx("div",{className:Ha.sectionTitle,children:"Expired Tasks"}),n.jsxs("div",{className:Ha.expiredSummary,children:[n.jsxs("span",{children:[h," expired"]}),n.jsxs("span",{children:[g," overdue"]})]}),n.jsx("button",{className:`tf-control-icon ${Ha.actionButton}`,onClick:I,disabled:D||v.length===0,title:"Move expired leaf tasks to the selected week while keeping weekday alignment",children:D?"Working...":"Schedule to selected week"}),n.jsx("button",{className:`tf-control-icon ${Ha.actionButton}`,onClick:C,disabled:D||x.length===0,title:"Unschedule expired/overdue tasks back to backlog",children:D?"Working...":"Unschedule to backlog"})]})]})}function zy(e,t){return e&&(t==="owner"||t==="admin")}function d5(e,t,a){return zy(e,t)&&a==="team"}function u5({isOpen:e,workspaceId:t,refreshKeys:a}){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=p5(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=m5(y.current),o(x=>{const I=x.length===0?v:MW(x,v,15);return EW(x,I)?x:I}),m(null))}).catch(v=>{if(h)return;const x=v instanceof Error&&v.message.trim().length>0?v.message.trim():"Unable to load recent sync events.";m(x),g&&o([])}).finally(()=>{h||g&&i(!1)}),()=>{h=!0}},[e,S,...a]),{syncRecentEvents:s,syncRecentEventsLoading:l,syncRecentEventsError:d,syncEventsListRef:y,loadRecentSyncEvents:S}}function m5(e){return e&&e.scrollTop>8?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight}:null}function p5(e,t){if(!t||!e)return null;const a=e.scrollHeight-t.scrollHeight;return e.scrollTop=t.scrollTop+Math.max(0,a),null}function f5({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:a,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:x,workspaceSyncBusy:I}){const[C,D]=r.useState(!1),[U,L]=r.useState(!1),[X,me]=r.useState(!1),se=r.useCallback(async()=>{try{const _=h.length>0?h:await g(),de=OW({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:a,workspaceSyncRecommendedAction:s,formattedLastSyncTime:o,formattedLastPullTime:l,formattedLastPushTime:i,workspaceSyncDiagnostics:d,workspaceSyncPendingChanges:m,syncLastError:y,syncStageLabel:By(k,C,I),referenceMismatchCount:S,syncRecentEvents:_});await navigator.clipboard.writeText(de),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,a,I,C]),ae=r.useCallback(async()=>{L(!1),D(!0);try{await x()}finally{D(!1)}},[x]),O=r.useCallback(()=>{if(!C){if(I){L(!0);return}ae()}},[ae,I,C]);return r.useEffect(()=>{U&&(I||C||ae())},[ae,I,C,U]),{workspaceSyncRepairBusy:C,workspaceSyncRepairQueued:U,workspaceSyncCopied:X,handleCopySyncDetails:se,handleQueueOrRunRepairSync:O}}function h5({canManageWorkspaceSync:e,workspaceCloudSyncEnabled:t,saveWorkspaceCloudSyncSettings:a}){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 C=>{if(e){k(null),m(!0);try{const D=await a({enabled:C});D.success||k(D.error||(C?"Failed to enable sync.":"Failed to disable sync."))}finally{m(!1)}}},[e,a]),h=r.useCallback(async C=>{if(C&&!t){i(!0);return}await S(C)},[S,t]),g=r.useCallback(()=>{i(!1)},[]),v=r.useCallback(()=>{i(!1),S(!0)},[S]),x=r.useCallback(()=>{o(!0)},[]),I=r.useCallback(()=>{o(!1)},[]);return{showSyncStatusModal:s,showSyncEnableWarning:l,workspaceSyncToggleBusy:d,workspaceSyncError:y,syncControlBusy:d,openSyncStatusModal:x,closeSyncStatusModal:I,handleWorkspaceSyncToggle:h,cancelSyncEnableWarning:g,confirmSyncEnableWarning:v}}const rg=Ue.lazy(()=>As(()=>import("./TaskSettings-BXVvZZwH.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings}))),g5=Ue.lazy(()=>As(()=>import("./AnnotatedAttachmentWorkspace-jhOhxqHT.js"),__vite__mapDeps([12,1,2,3,4,5,13])).then(e=>({default:e.AnnotatedAttachmentWorkspaceShell}))),y5=Ue.lazy(()=>As(()=>import("./DocumentWorkspace-X-CpD5OO.js"),__vite__mapDeps([14,1,2,9,3,4,5,15])).then(e=>({default:e.DocumentWorkspaceShell}))),k5=Ue.lazy(()=>As(()=>import("./WorkflowsModule-DWCGhEWT.js"),__vite__mapDeps([16,1,2,3,4,5])).then(e=>({default:e.WorkflowsModule}))),v5=Ue.lazy(()=>As(()=>import("./AgentsModule-DvkbUHi0.js"),__vite__mapDeps([17,1,2,3,4,5])).then(e=>({default:e.AgentsModule})));Ue.lazy(()=>As(()=>import("./InitiativesModule-5nDXtIjf.js"),__vite__mapDeps([18,1,2,3,4,5])).then(e=>({default:e.InitiativesModule})));const S5=Ue.lazy(()=>As(()=>import("./PlansPage-B8nDR1hQ.js"),__vite__mapDeps([19,1,2,5,3,4,20])).then(e=>({default:e.PlansPage}))),w5="image/png,image/jpeg,image/webp,image/gif",b5=5*1024*1024,x5=e=>e;function _5(e,t){const a=Am(e);if(a)return th(a).label.toUpperCase();for(const s of t){const o=String(s||"").trim();if(!o)continue;const l=uf(o);if(l)return th(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 ad(){return typeof performance<"u"?performance.now():Date.now()}function C5(e){const s=xg(),o=_g(),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[N,pe]of Object.entries(u||{}))pe==null||String(pe).trim()===""?w.delete(N):w.set(N,String(pe));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:x,emptyColumnMode:I,setEmptyColumnMode:C,zenMode:D,setZenMode:U,filterStatus:L,setFilterStatus:X,tasks:me,handleEdit:se,handleSubmit:ae,resetForm:O,handleUpdateTask:_,editingTaskId:de,loading:ke,error:Y,title:P,setTitle:z,description:ie,setDescription:fe,checklistItems:q,setChecklistItems:Me,category:xe,setCategory:oe,type:le,setType:Ie,priority:Ee,setPriority:je,complexity:Pe,setComplexity:K,setStatus:A,approach:b,setApproach:R,assignee:F,setAssignee:Q,scheduledDate:M,setScheduledDate:$,dueDate:be,setDueDate:H,workstreamInput:ce,setWorkstreamInput:he,manualComplexityEnabled:G,checklistDropdownEnabled:re,showTaskCardStatusLabel:ue,formTaxonomies:Re,setFormTaxonomies:Te,comments:De,newCommentText:Oe,setNewCommentText:vt,attachments:st,setAttachments:kt,setAttachmentsDirty:Ye,descriptionFocused:_t,setDescriptionFocused:dt,showMarkdownHelp:Qe,setShowMarkdownHelp:Rt,showChecklist:ee,setShowChecklist:ze,showComments:ft,setShowComments:it,handleAddComment:Et,handleSetWorkstreamForCurrentTask:ht,handleOpenTaskById:Ot,taxonomies:Dt,activeTypes:We,priorities:tt,taxonomyDisplayLabels:Fe,approaches:Ze,copiedId:St,handleCopyId:ot,handleToggleInProgress:te,handleToggleComplete:Le,handleToggleReview:Ct,handleToggleCancel:jt,handleArchiveTask:Wt,handleDelete:Ge,handleUnarchive:$t,handleRestoreDeletedTask:yt,handlePermanentlyDeleteDeletedTask:E,handleEmptyDeletedTasks:c,fetchTasks:J,searchQuery:we,setSearchQuery:Ae,filterCategories:Ke,setFilterCategories:Je,filterTypes:Ne,setFilterTypes:zt,filterPriorities:Jt,setFilterPriorities:Pt,filterAssignees:Ft,setFilterAssignees:Lt,hasInitedFilters:Ht,assigneeOptions:rn,taskScope:Vt,setTaskScope:Vn,sortBy:qn,setSortBy:Kn,clearFilters:ca,settingsModel:ye,configLoaded:rt,currentTheme:Ce,setCurrentTheme:Nt,pathSaved:pt,saveSettings:wt,keyShortcut:Cn,setKeyShortcut:kn,globalWeekStartsOn:cn,locale:ln,jsonBackupEnabled:$n,setJsonBackupEnabled:gt,mcpHostRoot:rr,setMcpHostRoot:mn,settingsSection:tn,setSettingsSection:bn,runtimeMode:Kt,workspaceSwitchingEnabled:vr,cloudAuthConfigured:Rn,authRequiredForApi:Xn,authBlocked:jn,isAuthenticated:Zt,authUserId:Zn,authWorkspaceId:nn,authUserEmail:la,authUserDisplayName:ya,authUserAvatarUrl:Sr,authSessionResolved:dn,realtimeSyncEnabled:wr,realtimeSyncFlagSource:qr,workspaceCloudSyncEnabled:Va,workspaceSyncPhase:ka,workspaceSyncStatus:Un,workspaceSyncSummary:br,workspaceSyncRecommendedAction:da,workspaceSyncBusy:Dn,workspaceSyncPendingChanges:Nn,saveWorkspaceCloudSyncSettings:xr,pushNotice:At,userGlobalSyncStatus:va,workspaceLastSuccessfulSyncAt:Sa,workspaceLastPullAt:ua,workspaceLastPushAt:zn,workspaceLastErrorAt:sr,userGlobalSyncError:Pn,workspaceLastErrorMessage:vn,retryWorkspaceCloudSync:La,resetWorkspaceSyncCursorAndPull:wa,getWorkspaceSyncDiagnostics:Sn,currentWorkspaceId:Yt,currentWorkspaceRole:ba,availableWorkspaces:Hn,switchWorkspace:Mn,updateCurrentUserProfile:Ba,resolveCloudAuthUrl:En=x5,logout:Mr,fetchLoginMethods:an,unlinkLoginMethod:un,addPasswordToAccount:ea,beginOAuthLogin:or,beginOAuthLink:Er,availableAuthProviders:_r,projectRoot:Xt,projectName:xa,mcpScriptPath:_a,serverHostRoot:Cr,showFolderBrowser:Ar,setShowFolderBrowser:qa,folders:Ka,files:ir,currentBrowsePath:ta,fetchFolders:Ca,browserTarget:Za,setBrowserTarget:na,handleSelectPath:cs,handleAddPath:Yn,handleRemovePath:Kr,handleUpdateCategory:Dr,handleRemoveCategory:Aa,handleSaveCategory:cr,handleUpdateCategoryIcon:Wa,handleUpdateCategoryColor:ma,handleSaveType:lr,handleRemoveType:Zr,handleUpdateTaxonomies:ls,handleUpdatePriorities:et,pathValidation:Bt,exportEnvironment:Ln,setExportEnvironment:An,exportWorkflowsPath:wn,setExportWorkflowsPath:Ia,exportResult:Ya,exportingResource:ds,availableWorkflows:Fa,onExportWorkflows:Oa,fetchWorkflows:Ta,availableEnvironments:Gt,initiativeTemplates:$a,fetchInitiativeTemplates:pa,createInitiativeFromTemplate:Bn,uiNotice:Lr,clearNotice:Br,taskReturnTrail:dr,clearReturnToParentTask:ur,returnToPreviousTask:Fs,tasksScrollRef:ra,setTasksScrollPos:fa,commentsEndRef:so,autoSaveState:Wr,unsavedModalOpen:mr,setUnsavedModalOpen:W,pendingNavigation:$e,handleNavigation:It,currentTask:Mt,currentTaskWorkstream:Gn,currentTaskInitiative:Ja,scheduleWarningPrompt:Yr,confirmScheduleWarning:Wn,cancelScheduleWarning:Fr}=e,Fn=ln||Dg();r.useEffect(()=>{const u=String(xa||"").trim();document.title=u?`Taskforce - ${u}`:"Taskforce"},[xa]);const T=()=>{W(!1),$e?(y==="add"&&O(),$e()):(y==="add"&&O(),k("tasks"))},j=async()=>{await ae({preventDefault:()=>{}}),W(!1),$e&&$e()},[nt,bt]=r.useState(!1),[ve,ne]=r.useState(!1),[Ra,ja]=r.useState(!0),[ha,Os]=r.useState(!1),[Jr,Na]=r.useState(!0),[$s,oo]=r.useState(Jc(new Date)),[Lo,us]=r.useState(()=>{const u=new Date;return`${u.getFullYear()}-${String(u.getMonth()+1).padStart(2,"0")}`}),[di,Pa]=r.useState(0),[io,ui]=r.useState(!1),[mi,pi]=r.useState(!1),[Or,Bo]=r.useState(!1),[ms,rc]=r.useState(!0),[Qr,co]=r.useState(!0),[Is,Ts]=r.useState(!0),[lo,ps]=r.useState(!1),[fi,gn]=r.useState(!1),[sc,Qa]=r.useState(!1),[sn,uo]=r.useState(""),[Xr,mo]=r.useState(""),[$r,oc]=r.useState(new Set),[Rs,pr]=r.useState(null),[Us,sa]=r.useState(null),[fs,zs]=r.useState(null),[po,Hs]=r.useState(null),[Wo,Gs]=r.useState(""),[fo,fr]=r.useState(""),[pn,aa]=r.useState(""),[Xa,es]=r.useState(""),[hi,Vs]=r.useState(!1),ic=r.useRef({taskId:null,attachments:[]}),sl=r.useRef(new Map),oa=r.useRef(new Map),[ho,Fo]=r.useState(()=>em.map(u=>u.value)),[go,Oo]=r.useState(()=>tm.map(u=>u.value)),[Nm,ol]=r.useState(null),[Pm,il]=r.useState(null),[er,hs]=r.useState(null),[yo,gi]=r.useState(null),[Mm,Cd]=r.useState(0),[$o,Em]=r.useState({}),[Ad,Id]=r.useState(!1),qs=r.useRef(!1),Td=r.useRef(""),cl=r.useRef(null),Rd=r.useRef(null),cc=r.useRef(new Set);r.useEffect(()=>{ic.current={taskId:de||null,attachments:st}},[de,st]);const ll=r.useCallback(u=>{const w=de||null,N=ic.current,pe=N.taskId===w?N.attachments:st,Se=u(pe);ic.current={taskId:w,attachments:Se},kt(Se),Ye(!0),w&&_(w,{attachments:Se})},[st,de,_,kt,Ye]),Uo=r.useMemo(()=>{const u={},w=String(Yt||"").trim();return Kt==="cloud"&&w&&w!=="default"&&(u["x-taskforce-workspace-id"]=w),u},[Kt,Yt]),ko=r.useMemo(()=>`${Kt}:${String(Yt||"default").trim()||"default"}`,[Kt,Yt]),lc=r.useMemo(()=>`taskforce:annotate-layout:${ko}`,[ko]),gs=r.useMemo(()=>`taskforce:task-origin-workspace-module:${ko}`,[ko]),yi=r.useMemo(()=>Kt==="cloud"?dn:rt,[dn,rt,Kt]),zo=r.useRef(!1),ki=r.useRef(!1),Ks=r.useCallback(u=>{const w=String(u||"").trim();if(!(!w||typeof window>"u")){zo.current=!0;try{window.sessionStorage.setItem(gs,w)}catch{}}},[gs]),Ir=r.useCallback(()=>{if(zo.current=!1,!(typeof window>"u"))try{window.sessionStorage.removeItem(gs)}catch{}},[gs]);r.useEffect(()=>{cl.current=er},[er]),r.useEffect(()=>{Rd.current=yo},[yo]);const vo=r.useMemo(()=>({[hd]:nd({featureKey:hd}),[fd]:nd({featureKey:fd}),[wm]:nd({featureKey:wm}),[bm]:nd({featureKey:bm}),[tg]:nd({featureKey:tg})}),[Kt]),js=r.useMemo(()=>HO({featureAccess:vo}),[vo]),on=r.useMemo(()=>ng(v,js),[v,js]),Ho=vo[hd]?.allowed??!1,dc=vo[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 N=w,pe=N.detail?.fsPath,Se=String(N.detail?.assetId||"").trim()||null;if(!(!pe&&!Se)){if(N.preventDefault(),!Ho){At(dl,"error");return}Ks(N.detail?.taskId),ol(pe||null),il(Se),x("docs")}};return window.addEventListener("taskforce:open-markdown-document",u),()=>{window.removeEventListener("taskforce:open-markdown-document",u)}},[Ho,dl,At,Ks,x]),r.useEffect(()=>{on!==v&&x(on)},[v,on,x]),r.useEffect(()=>{on==="docs"&&Ho||(ol(null),il(null))},[Ho,on]),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"&&hs(w.annotatedTarget),typeof w?.annotatedSessionId=="string"&&gi(w.annotatedSessionId.trim()||null)}catch{}},[lc]),r.useEffect(()=>{if(!ki.current&&!(on!=="docs"&&on!=="annotate")&&(ki.current=!0,!(zo.current||typeof window>"u")))try{if(!String(window.sessionStorage.getItem(gs)||"").trim())return;window.sessionStorage.removeItem(gs),x("tasks")}catch{}},[on,x,gs]),r.useEffect(()=>{ki.current=!1,zo.current=!1},[gs]),r.useEffect(()=>{if(Td.current===ko)return;Td.current=ko,Id(!1);let u=!1;return(async()=>{try{const N=await fetch("/api/taskforce/ui-state?key=layout",{method:"GET",credentials:"include",headers:Uo});if(!N.ok)return;const pe=await N.json().catch(()=>({})),Se=pe?.state&&typeof pe.state=="object"?pe.state:null;if(!Se||u)return;if(typeof Se.scheduleShowWeekends=="boolean"&&ne(Se.scheduleShowWeekends),typeof Se.scheduleShowBacklog=="boolean"&&ja(Se.scheduleShowBacklog),typeof Se.scheduleOnlyExpired=="boolean"&&Os(Se.scheduleOnlyExpired),typeof Se.scheduleSidebarOpen=="boolean"&&Na(Se.scheduleSidebarOpen),typeof Se.scheduleSelectedDate=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(Se.scheduleSelectedDate)&&oo(Se.scheduleSelectedDate),typeof Se.scheduleCalendarMonth=="string"&&/^\d{4}-\d{2}$/.test(Se.scheduleCalendarMonth)&&us(Se.scheduleCalendarMonth),typeof Se.scheduleScrollLeft=="number"&&Number.isFinite(Se.scheduleScrollLeft)&&Se.scheduleScrollLeft>=0&&Pa(Se.scheduleScrollLeft),typeof Se.showFilters=="boolean"&&ui(Se.showFilters),Array.isArray(Se.documentTypeFilters)&&Fo(Se.documentTypeFilters),Array.isArray(Se.documentAttachmentFilters)&&Oo(Se.documentAttachmentFilters),typeof Se.planningDrawerOpen=="boolean"&&Bo(Se.planningDrawerOpen),typeof Se.documentTrayOpen=="boolean"&&rc(Se.documentTrayOpen),typeof Se.imageTrayOpen=="boolean"&&co(Se.imageTrayOpen),typeof Se.agentTrayOpen=="boolean"&&Ts(Se.agentTrayOpen),typeof Se.planningTreeCollapsed=="boolean"&&ps(Se.planningTreeCollapsed),typeof Se.planningPrimaryCollapsed=="boolean"&&gn(Se.planningPrimaryCollapsed),typeof Se.planningSecondaryCollapsed=="boolean"&&Qa(Se.planningSecondaryCollapsed),Array.isArray(Se.planningExpandedInitiativeIds)&&oc(new Set(Se.planningExpandedInitiativeIds.map(qt=>String(qt||"").trim()).filter(Boolean))),Se.planningDrawerDetail&&typeof Se.planningDrawerDetail=="object"&&(Se.planningDrawerDetail.type==="initiative"||Se.planningDrawerDetail.type==="workstream")&&typeof Se.planningDrawerDetail.id=="string"){const qt=Se.planningDrawerDetail.id.trim();pr(qt?{type:Se.planningDrawerDetail.type,id:qt}:null)}else Se.planningDrawerDetail===null&&pr(null);typeof Se.planningNestedWorkstreamDetailId=="string"?sa(Se.planningNestedWorkstreamDetailId.trim()||null):Se.planningNestedWorkstreamDetailId===null&&sa(null);const ut=Se.annotatedTarget;ut&&typeof ut=="object"&&(cl.current||hs(ut)),typeof Se.annotatedSessionId=="string"&&(Rd.current||gi(Se.annotatedSessionId.trim()||null))}catch{}finally{u||Id(!0)}})(),()=>{u=!0}},[ko,Uo]),r.useEffect(()=>{if(!Ad)return;const u=window.setTimeout(async()=>{try{await pf({stateKey:"layout",workspaceId:Yt,headers:Uo,patch:{scheduleShowWeekends:ve,scheduleShowBacklog:Ra,scheduleOnlyExpired:ha,scheduleSidebarOpen:Jr,scheduleSelectedDate:$s,scheduleCalendarMonth:Lo,scheduleScrollLeft:di,showFilters:io,documentTypeFilters:ho,documentAttachmentFilters:go,documentTrayOpen:ms,imageTrayOpen:Qr,agentTrayOpen:Is,planningDrawerOpen:Or,planningTreeCollapsed:lo,planningPrimaryCollapsed:fi,planningSecondaryCollapsed:sc,planningExpandedInitiativeIds:Array.from($r),planningDrawerDetail:Rs,planningNestedWorkstreamDetailId:Us,annotatedTarget:er,annotatedSessionId:yo}})}catch{}},250);return()=>window.clearTimeout(u)},[Ad,ve,Ra,ha,Jr,$s,Lo,di,io,ho,go,ms,Qr,Is,Or,lo,fi,sc,$r,Rs,Us,er,yo,Uo]),r.useEffect(()=>{if(!(typeof window>"u"))try{window.sessionStorage.setItem(lc,JSON.stringify({annotatedTarget:er,annotatedSessionId:yo}))}catch{}},[lc,yo,er]),r.useEffect(()=>{h==="schedule"&&Na(!0)},[h]);const{showArchive:So,setShowArchive:ml,fetchArchive:pl,filteredArchive:fl}=e,vi=r.useMemo(()=>fl.map(u=>({...u,isArchived:!0})),[fl]),Ua=r.useMemo(()=>e.archivedTasks.map(u=>({...u,isArchived:!0})),[e.archivedTasks]),Ns=r.useMemo(()=>[...e.searchAgnosticTasks,...Ua],[Ua,e.searchAgnosticTasks]),jd=r.useCallback(u=>{const w=String(u||"").trim();if(!w)return"";const N=Ns.find(pe=>pe.id===w);return Xi(N)||""},[Ns]),Nd=r.useCallback(u=>{const w=String(u||"").trim();if(!w)return"";const N=String($o[w]||"").trim();if(N)return N;for(const pe of Ns)for(const Se of pe.attachments||[]){if(!Se||typeof Se!="object"||String(Se.assetId||"").trim()!==w)continue;const ut=py({referenceNumber:typeof Se.referenceNumber=="number"?Se.referenceNumber:null,referenceLabel:String(Se.referenceLabel||"").trim()||null});if(ut)return ut}return""},[Ns,$o]);r.useEffect(()=>{const u=w=>{const N=w,pe=Rh(N.detail,Ns);if(pe){if(N.preventDefault(),!dc){At(ul,"error");return}hs(pe),gi(null),Cd(Se=>Se+1),Ks(pe.taskId),x("annotate")}};return window.addEventListener("taskforce:open-annotated-attachment",u),()=>{window.removeEventListener("taskforce:open-annotated-attachment",u)}},[Ns,dc,ul,At,Ks,x]),r.useEffect(()=>{if(!er)return;const u=Rh(er,Ns);u&&(u.taskReferenceLabel===er.taskReferenceLabel&&u.imageReferenceLabel===er.imageReferenceLabel||hs(u))},[Ns,er]),r.useEffect(()=>{const u=cl.current,w=String(u?.assetId||"").trim();if(!w)return;const N=String($o[w]||"").trim();N&&N!==String(u?.imageReferenceLabel||"").trim()&&hs(pe=>!pe||String(pe.assetId||"").trim()!==w?pe:{...pe,imageReferenceLabel:N})},[$o,er]),r.useEffect(()=>{if(!yi)return;const w=String(er?.assetId||"").trim();if(!w||cc.current.has(w)||String($o[w]||"").trim())return;let N=!1;cc.current.add(w);const pe=String(Yt||"default").trim()||"default",Se=new URLSearchParams({workspaceId:pe});return(async()=>{try{const qt=await fetch(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(w)}?${Se.toString()}`,{method:"GET",credentials:"include",headers:Uo});if(!qt.ok)return;const yn=await qt.json().catch(()=>({})),xs=String(yn?.target?.imageReferenceLabel||"").trim();if(!xs||N)return;Em(_n=>_n[w]===xs?_n:{..._n,[w]:xs})}catch{}finally{cc.current.delete(w)}})(),()=>{N=!0}},[yi,$o,Yt,er,Uo]);const za=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=za,w=Rm(we),N={categories:S,types:We,priorities:tt,assigneeOptions:e.assigneeOptions,taxonomies:Dt},pe=S.every(_n=>Ke.includes(_n.value)),Se=We.every(_n=>Ne.includes(_n.value)),ut=new Set(Jt.map(_n=>String(_n))),qt=tt.every(_n=>ut.has(String(_n.value))),yn=new Set(L.map(_n=>String(_n))),xs=no.every(_n=>yn.has(String(_n.value)));return u.filter(_n=>{const op=pm(_n,w,N),ju=pe||Ke.includes(_n.category),ip=Se||Ne.includes(_n.type||Vr),cp=qt||ut.has(String(_n.priority)),Nu=xs||yn.has(String(_n.status)),lp=Ft.length===0||Ft.includes(_n.assignee||"unassigned");return op&&ju&&ip&&cp&&Nu&&lp})},[S,We,za,Ft,Ke,Jt,L,Ne,tt,we]),bi=r.useMemo(()=>[...e.tasks,...Ua,...za],[Ua,za,e.tasks]),uc=r.useMemo(()=>{const u=S.filter(N=>!N.disabled).map(N=>({value:N.value,label:N.label})),w=S.filter(N=>N.disabled&&bi.some(pe=>pe.category===N.value)).map(N=>({value:N.value,label:`${N.label} (Legacy)`}));return[...u,...w]},[S,bi]),hl=r.useMemo(()=>{const u=We.filter(N=>N.status!=="retired").map(N=>({value:N.value,label:N.label})),w=We.filter(N=>N.status==="retired"&&bi.some(pe=>(pe.type||Vr)===N.value)).map(N=>({value:N.value,label:`${N.label} (Retired)`}));return[...u,...w]},[We,bi]),Zs=r.useMemo(()=>Vt==="archived"?vi:Vt==="deleted"?wi:So?[...e.filteredTasks,...vi]:e.filteredTasks,[vi,wi,e.filteredTasks,So,Vt]),mc=r.useMemo(()=>Vt==="open"?e.tasks.filter(u=>!u.isArchived):Zs,[Zs,e.tasks,Vt]),gl=r.useMemo(()=>new Set(Zs.map(u=>u.id)),[Zs]),xi=r.useMemo(()=>Vt==="archived"?Ua:Vt==="deleted"?za:So?[...e.tasks,...Ua]:e.tasks,[Ua,za,e.tasks,So,Vt]),_i=r.useMemo(()=>{const u=new Map;for(const w of Ua)u.set(w.id,w);for(const w of za)u.set(w.id,w);for(const w of e.tasks)u.set(w.id,w);return Array.from(u.values())},[Ua,za,e.tasks]),pc=r.useMemo(()=>{const u=new Map;return _i.forEach(w=>u.set(w.id,w)),u},[_i]),fc=r.useMemo(()=>{const u=new Map;rn.forEach(pe=>{u.set(String(pe.value),pe.label)});const w=String(Zn||"").trim(),N=String(ya||la||"").trim();return w&&N&&u.set(w,N),u},[rn,ya,la,Zn]),xt=r.useMemo(()=>{const u=Vt==="archived"?Ua:Vt==="deleted"?za:e.tasks.filter(ct=>!ct.isArchived),w=Vt==="deleted"?za:Array.from([...e.tasks,...Ua].reduce((ct,Qn)=>ct.set(Qn.id,Qn),new Map).values()),N=(ct,Qn)=>({progressPercent:ct>0?Math.round(Qn/ct*100):0,taskCount:ct,completedTaskCount:Qn}),pe=Vt==="open"&&e.planningBootstrapTaskSummaries.length>0&&(e.loadingTasks||e.tasks.length===0),Se=new Map,ut=new Map;pe?e.planningBootstrapTaskSummaries.forEach(ct=>{Se.set(ct.workstreamId,ct),ut.set(ct.workstreamId,ct.tasks||[])}):(u.forEach(ct=>{const Qn=String(ct.workstreamId||"").trim();if(!Qn)return;const gr=Se.get(Qn)||{workstreamId:Qn,taskCount:0,completedTaskCount:0,tasks:[]};gr.taskCount+=1,(ct.isArchived||ct.status==="done"||ct.status==="cancelled")&&(gr.completedTaskCount+=1),Se.set(Qn,gr)}),w.forEach(ct=>{const Qn=String(ct.workstreamId||"").trim();if(!Qn)return;const gr=ut.get(Qn)||[];gr.push({id:ct.id,referenceNumber:ct.referenceNumber??null,title:ct.title,status:ct.status||null,isArchived:!!ct.isArchived}),ut.set(Qn,gr)}));const qt=new Map,yn=new Map,xs=new Map,_n=new Map,op=ct=>{const Qn=Se.get(ct.id),gr=ut.get(ct.id)||Qn?.tasks||[],Pu={id:ct.id,referenceNumber:ct.referenceNumber??null,title:ct.title,description:String(ct.description||"").trim()||void 0,ownerId:ct.ownerId?String(ct.ownerId):null,ownerLabel:ct.ownerId?fc.get(String(ct.ownerId))||String(ct.ownerId):null,...N(Qn?.taskCount||0,Qn?.completedTaskCount||0),initiativeId:ct.initiativeId||null,commentCount:Array.isArray(ct.comments)?ct.comments.length:0,attachmentCount:Array.isArray(ct.attachments)?ct.attachments.length:0,attachments:Array.isArray(ct.attachments)?ct.attachments:[],isArchived:!!ct.isArchived,tasks:gr};if(qt.set(ct.id,gr.map(Hc=>Hc.id)),ct.initiativeId){yn.set(ct.id,ct.initiativeId);const Hc=_n.get(ct.initiativeId)||[];Hc.push(Pu),_n.set(ct.initiativeId,Hc)}return Pu},ju=e.workstreams.map(op),ip=ju.filter(ct=>Sm(Vt,!!ct.isArchived)),cp=e.initiatives.map(ct=>{const Qn=_n.get(ct.id)||[],gr=Qn.filter(Xl=>Sm(Vt,!!Xl.isArchived)),Pu=gr.reduce((Xl,dp)=>Xl+dp.taskCount,0),Hc=gr.reduce((Xl,dp)=>Xl+dp.completedTaskCount,0);return{id:ct.id,referenceNumber:ct.referenceNumber??null,title:ct.title,description:String(ct.description||"").trim()||void 0,ownerId:ct.ownerId?String(ct.ownerId):null,ownerLabel:ct.ownerId?fc.get(String(ct.ownerId))||String(ct.ownerId):null,...N(Pu,Hc),workstreamCount:gr.length,workstreams:gr,allWorkstreams:Qn,commentCount:Array.isArray(ct.comments)?ct.comments.length:0,attachmentCount:Array.isArray(ct.attachments)?ct.attachments.length:0,attachments:Array.isArray(ct.attachments)?ct.attachments:[],isArchived:!!ct.isArchived}}),{initiatives:Nu,standaloneWorkstreams:lp,initiativeById:Ck,workstreamById:Ak}=RW(cp,ip,Vt),Ik=ju.filter(ct=>!ct.initiativeId);return Nu.forEach(ct=>{xs.set(ct.id,ct.workstreams.flatMap(Qn=>(Qn.tasks||[]).map(gr=>gr.id)))}),{initiatives:Nu,standaloneWorkstreams:lp,allStandaloneWorkstreams:Ik,workstreamTaskIds:qt,workstreamInitiativeIds:yn,initiativeTaskIds:xs,workstreamById:Ak,initiativeById:Ck}},[Ua,fc,za,e.initiatives,e.loadingTasks,e.planningBootstrapTaskSummaries,e.tasks,e.workstreams,Vt]),Pd=r.useMemo(()=>xt.initiatives.map(u=>{const w=os(u);return{value:u.id,label:w||u.title}}),[xt.initiatives]),hc=r.useMemo(()=>{const w=(sn?xt.initiativeById.get(sn)?.workstreams||[]:xt.initiatives.flatMap(pe=>pe.workstreams)).map(pe=>{const Se=Eo(pe);return{value:pe.id,label:Se||pe.title}}),N=sn?[]:xt.standaloneWorkstreams.map(pe=>{const Se=Eo(pe);return{value:pe.id,label:Se||pe.title}});return[...w,...N]},[xt.initiativeById,xt.initiatives,xt.standaloneWorkstreams,sn]),ys=r.useMemo(()=>Xr?new Set(xt.workstreamTaskIds.get(Xr)||[]):sn?new Set(xt.initiativeTaskIds.get(sn)||[]):null,[xt.initiativeTaskIds,xt.workstreamTaskIds,sn,Xr]),Go=r.useMemo(()=>{if(!Rs)return null;if(Rs.type==="initiative"){const w=xt.initiativeById.get(Rs.id);return w?{type:"initiative",item:w}:null}const u=xt.workstreamById.get(Rs.id)||xt.standaloneWorkstreams.find(w=>w.id===Rs.id);return u?{type:"workstream",item:u}:null},[Rs,xt.initiativeById,xt.standaloneWorkstreams,xt.workstreamById]),gc=r.useMemo(()=>{if(!Us)return null;const u=xt.workstreamById.get(Us)||xt.standaloneWorkstreams.find(w=>w.id===Us);return u?{type:"workstream",item:u}:null},[Us,xt.standaloneWorkstreams,xt.workstreamById]),yc=r.useMemo(()=>po?{kind:"editor",editor:po}:gc?{kind:"detail",detail:gc}:null,[gc,po]),Md=$y(lo,!!(Go||fs),fi,!!yc,sc),kc=r.useMemo(()=>{if(!Xa.trim())return null;const u=xt.initiativeById.get(Xa);return u||vp(xt.initiatives,Xa)},[Xa,xt.initiativeById,xt.initiatives]);r.useEffect(()=>{sn&&!xt.initiativeById.has(sn)&&uo(""),Xr&&!xt.workstreamById.has(Xr)&&mo("")},[xt.initiativeById,xt.workstreamById,sn,Xr]);const Tr=r.useMemo(()=>h==="schedule"?mc:Zs,[h,Zs,mc]),Jn=r.useMemo(()=>{const u=new Date,w=u.getFullYear(),N=String(u.getMonth()+1).padStart(2,"0"),pe=String(u.getDate()).padStart(2,"0");return`${w}-${N}-${pe}`},[]),Ci=r.useMemo(()=>h!=="schedule"||!ha?Tr:Tr.filter(u=>{if(u.status==="done"||u.status==="cancelled")return!1;const N=!!u.scheduledDate&&u.scheduledDate<Jn,pe=!!u.dueDate&&u.dueDate<Jn;return N||pe}),[h,ha,Tr,Jn]),yl=r.useMemo(()=>!ys||ys.size===0?Ci:Ci.filter(u=>ys.has(u.id)),[Ci,ys]),Ed=r.useMemo(()=>!ys||ys.size===0?xi:xi.filter(u=>ys.has(u.id)),[xi,ys]),wo=r.useMemo(()=>h!=="schedule"?[]:Tr.filter(u=>{if(u.status==="done"||u.status==="cancelled")return!1;const N=!!u.scheduledDate&&u.scheduledDate<Jn,pe=!!u.dueDate&&u.dueDate<Jn;return N||pe}),[h,Tr,Jn]),Dd=r.useMemo(()=>h!=="schedule"?0:Tr.filter(u=>u.status==="done"||u.status==="cancelled"?!1:!!u.scheduledDate&&u.scheduledDate<Jn).length,[h,Tr,Jn]),kl=r.useMemo(()=>h!=="schedule"?0:Tr.filter(u=>u.status==="done"||u.status==="cancelled"?!1:!!u.dueDate&&u.dueDate<Jn).length,[h,Tr,Jn]),ts=String(Zn||"").trim(),Ld=r.useMemo(()=>!ts||ts==="anonymous"?0:me.filter(u=>u.status==="done"||u.status==="cancelled"?!1:String(u.assignee||"").trim()===ts).length,[ts,me]),Bd=r.useMemo(()=>!ts||ts==="anonymous"?0:me.filter(u=>u.status==="done"||u.status==="cancelled"||String(u.assignee||"").trim()!==ts?!1:!!u.dueDate&&u.dueDate<Jn).length,[ts,me,Jn]),vc=r.useMemo(()=>h!=="schedule"?[]:Tr.filter(u=>u.status==="done"||u.status==="cancelled"?!1:!!u.scheduledDate&&u.scheduledDate<Jn),[h,Tr,Jn]),Ai=wo,[bo,Ii]=r.useState(!1),Sc=()=>{It(()=>{Fs()||(y==="add"&&dr.length>0&&ur(),pi(!1),y==="add"&&O(),k("tasks"))})};r.useEffect(()=>{y!=="add"&&pi(!1)},[y]);const wc=r.useCallback((u,w)=>{if(u.status!==w){if(w==="in-progress"){te(u);return}if(w==="review"){Ct(u);return}if(w==="done"){Le(u);return}if(w==="cancelled"){jt(u);return}_(u.id,{status:w,completedAt:null})}},[te,Ct,Le,jt,_]),vl=r.useCallback((u,w)=>{O();const N=AW(u,w,{categories:S,approaches:Ze});N.category&&oe(N.category),N.type&&Ie(N.type),typeof N.priority=="number"&&je(N.priority),typeof N.complexity=="number"&&K(N.complexity),N.approach&&R(N.approach);const pe=N.taxonomyApproach;typeof pe=="string"&&pe.length>0&&Te(Se=>({...Se,approach:pe})),N.assignee&&Q(N.assignee),N.status&&A(N.status),N.scheduledDate&&$(N.scheduledDate),k("add")},[O,S,Ze,oe,Ie,je,K,A,R,Q,$,Te,k]);Ue.useEffect(()=>{L&&!L.includes("done")&&X(u=>[...u,"done"])},[]);const[Wd,Vo]=r.useState(!1),[ks,tr]=r.useState(!1),[xo,_o]=r.useState(!1),[Sl,wl]=r.useState(!1),[Dm,bc]=r.useState(!1),[xc,Fd]=r.useState(!1),[Od,bl]=r.useState(""),[xl,Ti]=r.useState(!1),[Lm,$d]=r.useState(!1),[Bm,Ri]=r.useState("members"),[_c,Cc]=r.useState(null),[Ac,ji]=r.useState("unknown"),[Ud,Ni]=r.useState(!1),[Wm,Ma]=r.useState(null),[vs,Rr]=r.useState(null),[Ic,Tc]=r.useState(!1),[qo,_l]=r.useState([]),[Pi,Ko]=r.useState(null),[Mi,Rc]=r.useState(""),[Ps,Ei]=r.useState("member"),[Di,jc]=r.useState("read-write"),[Nc,Cl]=r.useState(!1),[zd,Zo]=r.useState(null),[Ms,Fm]=r.useState(0),[Hd,Gd]=r.useState(!1),[Om,$m]=r.useState([]),[Um,zm]=r.useState(!1),[Vd,Hm]=r.useState(1),[ga,Al]=r.useState(null),[qd,Pc]=r.useState(!1),[Mc,Il]=r.useState(null),[Kd,Li]=r.useState(!1),[Ur,zr]=r.useState(null),[Yo,Hr]=r.useState(!1),[Zd,Tl]=r.useState(null),[Ys,Bi]=r.useState("month"),[Rl,Yd]=r.useState(""),[Ss,Jo]=r.useState(""),[hr,Qo]=r.useState(null),[jl,Jd]=r.useState(!1),[Gm,Nl]=r.useState(!1),[Qd,ns]=r.useState(null),[Xd,as]=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=ga},[ga]),r.useEffect(()=>{if(!ks)return;const u=w=>{tu.current?.contains(w.target)||tr(!1)};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[ks]);const Vm=Kt==="cloud"&&vr&&Zt,Xo=Zt&&(Kt==="cloud"||Rn),Ml=Kt==="local"&&Zt,{showSyncStatusModal:El,showSyncEnableWarning:qm,workspaceSyncError:Dl,syncControlBusy:nu,openSyncStatusModal:Km,closeSyncStatusModal:Ll,handleWorkspaceSyncToggle:au,cancelSyncEnableWarning:Zm,confirmSyncEnableWarning:Ym}=h5({canManageWorkspaceSync:Ml,workspaceCloudSyncEnabled:Va,saveWorkspaceCloudSyncSettings:xr}),Bl=r.useMemo(()=>{const u=Hn.find(pe=>pe.id===Yt),w=String(u?.name||"").trim();if(w)return w;if(Kt==="local"){const pe=String(xa||"").trim();if(pe)return pe}return String(Yt||"").trim()||"Workspace"},[Hn,Yt,xa,Kt]),Ec=zy(Xo,_c),Co=d5(Xo,_c,Ac),ei=String(ya||"").trim(),jr=String(Sr||"").trim(),Ao=String(la||"").trim(),Js=ei||Ao,Dc=Js.length>0,ru=Ao.length>0,Jm=r.useMemo(()=>xB({workspaceName:Bl,workspaceId:Yt,accountLabel:Js||Ao,runtimeMode:Kt}),[Ao,Js,Yt,Bl,Kt]),su=(Js||Ao||"").trim(),Lc=Zt&&dn&&su.length>0?su.charAt(0).toUpperCase():"",Fl=jr,ou=Zt&&dn&&Fl.length>0,Ol=String(Ss||jr).trim(),Bc=String(ga?.planName||ga?.planId||"").trim(),iu=Bc.length>0,Es=String(ga?.workspaceId||nn||Yt||"").trim(),cu=Kt==="cloud"?"CLOUD":"LOCAL",$l=e.config?.apiBaseUrl||"",lu=r.useMemo(()=>_5(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=Rn&&!dn;r.useEffect(()=>{Sl&&(Yd(ei),Jo(jr),Qo(null),ns(null),as(null))},[jr,ei,Sl]);const Ds=r.useCallback(async u=>{const w=String(u||"").trim();if(!(!w||!Rn))try{await fetch(En("/api/taskforce/auth/profile/avatar/discard"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:w})})}catch{}},[Rn,En]),uu=r.useCallback(()=>{const u=hr;wl(!1),bc(!1),ns(null),as(null),Qo(null),Jo(jr),u&&Ds(u)},[jr,Ds,hr]),mu=r.useCallback(async u=>{if(!u||!Rn)return!1;if(!u.type.startsWith("image/"))return ns("Profile photo must be an image file."),as(null),!1;Jd(!0),ns(null),as(null);try{const w=await tF(u,{maxBytes:b5});if(w.exceededLimit){const _n=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(_n)}const N=w.file,pe=await fetch(En("/api/taskforce/auth/profile/avatar/init"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({originalName:N.name,mimeType:N.type,size:N.size})}),Se=await pe.json().catch(()=>({}));if(!pe.ok||!Se?.success||typeof Se?.draftId!="string"||typeof Se?.relativePath!="string")throw new Error(Se?.error||"Failed to start avatar upload.");if(!(await fetch(En("/api/taskforce/auth/profile/avatar/upload"),{method:"POST",headers:{"Content-Type":N.type||"application/octet-stream","x-taskforce-avatar-draft-id":Se.draftId},credentials:"include",body:N})).ok)throw new Error("Failed to upload avatar.");const qt=await fetch(En("/api/taskforce/auth/profile/avatar/finalize"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:Se.draftId,relativePath:Se.relativePath})}),yn=await qt.json().catch(()=>({}));if(!qt.ok||!yn?.success||typeof yn?.draftId!="string")throw new Error(yn?.error||"Failed to finalize avatar upload.");const xs=hr;return Qo(yn.draftId),Jo(typeof yn?.avatarUrl=="string"?yn.avatarUrl:""),as(null),xs&&xs!==yn.draftId&&Ds(xs),!0}catch(w){return ns(w instanceof Error?w.message:"Failed to upload profile photo."),!1}finally{Jd(!1)}},[Rn,Ds,hr,En]),pu=r.useCallback(()=>{if(!hr)return;const u=hr;Qo(null),Jo(jr),as(null),ns(null),Ds(u)},[jr,Ds,hr]),fu=r.useCallback(()=>{const u=hr;Qo(null),Jo(""),as(jr?"Profile photo will be removed when you save.":null),ns(null),u&&Ds(u)},[jr,Ds,hr]),hu=r.useCallback(async()=>{const u=Rl.trim();if(!u){ns("Display name is required."),as(null);return}Nl(!0),ns(null),as(null);const w=await Ba({displayName:u,avatarDraftId:hr,clearAvatar:!hr&&!Ss&&!!jr});if(!w.success){ns(w.error||"Failed to update profile."),Nl(!1);return}as("Profile updated."),Qo(null),Jo(""),Nl(!1),bc(!1),wl(!1)},[jr,hr,Ss,Rl,Ba]),rs=r.useCallback(()=>{const u={},w=String(Es||"").trim();w&&(u["x-taskforce-workspace-id"]=w);const N=_c||ba;return(N==="owner"||N==="admin"||N==="member"||N==="read-only")&&(u["x-taskforce-workspace-role"]=N),u},[ba,Es,_c]),Ul=r.useCallback(u=>{const w=Zt,N=Xo;Wi.current=ad(),Pl.current={billing:w,teamManagement:N},Ut("account_surface_opened",{surface:u,expectsBilling:w,expectsTeamManagement:N}),!w&&!N&&(Ut("account_surface_ready",{surface:u,durationMs:0,teamManagementVisible:!1,billingPlanId:null}),Wi.current=null)},[Xo,Zt]),ti=r.useCallback(u=>{const w=Pl.current;if(w[u]=!1,w.billing||w.teamManagement)return;const N=Wi.current;N!==null&&(Ut("account_surface_ready",{surface:xo?"account_hub":ks?"account_menu":"closed",durationMs:Math.round(ad()-N),teamManagementVisible:Co,billingPlanId:String(ga?.planId||"").trim()||null}),Wi.current=null)},[ga?.planId,Co,xo,ks]),Nr=r.useCallback(async u=>{const w=En(Gh);if(!Zt)return Al(null),Il(null),Cc(null),ji("unknown"),Ni(!1),Ma(null),Vh(w,{identityKey:Zn}),ti("billing"),ti("teamManagement"),null;const N=ad();Pc(!0),Il(null),Ni(Xo),Ma(null);try{const pe=await UW(w,{identityKey:Zn,force:u?.force===!0}),Se=pe?.workspaceRole==="owner"||pe?.workspaceRole==="admin"||pe?.workspaceRole==="member"||pe?.workspaceRole==="read-only"?pe.workspaceRole:null,ut=pe?.teamPlanMode==="team"||pe?.teamPlanMode==="personal"?pe.teamPlanMode:"unknown";return Al(pe),Cc(Se),ji(ut),Ma(null),Ut("account_profile_summary_resolved",{durationMs:Math.round(ad()-N),planId:String(pe?.planId||"").trim()||null,gate:String(pe?.gate||"").trim()||null,teamManagementAllowed:pe?.teamManagementAllowed===!0}),pe}catch(pe){const Se=pe instanceof Error?pe.message:"Failed to load account summary.",ut=!!Fi.current;return Il(Se),ut?Ma(null):(Cc(null),ji("unknown"),Ma(Se)),Ut("account_profile_summary_failed",{durationMs:Math.round(ad()-N),error:Se,preservedSummary:ut}),Fi.current}finally{Pc(!1),Ni(!1),ti("billing"),ti("teamManagement")}},[Zn,Xo,Zt,ti,En]),gu=r.useCallback(u=>{Al(u);const w=u?.workspaceRole==="owner"||u?.workspaceRole==="admin"||u?.workspaceRole==="member"||u?.workspaceRole==="read-only"?u.workspaceRole:null,N=u?.teamPlanMode==="team"||u?.teamPlanMode==="personal"?u.teamPlanMode:"unknown";Cc(w),ji(N)},[]),zl=r.useMemo(()=>Kp(ga).allowReturnToApp,[ga]),Qm=r.useCallback(async()=>{const u=new URLSearchParams;u.set("screen","plans"),u.set("interval",Ys);const w=String(ga?.planId||"").trim(),N=String(ga?.planVersionId||"").trim();w&&u.set("planId",w),N&&u.set("planVersionId",N),s(`/?${u.toString()}`)},[ga?.planId,ga?.planVersionId,Ys,s]),Wc=r.useCallback(async()=>{zr(null),Tl(null),Li(!0);try{const u=await fetch(En("/api/taskforce/billing/portal-session"),{method:"POST",credentials:"include"}),w=await u.json().catch(()=>({}));if(!u.ok){zr(String(w?.error||"Failed to create portal session."));return}const N=String(w?.url||"").trim();if(!N){zr("Portal session did not return a redirect URL.");return}window.location.assign(N)}catch{zr("Failed to open billing portal.")}finally{Li(!1)}},[En]),yu=r.useCallback(async()=>{zr(null),Tl(null),Li(!0);try{const u=String(ga?.planVersionId||"").trim();if(!u){zr("No active plan version is linked to this account.");return}const w=await fetch(En("/api/taskforce/billing/subscription"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({planVersionId:u,interval:Ys})}),N=await w.json().catch(()=>({}));if(!w.ok){zr(String(N?.error||"Failed to update subscription interval."));return}Tl("Subscription updated."),Vh(En(Gh),{identityKey:Zn}),await Nr()}catch{zr("Failed to update subscription interval.")}finally{Li(!1)}},[ga?.planVersionId,Zn,Ys,Nr,En]);r.useEffect(()=>{!Zt||!dn||Nr()},[dn,Zt,Nr]),r.useEffect(()=>{!xo&&!ks||Nr()},[Nr,xo,ks]);const ni=r.useCallback(async()=>{if(Ec){Tc(!0),Rr(null);try{const u=await fetch("/api/taskforce/admin/users",{method:"GET",credentials:"include",headers:rs()}),w=await u.json().catch(()=>({}));if(!u.ok){Rr(w?.error||"Failed to load workspace users.");return}const N=Array.isArray(w?.users)?w.users:[],pe={owner:0,admin:1,member:2,"read-only":3},Se=N.map(ut=>({userId:String(ut?.userId||""),email:String(ut?.email||""),displayName:typeof ut?.displayName=="string"?ut.displayName:null,role:ut?.role==="owner"||ut?.role==="admin"||ut?.role==="member"||ut?.role==="read-only"?ut.role:"member",permissionMode:ut?.permissionMode==="read-only"?"read-only":"read-write",status:String(ut?.status||"active"),disabled:ut?.disabled===!0}));Se.sort((ut,qt)=>{const yn=(pe[ut.role]??99)-(pe[qt.role]??99);return yn!==0?yn:(ut.displayName||ut.email).localeCompare(qt.displayName||qt.email,void 0,{sensitivity:"base"})}),_l(Se)}catch{Rr("Failed to load workspace users.")}finally{Tc(!1)}}},[Ec,rs]),Io=r.useCallback(async u=>{if(!Ec)return;const w=Math.max(0,Math.floor(u));Gd(!0),Rr(null);try{const N=w*eu,pe=await fetch(`/api/taskforce/admin/workspace-audit-logs?limit=${eu}&offset=${N}`,{method:"GET",credentials:"include",headers:rs()}),Se=await pe.json().catch(()=>({}));if(!pe.ok){Rr(Se?.error||"Failed to load workspace audit log.");return}const ut=Array.isArray(Se?.events)?Se.events:[];$m(ut.map(yn=>({id:String(yn?.id||""),action:String(yn?.action||""),actorUserId:String(yn?.actorUserId||""),actorRole:String(yn?.actorRole||""),createdAt:String(yn?.createdAt||yn?.ts||"")}))),Fm(w);const qt=Math.max(1,Number(Se?.pages||1));Hm(qt),zm(w+1<qt)}catch{Rr("Failed to load workspace audit log.")}finally{Gd(!1)}},[Ec,rs]),Fc=r.useCallback(async()=>{await Promise.all([ni(),Io(Ms)])},[ni,Io,Ms]),Oc=r.useCallback((u="login")=>{const w=`${o.pathname}${o.search}${o.hash}`,N=!w||w==="/login"||!w.startsWith("/")?"/":w;tr(!1),_o(!1),Ll(),s(`/login?mode=${u}&next=${encodeURIComponent(N)}`)},[Ll,o.hash,o.pathname,o.search,s]),Oi=r.useCallback(u=>{tr(!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(Yo)return;if(Hr(!0),!Zt){try{m()}finally{Hr(!1)}return}const u=Fi.current;if(u&&!Kp(u).allowReturnToApp){Hr(!1);return}m(),(async()=>{try{const w=await e.continueAfterCommercialOnboarding();if(!w.success){At(w.error||"Unable to finish onboarding.","error"),w.destination==="login"&&s("/login",{replace:!0});return}w.destination==="setup"&&Oi()}finally{Hr(!1)}})()},[Fi,m,Zt,s,Oi,Yo,e,At]),Hl=r.useCallback(()=>{if(i){ai();return}It(()=>{Ir(),x("tasks"),Bo(!1),pr(null),sa(null),zs(null),pi(!1),y==="add"&&O(),k("tasks"),(o.pathname!=="/"||o.search)&&s("/")})},[y,Ir,It,ai,i,o.pathname,o.search,s,O,k,x]),Gl=r.useCallback(async u=>{if(!(!u||xc)){bl(""),Fd(!0);try{const w=await Mn(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 J(!0),tr(!1)}finally{Fd(!1)}}},[Mn,xc,J,Oi]),$c=r.useCallback(async()=>{tr(!1),$d(!0),Ri("members"),((await Nr())?.teamManagementAllowed??Co)&&(await ni(),await Io(0))},[Co,Nr,Io,ni]),To=r.useCallback(async(u,w)=>{Rr(null),Ko(u);try{const N=await w(),pe=await N.json().catch(()=>({}));if(!N.ok){Rr(pe?.error||"Team management action failed.");return}await Fc()}catch{Rr("Team management action failed.")}finally{Ko(null)}},[Fc]),Vl=r.useCallback(async()=>{const u=Mi.trim();if(u){Cl(!0),Rr(null),Zo(null);try{const w=await fetch("/api/taskforce/admin/users/invite",{method:"POST",headers:{"Content-Type":"application/json",...rs()},credentials:"include",body:JSON.stringify({workspaceId:Es,email:u,role:Ps,permissionMode:Ps==="member"?Di:"read-write"})}),N=await w.json().catch(()=>({}));if(!w.ok){Rr(N?.error||"Failed to send invite.");return}Rc(""),N?.inviteEmailSent===!1?Zo(`Invite created, but email delivery failed${N?.inviteEmailError?`: ${String(N.inviteEmailError)}`:"."}`):Zo("Invite sent."),await Fc()}catch{Rr("Failed to send invite.")}finally{Cl(!1)}}},[Yt,Fc,rs,Mi,Di,Ps]),$i=r.useMemo(()=>we.trim().length>0,[we]),Xm=r.useMemo(()=>qo.filter(u=>u.status==="invited"),[qo]),ql=r.useMemo(()=>{const u=Ke.length!==S.length,w=Ne.length!==We.length,N=Jt.length!==tt.length,pe=L.length!==no.length,Se=Ft.length!==rn.length,ut=sn.length>0,qt=Xr.length>0;return u||w||N||pe||Se||ut||qt},[S.length,We.length,rn.length,Ft.length,Ke.length,Jt.length,L.length,Ne.length,tt.length,sn,Xr]),ku=r.useMemo(()=>ho.length!==em.length||go.length!==tm.length,[go.length,ho.length]),vu=on,Qs=r.useMemo(()=>GO(vu),[vu]),Su=r.useMemo(()=>{switch(Qs.filterBar.kind){case"task-filters":return ql;case"document-filters":return ku;default:return!1}},[ku,ql,Qs.filterBar.kind]),Kl=$i||ql,wu=Vt==="archived"?Ua.length:Vt==="deleted"?za.length:me.length,bu=Vt==="archived"?vi.length:Vt==="deleted"?wi.length:e.filteredTasks.length,ep=Kl?`${bu}/${wu}`:`${wu}`,Zl=Kl?`${Vt.charAt(0).toUpperCase()+Vt.slice(1)} tasks matching current filters`:`${Vt.charAt(0).toUpperCase()+Vt.slice(1)} tasks`,tp=Kt==="local"&&Zt,ri=r.useCallback(u=>{if(!u)return"Never";const w=new Date(u);return Number.isNaN(w.getTime())?"Never":w.toLocaleString()},[]),Yl=r.useMemo(()=>ri(Sa),[ri,Sa]),xu=r.useMemo(()=>ri(ua),[ri,ua]),_u=r.useMemo(()=>ri(zn),[ri,zn]),Cu=Dl||vn||Pn||"None",ws=Sn(),bs=r.useMemo(()=>TW({runtimeMode:Kt,isAuthenticated:Zt,workspaceSyncStatus:Un,workspaceCloudSyncEnabled:Va,workspaceSyncSummary:br,workspaceSyncRecommendedAction:da,workspaceSyncError:Cu,pushBlockedReason:ws.pushBlockedReason||null,pullBlockedReason:ws.pullBlockedReason||null,retryBlockedReason:ws.retryBlockedReason||null}),[Kt,Zt,Un,Va,br,da,Cu,ws.pushBlockedReason,ws.pullBlockedReason,ws.retryBlockedReason]),Au=bs.lastError,[Iu,np]=r.useState(bs.status),f=r.useMemo(()=>LW(ws),[ws]),{syncRecentEvents:B,syncRecentEventsLoading:V,syncRecentEventsError:Z,syncEventsListRef:He,loadRecentSyncEvents:Be}=u5({isOpen:El,workspaceId:Yt,refreshKeys:[zn,ua,sr,Un]}),Ve=bs.actionable&&Un==="syncing"&&ka==="active"&&Nn===0;r.useEffect(()=>{if(!Ve){np(bs.status);return}const u=window.setTimeout(()=>{np(bs.status)},1200);return()=>window.clearTimeout(u)},[bs.status,Ve]);const fn=r.useMemo(()=>BW({syncRecentEvents:B,syncRecentEventsError:Z,syncRecentEventsLoading:V}),[B,Z,V]),hn=r.useMemo(()=>WW(B),[B]),On=r.useMemo(()=>FW(B),[B]),xn=r.useMemo(()=>DW(Iu),[Iu]),{workspaceSyncRepairBusy:Ea,workspaceSyncRepairQueued:Pr,workspaceSyncCopied:Jl,handleCopySyncDetails:Gy,handleQueueOrRunRepairSync:Vy}=f5({currentWorkspaceId:Yt,syncStatusLabel:xn.label,workspaceSyncSummary:bs.summary,workspaceSyncRecommendedAction:bs.recommendedAction,formattedLastSyncTime:Yl,formattedLastPullTime:xu,formattedLastPushTime:_u,workspaceSyncDiagnostics:ws,workspaceSyncPendingChanges:Nn,syncLastError:Au,workspaceSyncPhase:ka,referenceMismatchCount:hn,syncRecentEvents:B,loadRecentSyncEvents:Be,pushNotice:At,resetWorkspaceSyncCursorAndPull:wa,workspaceSyncBusy:Dn}),qy=r.useMemo(()=>By(ka,Ea,Dn),[Dn,ka,Ea]),Tf=r.useMemo(()=>dd($s)||new Date,[$s]),Ui=r.useMemo(()=>Xp(Tf,cn),[Tf,cn]),Ro=r.useMemo(()=>{const u={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return ag.forEach(w=>{const N=i5(w,cn);u[w]=Jc(Uy(Ui,N))}),u},[Ui,cn]),Rf=r.useCallback(u=>{const w=dd(u);if(!w)return Ro.mon;const N=w.getDay();return Ro[N===1?"mon":N===2?"tue":N===3?"wed":N===4?"thu":N===5?"fri":N===6?ve?"sat":"fri":ve?"sun":"fri"]||Ro.mon},[Ro,ve]),Ky=r.useCallback(async()=>{if(!(bo||Ai.length===0)){Ii(!0);try{for(const u of Ai){const w=u.scheduledDate||u.dueDate||Jn,N=Rf(w);await _(u.id,{scheduledDate:N,scheduledWeekKey:c5(N),orderInDay:null})}await J(!0)}finally{Ii(!1)}}},[bo,Ai,Jn,Rf,_,J]),Zy=r.useCallback(async()=>{if(!(bo||wo.length===0)){Ii(!0);try{for(const u of wo)await _(u.id,{scheduledDate:null,scheduledWeekKey:null,orderInDay:null});await J(!0)}finally{Ii(!1)}}},[bo,wo,_,J]),Yy=r.useMemo(()=>vm(Ui,{month:"short",day:"numeric",year:"numeric"},Fn),[Ui,Fn]),jf=r.useMemo(()=>{const N=(ve?cn==="sunday"?["sun","mon","tue","wed","thu","fri","sat"]:ag:["mon","tue","wed","thu","fri"]).map(Se=>{const ut=dd(Ro[Se])||Ui,qt=Ro[Se],yn=Se==="sat"||Se==="sun";return{value:Se,label:`${o5[Se]} ${vm(ut,{month:"short",day:"numeric"},Fn)}`,color:yn?"#1e3a8a":"#3b82f6",icon:"Calendar",date:qt,isPast:qt<Jn,isSelected:qt===$s,isWeekend:yn}}),pe=vc.length>0;return[...Ra?[{value:"backlog",label:"Backlog",color:"#64748b",icon:"Inbox"}]:[],...pe?[{value:"expired",label:"Expired",color:"#ef4444",icon:"AlertTriangle"}]:[],...N]},[ve,Ra,Ro,Ui,vc.length,Jn,$s,cn,Fn]),Nf=r.useMemo(()=>{switch(h){case"category":return S;case"type":return(We||[]).map(u=>({...u,icon:u.icon||mm[u.value]?.icon,color:u.color||mm[u.value]?.color}));case"priority":return tt;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 Ze;case"assignee":return rn.map(u=>({value:u.value,label:u.label,icon:u.icon==="HelpCircle"?"Circle":u.icon,color:u.color}));case"status":return[...no.filter(u=>u.value!=="done"&&u.value!=="cancelled"),{value:"completed",label:"Completed",icon:pd("done").icon,color:pd("done").color}];case"schedule":return jf;default:return S}},[h,S,We,tt,Ze,rn,jf]),Jy=n.jsxs("div",{className:mt.accountMenuWrap,ref:tu,children:[n.jsx("button",{className:`tf-control-icon ${mt.avatarBtn}`,onClick:()=>{tr(u=>{const w=!u;return w?Ul("account_menu"):(Wi.current=null,Pl.current={billing:!1,teamManagement:!1}),w})},title:Zt?"Account":"Account (Not signed in)","aria-label":Zt?"Account":"Account (Not signed in)","aria-haspopup":"menu","aria-expanded":ks,children:n.jsx("span",{className:mt.avatarBadge,"aria-hidden":"true",children:ou?n.jsx("img",{src:Fl,alt:"",className:mt.avatarImage}):Lc||n.jsx(ii,{size:14,className:mt.avatarIcon})})}),ks&&n.jsxs("div",{className:mt.accountMenu,role:"menu","aria-label":"Account menu",children:[n.jsxs("div",{className:mt.accountMenuSection,children:[n.jsx("div",{className:mt.accountMenuSectionLabel,children:"Account"}),n.jsx("div",{className:mt.accountMenuHint,children:du?"Checking sign-in status...":Zt?n.jsx(n.Fragment,{children:Dc?n.jsx(n.Fragment,{children:n.jsxs("span",{className:mt.accountIdentityBlock,children:[n.jsx("span",{className:mt.accountIdentityEmail,children:Js}),ru&&ei&&n.jsxs("span",{className:mt.accountIdentityMetaLine,children:[n.jsx("span",{className:mt.accountIdentityMetaLabel,children:"Email"}),n.jsx("span",{className:mt.accountIdentityMetaValue,children:Ao})]}),qd?n.jsxs("span",{className:mt.accountIdentityMetaLine,children:[n.jsx("span",{className:mt.accountIdentityMetaLabel,children:"Subscription"}),n.jsx("span",{className:mt.accountIdentityMetaValue,children:"Loading…"})]}):iu?n.jsxs("button",{"aria-label":`Subscription ${Bc}`,className:`${mt.accountIdentityMetaLine} ${mt.accountIdentityMetaAction}`,onClick:()=>{tr(!1),d()},type:"button",children:[n.jsx("span",{className:mt.accountIdentityMetaLabel,children:"Subscription"}),n.jsx("span",{className:mt.accountIdentityMetaValue,children:Bc})]}):Mc?n.jsxs("span",{className:mt.accountIdentityMetaLine,children:[n.jsx("span",{className:mt.accountIdentityMetaLabel,children:"Subscription"}),n.jsx("span",{className:mt.accountIdentityMetaValue,children:"Unavailable"})]}):null,n.jsxs("span",{className:mt.accountIdentityMetaLine,children:[n.jsx("span",{className:mt.accountIdentityMetaLabel,children:"Runtime"}),n.jsx("span",{className:mt.accountIdentityMetaValue,children:cu})]}),n.jsxs("span",{className:mt.accountIdentityMetaLine,children:[n.jsx("span",{className:mt.accountIdentityMetaLabel,children:"Environment"}),n.jsx("span",{className:mt.accountIdentityMetaValue,children:lu})]})]})}):"Signed in"}):"Not signed in"})]}),Vm&&n.jsxs("div",{className:mt.accountMenuSection,children:[n.jsx("div",{className:mt.accountMenuSectionLabel,children:"Workspaces (Owned + Invited)"}),Hn.length===0&&n.jsx("div",{className:mt.accountMenuHint,children:"No workspaces found for this account yet."}),Hn.map(u=>n.jsxs("button",{className:`${mt.accountMenuItem} ${u.id===Yt?mt.accountMenuItemActive:""}`,onClick:()=>Gl(u.id),role:"menuitem",disabled:xc||u.id===Yt,title:u.description||u.name,children:[n.jsx(Po,{size:15}),n.jsxs("span",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:[n.jsx("span",{children:u.name}),n.jsx("span",{className:mt.accountMenuMeta,children:u.role})]})]},u.id)),n.jsxs("button",{className:mt.accountMenuItem,onClick:()=>{bl(""),Ti(!0),tr(!1)},role:"menuitem",disabled:xc,children:[n.jsx(ro,{size:15}),"Create Workspace"]}),Od&&n.jsx("div",{className:mt.accountMenuError,children:Od})]}),Ud?n.jsx("div",{className:mt.accountMenuHint,children:"Resolving team management access..."}):Co?n.jsxs("button",{className:mt.accountMenuItem,onClick:()=>{$c()},role:"menuitem",children:[n.jsx(zk,{size:15}),"Team Management"]}):Wm?n.jsx("div",{className:mt.accountMenuHint,children:"Team Management unavailable right now."}):null,Zt&&n.jsxs("button",{className:mt.accountMenuItem,onClick:()=>{tr(!1),wl(!0)},role:"menuitem",children:[n.jsx(ii,{size:15}),"Edit Profile"]}),n.jsxs("button",{className:mt.accountMenuItem,onClick:()=>{tr(!1),d()},role:"menuitem",children:[n.jsx(Ep,{size:15}),"Plans"]}),n.jsxs("button",{className:mt.accountMenuItem,onClick:()=>{tr(!1),Ul("account_hub"),_o(!0)},role:"menuitem",children:[n.jsx(ii,{size:15}),"Account Hub"]}),n.jsxs("button",{className:mt.accountMenuItem,onClick:()=>{tr(!1),Vo(!0)},role:"menuitem",children:[n.jsx(Ji,{size:15}),"Help & Support"]}),n.jsxs("button",{className:mt.accountMenuItem,onClick:()=>{tr(!1),Vo(!0)},role:"menuitem",children:[n.jsx(mg,{size:15}),"Contact Support"]}),Kt==="local"&&!Zt&&!du&&n.jsxs("button",{className:mt.accountMenuItem,onClick:()=>{Oc("login")},role:"menuitem",children:[n.jsx(ii,{size:15}),"Sign In / Register"]}),Zt&&n.jsxs("button",{className:mt.accountMenuItem,onClick:async()=>{tr(!1),await Mr(),Kt==="cloud"&&s("/login",{replace:!0})},role:"menuitem",children:[n.jsx(Hk,{size:15}),"Sign Out"]})]})]}),Pf=r.useCallback(()=>{C(u=>u==="show"?"collapse":u==="collapse"?"hide":"show")},[C]),Mf=r.useCallback(()=>{O(),x("tasks"),k("add")},[O,k,x]),Qy=r.useCallback(u=>{const w=e.workstreams.find(N=>N.id===u);O(),he(Eo(w)||u),x("tasks"),k("add")},[e.workstreams,O,k,x,he]),Ef=r.useCallback(u=>{qs.current=!1,Vs(!1),zs(u),gn(!1),Hs(null),Qa(!1),Gs(""),fr(""),aa("");const w=u.entityType==="workstream"&&sn&&xt.initiativeById.get(sn)||null;es(w?os(w):""),sa(null)},[xt.initiativeById,sn]),Df=r.useCallback((u,w)=>{qs.current=!1,Vs(!1),Hs(u),Qa(!1),Gs(""),fr(""),aa("");const N=u.entityType==="workstream"&&((w?xt.initiativeById.get(w):null)||sn&&xt.initiativeById.get(sn))||null;es(N?os(N):""),sa(null)},[xt.initiativeById,sn]),ap=r.useCallback(()=>{qs.current=!1,Vs(!1),zs(null),Gs(""),fr(""),aa(""),es("")},[]),Lf=r.useCallback(()=>{qs.current=!1,Vs(!1),Hs(null),Gs(""),fr(""),aa(""),es("")},[]),Xy=r.useCallback(async()=>{const u=po||fs;if(!u||qs.current)return;qs.current=!0,Vs(!0);const w=!!po,N=pn.trim()||null;try{if(u.entityType==="initiative")if(u.mode==="edit")await e.updateInitiative(u.targetId,{title:Wo.trim()||"Untitled Initiative",description:fo.trim()||null,ownerId:N}),pr({type:"initiative",id:u.targetId}),sa(null),At("Initiative updated","success");else{const pe=await e.createInitiative({title:Wo.trim()||"Untitled Initiative",description:fo.trim()||null,ownerId:N});pr({type:"initiative",id:pe.id}),sa(null),At("Initiative created","success")}else{const pe=Xa.trim(),Se=pe.length===0?null:vp(xt.initiatives,pe);if(pe.length>0&&!Se){At("Initiative not found by that reference.","error");return}const ut={title:Wo.trim()||"Untitled Workstream",description:fo.trim()||null,ownerId:N,initiativeId:Se?.id||null};if(u.mode==="edit")await e.updateWorkstream(u.targetId,ut),w?sa(u.targetId):(pr({type:"workstream",id:u.targetId}),sa(null)),At("Workstream updated","success");else{const qt=await e.createWorkstream(ut);w?sa(qt.id):(pr({type:"workstream",id:qt.id}),sa(null)),At("Workstream created","success")}}w?Lf():ap()}catch(pe){At(pe instanceof Error?pe.message:"Failed to save planning item.","error")}finally{qs.current=!1,Vs(!1)}},[ap,Lf,fo,Xa,pn,Wo,fs,po,xt.initiatives,e,At]),ek=r.useCallback(u=>{oc(w=>{const N=new Set(w);return N.has(u)?N.delete(u):N.add(u),N})},[]),tk=r.useCallback(u=>{uo(w=>w===u?"":u),mo("")},[]),nk=r.useCallback((u,w)=>{mo(N=>{const pe=N===u?"":u;return uo(pe&&w||""),pe})},[]),ak=r.useCallback(u=>{zs(null),Hs(null),gn(!1),Qa(!1),pr(u?{type:"initiative",id:u}:null),sa(null)},[]),rk=r.useCallback(u=>{zs(null),Hs(null),gn(!1),Qa(!1),pr(u?{type:"workstream",id:u}:null),sa(null)},[]),sk=r.useCallback(u=>{Hs(null),Qa(!1),sa(u)},[]),rp=r.useCallback((u,w)=>{if(u==="workstream"&&w){Df({mode:"create",entityType:"workstream"},w);return}if(Ef({mode:"create",entityType:u}),u==="workstream"){const N=(w?xt.initiativeById.get(w):null)||(sn?xt.initiativeById.get(sn):null)||null;es(N?os(N):"")}},[Ef,Df,xt.initiativeById,sn]),Bf=r.useCallback((u,w)=>{if(u==="initiative"){const N=xt.initiativeById.get(w);if(!N)return;zs({mode:"edit",entityType:"initiative",targetId:w}),Gs(N.title),fr(N.description||""),aa(N.ownerId?String(N.ownerId):""),es("")}else{const N=xt.workstreamById.get(w)||xt.standaloneWorkstreams.find(Se=>Se.id===w);if(!N)return;zs({mode:"edit",entityType:"workstream",targetId:w}),Gs(N.title),fr(N.description||""),aa(N.ownerId?String(N.ownerId):"");const pe=N.initiativeId&&xt.initiativeById.get(N.initiativeId)||null;es(pe?os(pe):"")}sa(null)},[xt.initiativeById,xt.standaloneWorkstreams,xt.workstreamById]),Tu=r.useCallback(async(u,w)=>{const N=e.workstreams.find(qt=>qt.id===u);if(!N){At("Workstream not found.","error");return}const pe=typeof w=="string"?w.trim():w===null?"":Xa.trim(),Se=pe.length===0?null:vp(xt.initiatives,pe);if(pe.length>0&&!Se){At("Initiative not found by that reference.","error");return}const ut=Se?.id||null;if((N.initiativeId||null)===ut){At(ut?"Workstream already belongs to that initiative.":"Workstream is already standalone.","info");return}try{await e.updateWorkstream(u,{initiativeId:ut}),es(Se?os(Se):""),At(ut?"Initiative set":"Initiative removed","success")}catch{At("Failed to set initiative.","error")}},[Xa,xt.initiatives,e,At]),Ru=r.useCallback(async(u,w)=>{const N=pc.get(u);if(!N){At("Task not found.","error");return}const pe=w||null;if(xt.initiativeById.has(u)||xt.workstreamById.has(u)){At("Only execution tasks can be moved into workstreams.","error");return}if(pe&&!xt.workstreamById.has(pe)){At("Workstream not found.","error");return}if((N.workstreamId||null)===pe){At(pe?"Task already belongs to that workstream.":"Task is already standalone.","info");return}try{const Se=await fetch(`/api/taskforce/task/${u}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({workstreamId:pe})});if(!Se.ok){const ut=await Se.json().catch(()=>({}));At(ut?.error||"Failed to set workstream.","error");return}await Se.json().catch(()=>null),await J(!0),At(pe?"Workstream set":"Workstream removed","success")}catch{At("Failed to set workstream.","error")}},[J,pc,xt.initiativeById,xt.workstreamById,At]),ok=r.useCallback(async(u,w)=>{const N=w.trim();if(!N){At("Enter a task reference.","error");return}const pe=jg(N),Se=_i.find(ut=>ut.id===N||Xi(ut)===N||pe!==null&&ut.referenceNumber===pe);if(!Se){At("Task not found by that reference.","error");return}await Ru(Se.id,u)},[Ru,_i,At]),ik=r.useCallback(async(u,w)=>{const N=w.trim();if(!N){At("Enter a workstream reference.","error");return}const pe=xt.initiativeById.get(u);if(!pe){At("Initiative not found.","error");return}const Se=ay(N),ut=e.workstreams.find(qt=>qt.id===N||Eo(qt)===N||Se!==null&&qt.referenceNumber===Se);if(!ut){At("Workstream not found by that reference.","error");return}await Tu(ut.id,os(pe))},[Tu,xt.initiativeById,e.workstreams,At]),Uc=r.useCallback((u,w)=>{const N=`${u}:${w}`,pe=sl.current.get(N);if(pe)return pe;const Se=u==="initiative"?e.initiatives.find(ut=>ut.id===w):e.workstreams.find(ut=>ut.id===w);return Array.isArray(Se?.attachments)?Se.attachments:[]},[e.initiatives,e.workstreams]),zc=r.useCallback((u,w,N)=>{const pe=`${u}:${w}`;sl.current.set(pe,N);const ut=(oa.current.get(pe)||Promise.resolve()).catch(()=>{}).then(()=>u==="initiative"?e.updateInitiative(w,{attachments:N}):e.updateWorkstream(w,{attachments:N}));oa.current.set(pe,ut),ut.catch(qt=>{At(qt instanceof Error?qt.message:"Failed to update planning context.","error")}).finally(()=>{oa.current.get(pe)===ut&&oa.current.delete(pe)})},[e,At]),ck=r.useCallback((u,w,N)=>{const pe=Uc(u,w);zc(u,w,[...pe,N])},[Uc,zc]),lk=r.useCallback((u,w,N)=>{const pe=Uc(u,w);zc(u,w,pe.filter((Se,ut)=>ut!==N))},[Uc,zc]),dk=r.useCallback((u,w,N,pe)=>{const ut=Uc(u,w).map((qt,yn)=>yn!==N?qt:typeof qt=="string"?{path:qt,caption:pe,timestamp:new Date().toISOString()}:{...qt,caption:pe});zc(u,w,ut)},[Uc,zc]),Wf=r.useCallback(u=>{uo(u),mo("")},[]),Ff=r.useCallback(u=>{mo(u),uo(u&&xt.workstreamInitiativeIds.get(u)||"")},[xt.workstreamInitiativeIds]),sp=r.useCallback(u=>{const w=ng(u,js);if(w!==u){const N=js.find(pe=>pe.id===u)?.label||"That module";At(`${N} is not available in this build yet.`,"error");return}Ir(),x(w)},[Ir,At,x,js]),Of=r.useCallback(()=>{if(on==="tasks"&&Or){Bo(!1),pr(null),sa(null),zs(null);return}if(on!=="tasks"){x("tasks"),Bo(!0);return}Bo(u=>!u)},[Or,on,x]),$f=r.useCallback(()=>{if(on!=="docs"){x("docs"),rc(!0);return}rc(u=>!u)},[on,x]),Uf=r.useCallback(()=>{if(on!=="annotate"){x("annotate"),co(!0);return}co(u=>!u)},[on,x]),zf=r.useCallback(()=>{if(on!=="agents"){x("agents"),Ts(!0);return}Ts(u=>!u)},[on,x]),uk=r.useCallback(u=>{Ir(),x("tasks"),Ot(u)},[Ir,Ot,x]),mk=r.useCallback(u=>{Ir(),x("tasks"),Ot(u)},[Ir,Ot,x]),pk=r.useCallback((u,w)=>{hs(u),gi(w?.sessionId??null),Cd(N=>N+1),x("annotate")},[x]),fk=r.useCallback(({target:u,sessionId:w})=>{hs(N=>!N&&!u||N&&u&&N.taskId===u.taskId&&N.taskReferenceLabel===u.taskReferenceLabel&&N.assetId===u.assetId&&N.imageReferenceLabel===u.imageReferenceLabel&&N.path===u.path&&N.displayName===u.displayName?N:u),gi(N=>N===w?N:w)},[]),Hf=r.useMemo(()=>[{value:"created",label:qe("standalone.sortCreated")},{value:"updated",label:qe("standalone.sortUpdated")},{value:"priority",label:qe("standalone.sortPriority")},{value:"complexity",label:qe("standalone.sortComplexity")},...iy(Dt,[...e.searchAgnosticTasks,...Ua])],[Ua,e.searchAgnosticTasks,Dt]),Gf=r.useMemo(()=>[{value:"status",label:qe("standalone.groupStatus")},{value:"category",label:qe("standalone.groupCategory")},{value:"type",label:qe("standalone.groupType")},{value:"priority",label:qe("standalone.groupPriority")},{value:"complexity",label:qe("standalone.groupComplexity")},{value:"assignee",label:qe("standalone.groupAssignee")},{value:"schedule",label:qe("standalone.groupSchedule")}],[]),Vf=r.useMemo(()=>js.filter(u=>u.enabled),[js]),qf=r.useMemo(()=>[{key:"empty-columns",icon:I==="show"?n.jsx(Zf,{size:16}):I==="collapse"?n.jsx(Yf,{size:16}):n.jsx(af,{size:16}),title:qe(I==="show"?"standalone.showEmptyColumns":I==="collapse"?"standalone.compressEmptyColumns":"standalone.hideEmptyColumns"),onClick:Pf,active:I!=="show"},{key:"compressed-cards",icon:nt?n.jsx(Gk,{size:16}):n.jsx(Vk,{size:16}),title:qe(nt?"standalone.expandCards":"standalone.compressCards"),onClick:()=>bt(!nt),active:nt}],[nt,Pf,I]),hk=r.useMemo(()=>[{key:"filter-toggle",icon:n.jsx(fg,{size:16}),title:qe("standalone.toggleFilters"),onClick:()=>ui(!io),active:io,className:Su?p.filterGlow:""}],[Su,ui,io]),gk=r.useMemo(()=>{switch(Qs.filterBar.kind){case"task-filters":return n.jsx(iF,{categoryFilterOptions:uc,typeFilterOptions:hl,priorities:tt,taxonomyDisplayLabels:Fe,filterCategories:Ke,setFilterCategories:Je,filterTypes:Ne,setFilterTypes:zt,filterPriorities:Jt,setFilterPriorities:Pt,filterStatus:L,setFilterStatus:X,filterAssignees:Ft,setFilterAssignees:Lt,assigneeOptions:rn,initiativeFilterOptions:Pd,selectedInitiativeId:sn,setSelectedInitiativeId:Wf,workstreamFilterOptions:hc,selectedWorkstreamId:Xr,setSelectedWorkstreamId:Ff,taskScope:Vt,setTaskScope:Vn,showArchive:So,setShowArchive:ml,fetchArchive:pl,onDeleteAllDeleted:()=>{const u=za.length;u===0||!window.confirm(`Permanently delete ${u} deleted task${u===1?"":"s"}? This cannot be undone.`)||c()},clearFilters:()=>{ca(),uo(""),mo("")}});case"document-filters":return n.jsx(cF,{typeFilters:ho,setTypeFilters:Fo,attachmentFilters:go,setAttachmentFilters:Oo,clearFilters:()=>{Fo(em.map(u=>u.value)),Oo(tm.map(u=>u.value))}});default:return n.jsx(sF,{})}},[rn,uc,ca,za.length,go,ho,Ft,Ke,Jt,L,Ne,Wf,Ff,Pd,tt,sn,Xr,Oo,Fo,Lt,Je,Pt,X,zt,uo,mo,ml,Vn,So,Vt,Fe,hl,hc,Qs.filterBar.kind,pl,c]),yk=r.useMemo(()=>[{key:"zen-toggle",icon:n.jsx(qk,{size:16,fill:D?"currentColor":"none"}),title:qe(D?"standalone.exitZenMode":"standalone.enterZenMode"),onClick:()=>U(),active:D}],[D,U]),kk=r.useMemo(()=>({search:n.jsx(aF,{value:we,placeholder:qe("standalone.searchPlaceholder"),active:$i,onChange:Ae,onClear:()=>Ae(""),clearTitle:qe("standalone.clearSearchTitle")}),sort:n.jsx(Yh,{label:n.jsxs(n.Fragment,{children:[n.jsx(Kk,{size:12})," ",qe("standalone.sortLabel")]}),value:qn,options:Hf,onChange:u=>Kn(u),trailingAction:n.jsx("button",{className:`tf-control-icon ${p.sortDirectionBtn}`,onClick:()=>e.toggleSortOrder(),title:e.sortOrder==="desc"?qe("standalone.sortDirectionDescTitle"):qe("standalone.sortDirectionAscTitle"),children:e.sortOrder==="desc"?n.jsx(cg,{size:14}):n.jsx(lg,{size:14})})}),"divider-primary":n.jsx(Jh,{}),grouping:n.jsx(Yh,{label:n.jsxs(n.Fragment,{children:[n.jsx(Ep,{size:12})," ",qe("standalone.groupLabel")]}),value:h,options:Gf,onChange:u=>g(u)}),"divider-secondary":n.jsx(Jh,{}),"task-display-actions":n.jsx(Cp,{actions:qf})}),[h,Gf,sp,$i,e,we,g,Ae,Kn,qn,Hf,qf,Qs.moduleId]),vk=r.useMemo(()=>({"add-task":n.jsx(rF,{icon:n.jsx(ro,{size:16}),label:qe("standalone.addTask"),onClick:Mf}),"add-document":null}),[Mf]),Ql=r.useMemo(()=>{const u={tasks:n.jsx(ev,{size:18}),docs:n.jsx(Dp,{size:18}),annotate:n.jsx(Xk,{size:18}),workflows:n.jsx(Jf,{size:18}),agents:n.jsx(nm,{size:18})},w=en.workspaceToolButtonDisabled,N=on==="docs"?n.jsx("button",{type:"button",className:`${en.workspaceToolButton} ${ms?en.workspaceToolButtonActive:""}`.trim(),onClick:$f,title:ms?"Collapse document tray":"Document tray","aria-label":ms?"Collapse document tray":"Document tray",children:ms?n.jsx(Mo,{size:18}):n.jsx(Po,{size:18})}):on==="annotate"?n.jsx("button",{type:"button",className:`${en.workspaceToolButton} ${Qr?en.workspaceToolButtonActive:""}`.trim(),onClick:Uf,title:Qr?"Collapse image tray":"Image tray","aria-label":Qr?"Collapse image tray":"Image tray",children:Qr?n.jsx(Mo,{size:18}):n.jsx(Po,{size:18})}):on==="agents"?n.jsx("button",{type:"button",className:`${en.workspaceToolButton} ${Is?en.workspaceToolButtonActive:""}`.trim(),onClick:zf,title:Is?"Collapse agent tray":"MCP settings tray","aria-label":Is?"Collapse agent tray":"MCP settings tray",children:Is?n.jsx(Mo,{size:18}):n.jsx(Jk,{size:18})}):on==="workflows"?n.jsx("button",{type:"button",className:`${en.workspaceToolButton} ${w}`.trim(),title:"Workflow tray coming soon","aria-label":"Workflow tray coming soon",disabled:!0,children:n.jsx(Jf,{size:18})}):n.jsx("button",{type:"button",className:`${en.workspaceToolButton} ${on==="tasks"&&Or?en.workspaceToolButtonActive:""}`.trim(),onClick:Of,title:on==="tasks"&&Or?"Collapse planning trays":"Planning","aria-label":on==="tasks"&&Or?"Collapse planning trays":"Planning",children:on==="tasks"&&Or?n.jsx(Mo,{size:18}):n.jsx(Qk,{size:18})});return n.jsxs("aside",{className:en.workspaceToolRail,"aria-label":"Workspace tools",children:[n.jsxs("div",{className:en.workspaceToolRailMain,children:[N,n.jsx("div",{className:en.workspaceToolRailDivider}),Vf.map(pe=>n.jsx("button",{type:"button",className:`${en.workspaceToolButton} ${on===pe.id?en.workspaceToolButtonActive:""}`.trim(),onClick:()=>sp(pe.id),title:pe.label,"aria-label":pe.label,children:u[pe.id]},pe.id))]}),n.jsxs("div",{className:en.workspaceToolRailBottom,children:[n.jsx("div",{className:en.workspaceToolRailDivider}),n.jsx("button",{type:"button",className:`${en.workspaceToolButton} ${y==="settings"?en.workspaceToolButtonActive:""}`.trim(),onClick:()=>{bn("general"),k("settings")},title:"Workspace Settings","aria-label":"Workspace Settings",children:n.jsx(nf,{size:18})})]})]})},[y,Is,ms,zf,$f,Uf,sp,Of,Qr,Or,on,bn,k,Vf]),[Kf,Sk]=r.useState(null),wk=r.useCallback(u=>{Sk(u)},[]),bk=n.jsx(WO,{open:Or,leftOffset:56,initiatives:xt.initiatives,standaloneWorkstreams:xt.standaloneWorkstreams,allStandaloneWorkstreams:xt.allStandaloneWorkstreams,activeInitiativeId:sn,activeWorkstreamId:Xr,expandedInitiativeIds:$r,detail:Go,editor:fs,secondaryPane:yc,currentWorkspaceId:Yt,assigneeOptions:rn.map(u=>({value:String(u.value),label:u.label,kind:u.kind,username:u.username??null,archivedAt:u.archivedAt??null})),draftInitiativeSummary:kc,draftTitle:Wo,draftDescription:fo,draftOwner:pn,draftInitiativeId:Xa,onChangeDraftTitle:Gs,onChangeDraftDescription:fr,onChangeDraftOwner:aa,onChangeDraftInitiativeId:es,onCollapseTreePane:()=>ps(!0),onExpandTreePane:()=>ps(!1),onCollapsePrimaryPane:()=>gn(!0),onExpandPrimaryPane:()=>gn(!1),onCollapseSecondaryPane:()=>Qa(!0),onExpandSecondaryPane:()=>Qa(!1),onBackFromSecondary:()=>{qs.current=!1,Vs(!1),Hs(null),sa(null)},treeCollapsed:lo,primaryCollapsed:fi,secondaryCollapsed:sc,onCancelEditor:ap,onSubmitEditor:Xy,isSubmittingEditor:hi,onCreateInitiative:()=>rp("initiative"),onCreateWorkstream:()=>rp("workstream"),onCreateTaskInWorkstream:Qy,onCreateWorkstreamInInitiative:u=>rp("workstream",u),onAssignInitiativeToWorkstream:Tu,onOpenTaskById:Ot,onRemoveTaskFromWorkstream:u=>{Ru(u,null)},onAttachTaskToWorkstreamByReference:ok,onAttachWorkstreamToInitiativeByReference:ik,onAddPlanningContextFile:ck,onRemovePlanningContextFile:lk,onUpdatePlanningContextCaption:dk,onToggleInitiative:ek,onSelectInitiative:tk,onSelectWorkstream:nk,onOpenInitiativeDetails:ak,onOpenWorkstreamDetails:rk,onOpenNestedWorkstreamDetails:sk,onEditInitiative:u=>Bf("initiative",u),onEditWorkstream:u=>Bf("workstream",u),onArchiveInitiative:u=>{e.archiveInitiative(u).then(()=>{At("Initiative archived","success")}).catch(w=>{At(w instanceof Error?w.message:"Failed to archive initiative.","error")})},onUnarchiveInitiative:u=>{e.unarchiveInitiative(u).then(()=>{At("Initiative unarchived","success")}).catch(w=>{At(w instanceof Error?w.message:"Failed to unarchive initiative.","error")})},onArchiveWorkstream:u=>{e.archiveWorkstream(u).then(()=>{At("Workstream archived","success")}).catch(w=>{At(w instanceof Error?w.message:"Failed to archive workstream.","error")})},onUnarchiveWorkstream:u=>{e.unarchiveWorkstream(u).then(()=>{At("Workstream unarchived","success")}).catch(w=>{At(w instanceof Error?w.message:"Failed to unarchive workstream.","error")})}}),xk=Qs.headerSections.map(u=>{const w=kk[u];return w?n.jsx(Ue.Fragment,{children:w},u):null}).filter(Boolean),_k=Qs.primaryAction?vk[Qs.primaryAction]:null;return n.jsxs("div",{className:`${en.standaloneWrapper} ${D?p.zenModeEnabled:""}`,"data-theme":Ce,children:[n.jsx(nF,{projectName:xa,currentWorkspaceId:Yt,runtimeMode:Kt,theme:Ce,onBrandClick:Hl,meta:n.jsxs(n.Fragment,{children:[n.jsx("span",{className:p.taskCountBadge,title:Zl,children:ep}),ts&&ts!=="anonymous"&&n.jsxs(n.Fragment,{children:[n.jsxs("span",{className:p.taskCountBadge,title:"Tasks assigned to me",children:[n.jsx(ii,{size:13,className:p.taskCountBadgeIcon,"aria-hidden":"true"}),Ld]}),n.jsxs("span",{className:`${p.taskCountBadge} ${Bd>0?p.taskCountBadgeAlert:""}`.trim(),title:"Tasks overdue",children:[n.jsx(Zk,{size:13,className:p.taskCountBadgeIcon,"aria-hidden":"true"}),Bd]})]}),tp&&n.jsx("button",{className:"tf-control-icon",onClick:Km,title:`Sync manager: ${xn.label} | Last success: ${Yl}`,style:{marginLeft:"6px",height:"24px",width:"24px",padding:0,borderRadius:"999px",border:`1px solid ${xn.border}`,background:xn.background,color:xn.color,display:"inline-flex",alignItems:"center",justifyContent:"center"},children:xn.icon==="off"?n.jsx(Yk,{size:16}):n.jsx(hg,{size:16})})]}),actions:n.jsxs(n.Fragment,{children:[i&&n.jsxs(n.Fragment,{children:[Zt&&ga?.stripeCustomerId&&n.jsx("button",{className:"tf-control-icon",onClick:()=>{Wc()},title:"Manage billing",disabled:Kd,children:"Manage billing"}),n.jsx("button",{className:"tf-control-icon",onClick:()=>{if(zl){ai();return}m()},title:zl?"Continue to Taskforce":"Back",disabled:Yo,children:zl?"Take Me to Taskforce":"Back"})]}),!i&&n.jsxs(n.Fragment,{children:[xk,_k]}),n.jsx(Cp,{actions:yk}),!i&&n.jsx(Cp,{actions:hk}),Jy]})}),n.jsx(Ay,{notice:Lr,onDismiss:Br}),jn&&n.jsx("div",{className:ge.authBlockedBanner,children:"Authentication required for this environment. Use the Account menu to sign in."}),!i&&io&&gk,i?n.jsx("div",{className:`${en.standalonePage} ${en.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:n.jsx(r.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(kr,{size:20,className:p.spinner})}),children:n.jsx(S5,{...e,currentTheme:Ce,projectName:xa,currentWorkspaceId:Yt,authUserId:Zn,apiBaseUrl:$l,connectedEnvironmentSource:e.config?.cloudAuthBaseUrl||e.config?.apiBaseUrl||"",resolveCloudAuthUrl:En,embedded:!0,shellOwnsScroll:!0,onAccountProfileSummaryChange:gu,onContinueToTaskforce:ai,continueBusy:Yo})})}):on==="docs"&&Ho?n.jsxs("div",{className:`${en.standalonePage} ${en.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Ql,n.jsx(r.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(kr,{size:20,className:p.spinner})}),children:n.jsx(y5,{tasks:me,runtimeMode:Kt,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",typeFilters:ho,attachmentFilters:go,onTypeFiltersChange:Fo,onAttachmentFiltersChange:Oo,documentTrayOpen:ms,onCloseDocumentTray:()=>rc(!1),requestedDocPath:Nm,requestedDocAssetId:Pm,onRequestedDocHandled:()=>{ol(null),il(null)},onBackToTask:mk,enableTaskGeneration:!0})})]}):on==="annotate"&&dc?n.jsxs("div",{className:`${en.standalonePage} ${en.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Ql,n.jsx(r.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(kr,{size:20,className:p.spinner})}),children:n.jsx(g5,{runtimeMode:Kt,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",workspaceId:Yt,sessionLoadReady:yi,requestedTarget:er,requestedSessionId:yo,requestedOpenVersion:Mm,imageTrayOpen:Qr,onCloseImageTray:()=>co(!1),resolveTaskReferenceLabel:jd,resolveImageReferenceLabel:Nd,onOpenTarget:pk,onContextChange:fk,onBackToTask:uk})})]}):on==="workflows"?n.jsxs("div",{className:`${en.standalonePage} ${en.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Ql,n.jsx(r.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(kr,{size:20,className:p.spinner})}),children:n.jsx(k5,{availableWorkflows:Fa,availableEnvironments:Gt,exportEnvironment:Ln,exportWorkflowsPath:e.exportWorkflowsPath,exportingResource:ds,exportResult:Ya,onExportEnvironmentChange:e.setExportEnvironment,onExportWorkflows:Oa,onRefreshWorkflows:Ta,onFetchWorkflowTemplate:e.fetchWorkflowTemplate,onFetchWorkflowOverrideNames:e.fetchWorkflowOverrideNames,onSaveWorkflowTemplateDraft:e.saveWorkflowTemplateDraft,onResetWorkflowTemplateDraft:e.resetWorkflowTemplateDraft})})]}):on==="agents"?n.jsxs("div",{className:`${en.standalonePage} ${en.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Ql,n.jsx(r.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:n.jsx(kr,{size:20,className:p.spinner})}),children:n.jsx(v5,{workspaceId:Yt,cloudAuthConfigured:Rn,authSessionResolved:dn,isAuthenticated:Zt,cloudAiProfileSeatUsage:ga?.aiProfileSeatUsage??null,agentTrayOpen:Is,onCloseAgentTray:()=>Ts(!1),mcpSettingsNode:n.jsx(rg,{settingsModel:{...ye,initialSection:"mcp",onOpenCloudAuth:Oc},renderMode:"mcp-only"})})})]}):n.jsxs("div",{className:`${en.standalonePage} ${en.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:Or?`${56+Md+6}px`:"62px",paddingRight:h==="schedule"&&Jr?`${ef}px`:0},children:[Ql,n.jsx("div",{ref:wk,style:{position:"absolute",inset:0,zIndex:35,pointerEvents:"none"}}),n.jsxs("div",{style:{position:"relative",width:"100%",minWidth:0,flex:1,minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[e.loadingTasks&&Ci.length>0&&n.jsx("div",{className:p.boardRefreshIndicator,"aria-live":"polite","aria-label":"Refreshing tasks",children:n.jsx(kr,{size:14,className:p.spinner})}),n.jsx(xW,{tasks:yl,allTasks:Ed,columns:Nf,groupBy:h,scheduleDates:Ro,searchQuery:we,filterCategories:Ke,filterTypes:Ne,filterPriorities:Jt,filterStatus:L,filterAssignees:Ft,filtersReady:Ht,assigneeOptions:rn,scheduleFilteredTaskIds:Array.from(gl),copiedId:St,taxonomies:Dt,types:We,priorities:tt,onUpdateTask:_,onTaskClick:u=>se(u),onOpenTaskById:Ot,onCopyId:ot,onToggleInProgress:te,onToggleReview:Ct,onToggleComplete:Le,onToggleCancel:jt,onSetStatus:wc,onArchiveTask:Wt,onAddTaskToColumn:vl,showTaskCardStatusLabel:ue,onScheduleDaySelected:u=>{oo(u);const w=dd(u);w&&us(`${w.getFullYear()}-${String(w.getMonth()+1).padStart(2,"0")}`)},persistedScrollLeft:h==="schedule"?di:void 0,onScrollLeftChange:u=>{h==="schedule"&&Pa(u)},emptyColumnMode:I,categories:S,compressed:nt,readOnlyMode:Vt==="deleted"?"deleted":Vt==="archived"?"archived":null,recentlyChangedTaskIds:e.recentlyChangedTaskIds,sortBy:qn,sortOrder:e.sortOrder,planningDropTargets:Kf?Yi.createPortal(bk,Kf):null,onAssignTaskToWorkstream:Ru,onAssignWorkstreamToInitiative:Tu,workstreams:e.workstreams,initiatives:e.initiatives,onUnarchive:u=>{if(Vt==="deleted"){const w=Si.get(u);if(!w)return;yt(w.id);return}$t(u)},onDelete:u=>{if(Vt==="deleted"){const w=Si.get(u);if(!w||!window.confirm("Permanently delete this task? This cannot be undone."))return;E(w.id);return}Ge(u)}},`${h}-${Nf.map(u=>String(u.value)).join("|")}-${Ro.mon}`),h==="schedule"&&!Jr&&n.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>{pr(null),Na(!0)},title:"Show Schedule Sidebar",style:{position:"absolute",top:"10px",right:"10px",zIndex:20},children:n.jsx(Mo,{size:16})})]}),h==="schedule"&&n.jsx(l5,{open:Jr,onClose:()=>Na(!1),scheduleSelectedDate:$s,setScheduleSelectedDate:oo,scheduleCalendarMonth:Lo,setScheduleCalendarMonth:us,scheduleShowWeekends:ve,setScheduleShowWeekends:ne,scheduleShowBacklog:Ra,setScheduleShowBacklog:ja,scheduleOnlyExpired:ha,setScheduleOnlyExpired:Os,expiredScheduledCount:Dd,overdueDueCount:kl,expiredLeafCandidates:Ai,expiredRecoveryCandidates:wo,onMoveExpiredToSelectedWeek:Ky,onMoveExpiredToBacklog:Zy,scheduleBulkBusy:bo,globalWeekStartsOn:cn,resolvedLocale:Fn,todayDateOnly:Jn,scheduleBaseTasks:mc,scheduleWeekStart:Ui,scheduleWeekLabel:Yy})]}),n.jsxs(Ws,{isOpen:y==="add",onClose:Sc,title:de?Mt?.isDeleted?"Deleted Task":"Edit Task":"New Task",size:mi?"full":"xl",theme:Ce,headerActions:n.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?n.jsx(Yf,{size:18}):n.jsx(Zf,{size:18})}),draggable:!mi,closeOnOverlayClick:!1,children:[n.jsx(Cy,{editingTaskId:de,loading:ke,autoSaveState:Wr,title:P,currentTask:Mt,currentTaskWorkstream:Gn,currentTaskInitiative:Ja,workstreamInput:ce,onWorkstreamInputChange:he,onSetWorkstreamForCurrentTask:ht,handleSubmit:ae,resetForm:O,handleCopyId:ot,copiedId:St,tasks:me,handleToggleInProgress:te,handleToggleReview:Ct,handleToggleComplete:Le,handleToggleCancel:jt,handleSetStatus:wc,handleArchiveTask:Wt,handleUnarchiveTask:u=>{if(Mt?.isDeleted){const w=Si.get(u);if(!w)return;yt(w.id);return}$t(u)},handleRestoreDeletedTask:Mt?.deletedRecordId?u=>{yt(u)}:void 0,handlePermanentlyDeleteDeletedTask:Mt?.deletedRecordId?u=>{window.confirm("Permanently delete this task? This cannot be undone.")&&(E(u),O(),k("tasks"))}:void 0}),n.jsx(_y,{editingTaskId:de,error:Y,title:P,description:ie,checklistItems:q,category:xe,type:le,priority:Ee,complexity:Pe,manualComplexityEnabled:G,approach:b,assignee:F,scheduledDate:M,dueDate:be,workstreamInput:ce,formTaxonomies:Re,onTaxonomyChange:(u,w)=>Te(N=>({...N,[u]:w})),taxonomies:Dt,comments:De,newCommentText:Oe,contextFiles:st,currentWorkspaceId:Yt,apiBaseUrl:$l,descriptionFocused:_t,showMarkdownHelp:Qe,showChecklist:ee,checklistEnabled:re,showComments:ft,categories:S,types:We,priorities:tt,taxonomyDisplayLabels:Fe,assigneeOptions:rn,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:St,onTitleChange:z,onDescriptionChange:fe,onChecklistItemsChange:Me,onCategoryChange:oe,onTypeChange:Ie,onPriorityChange:je,onComplexityChange:K,onApproachChange:u=>{R(u),Te(w=>({...w,approach:u}))},onAssigneeChange:Q,onScheduledDateChange:$,onDueDateChange:H,onWorkstreamInputChange:he,onNewCommentTextChange:vt,onDescriptionFocusedChange:dt,onShowMarkdownHelpChange:Rt,onShowChecklistChange:ze,onShowCommentsChange:it,onOpenSettings:u=>{bn(u),k("settings")},onSubmit:ae,commentsEndRef:so,onAddComment:()=>Et(Oe),onOpenTaskById:Ot,onAddContextFile:u=>{ll(w=>[...w,u])},onRemoveContextFile:async u=>{ll(w=>w.filter((N,pe)=>pe!==u))},onUpdateContextCaption:(u,w)=>{ll(N=>N.map((pe,Se)=>Se!==u?pe:typeof pe=="string"?{path:pe,caption:w,timestamp:new Date().toISOString()}:{...pe,caption:w}))},onCopyId:ot,onToggleInProgress:te,onToggleReview:Ct,onToggleComplete:Le,onToggleCancel:jt,onSetStatus:wc,onArchiveTask:Wt,onUnarchive:u=>{if(Mt?.isDeleted){const w=Si.get(u);if(!w)return;yt(w.id);return}$t(u)},currentTask:Mt})]}),n.jsx(Ws,{isOpen:y==="settings",onClose:Sc,title:"Settings",size:"xl",theme:Ce,draggable:!0,isSettings:!0,closeOnOverlayClick:!1,children:n.jsx(r.Suspense,{fallback:n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:n.jsx(kr,{size:20,className:p.spinner})}),children:n.jsx(rg,{settingsModel:{...ye,onOpenCloudAuth:Oc},onSectionChange:bn})})}),n.jsx(CB,{prompt:Yr,theme:Ce,onClose:Fr,onConfirm:Wn}),n.jsx(AB,{isOpen:qm,theme:Ce,onClose:Zm,onConfirm:Ym}),n.jsx(_B,{isOpen:Wd,theme:Ce,onClose:()=>Vo(!1),supportMailtoHref:Jm,onOpenSettings:()=>{Vo(!1),k("settings"),bn("general")},onOpenAccountHub:()=>{Vo(!1),Ul("account_hub"),_o(!0)}}),n.jsx(bB,{isOpen:Sl,theme:Ce,onClose:uu,onSave:()=>{hu()},displayName:Rl,email:Ao,avatarDisplayUrl:Ol,accountBadgeInitial:Lc,saveBusy:Gm,avatarBusy:jl,saveError:Qd,saveNotice:Xd,onDisplayNameChange:Yd,onOpenAvatarManager:()=>{ns(null),as(null),bc(!0)}}),n.jsx(gB,{isOpen:Dm,theme:Ce,title:"Edit Profile Photo",currentImageUrl:Ol,fallbackInitial:Lc,accept:w5,busy:jl,hasPendingImage:!!hr,canRemove:!!Ol,error:Qd,notice:Xd,onClose:()=>bc(!1),onApplyImage:mu,onRemoveImage:fu,onDiscardPendingImage:pu}),n.jsx(ZL,{isOpen:xo,theme:Ce,runtimeMode:Kt,authRequiredForApi:Xn,isAuthenticated:Zt,hasAuthIdentity:Dc,authIdentityLabel:Js,billingLoading:qd,billingError:Mc,billingActionError:Ur,billingNotice:Zd,billingActionBusy:Kd,billingIntervalChoice:Ys,accountProfileSummary:ga,currentWorkspaceId:Yt,canOpenTeamManagement:Co,canManageWorkspaceSync:Ml,workspaceCloudSyncEnabled:Va,syncStatusLabel:xn.label,workspaceSyncError:Dl,syncControlBusy:nu,cloudAuthEnabled:Rn,availableAuthProviders:_r,onFetchLoginMethods:an,onUnlinkLoginMethod:un,onAddPassword:ea,onLinkProvider:u=>Er(u),onClose:()=>_o(!1),onOpenWorkspaceAudit:()=>{_o(!1),$c(),Ri("audit")},onBillingIntervalChange:Bi,onRefreshBilling:()=>{Nr()},onUpdateInterval:()=>{yu()},onManageBilling:()=>{Wc()},onStartCheckout:()=>{Qm()},onToggleWorkspaceSync:u=>{au(u)},onOpenHelp:()=>{_o(!1),Vo(!0)}}),n.jsx(gW,{isOpen:Lm,theme:Ce,teamPlanMode:Ac,teamMgmtError:vs,teamManagementTab:Bm,teamUsersLoading:Ic,teamUsers:qo,teamActionBusyUserId:Pi,teamInviteFeedback:zd,teamInviteEmail:Mi,teamInviteRole:Ps,teamInvitePermissionMode:Di,teamInviteBusy:Nc,pendingInvites:Xm,teamAuditLoading:Hd,teamAuditEvents:Om,teamAuditPage:Ms,teamAuditPages:Vd,teamAuditHasMore:Um,onClose:()=>$d(!1),onOpenMembersTab:()=>{Ri("members"),ni()},onOpenInvitesTab:()=>Ri("invites"),onOpenAuditTab:()=>{Ri("audit"),Io(Ms)},onMemberRoleChange:(u,w)=>{To(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/role`,{method:"PATCH",headers:{"Content-Type":"application/json",...rs()},credentials:"include",body:JSON.stringify({workspaceId:Es,role:w})}))},onMemberPermissionChange:(u,w)=>{To(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/permission-mode`,{method:"PATCH",headers:{"Content-Type":"application/json",...rs()},credentials:"include",body:JSON.stringify({workspaceId:Es,mode:w})}))},onToggleMemberDisabled:(u,w)=>{To(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/disable`,{method:"PATCH",headers:{"Content-Type":"application/json",...rs()},credentials:"include",body:JSON.stringify({workspaceId:Es,disabled:w})}))},onRevokeInvite:u=>{To(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/invite/revoke`,{method:"POST",headers:{"Content-Type":"application/json",...rs()},credentials:"include",body:JSON.stringify({workspaceId:Es})}))},onRemoveMember:u=>{To(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}?workspaceId=${encodeURIComponent(Es)}`,{method:"DELETE",headers:rs(),credentials:"include"}))},onInviteEmailChange:Rc,onInviteRoleChange:Ei,onInvitePermissionModeChange:jc,onSubmitInvite:()=>{Vl()},onLoadAuditPrevious:()=>{Io(Ms-1)},onLoadAuditNext:()=>{Io(Ms+1)}}),n.jsx(OL,{isOpen:xl,theme:Ce,onClose:()=>Ti(!1),onConfirm:()=>Oi({intent:"create-workspace"})}),n.jsx(hW,{isOpen:El,theme:Ce,currentWorkspaceLabel:Bl,syncStatusMeta:xn,workspaceCloudSyncEnabled:Va,syncControlBusy:nu,canManageWorkspaceSync:Ml,workspaceSyncSummary:bs.summary,workspaceSyncRecommendedAction:bs.recommendedAction,workspaceSyncRepairBusy:Ea,referenceMismatchCount:hn,syncStageLabel:qy,workspaceSyncPendingChanges:Nn,formattedLastSyncTime:Yl,formattedLastPullTime:xu,formattedLastPushTime:_u,syncLastError:Au,workspaceSyncDiagnostics:ws,activeReferenceMismatchSummaries:On,syncDiagnosticsSummary:f,syncEventRows:fn,syncEventsListRef:He,workspaceSyncRepairQueued:Pr,workspaceSyncBusy:Dn,workspaceSyncCopied:Jl,runtimeMode:Kt,isAuthenticated:Zt,onClose:Ll,onToggleWorkspaceSync:u=>{au(u)},onRepairSync:Vy,onCopyReport:()=>{Gy()},onOpenLogin:()=>{Oc("login")},onRetrySync:()=>{La()}}),mr&&Yi.createPortal(n.jsx("div",{className:`${Tt.overlay} ${Tt.unsavedOverlay}`,style:{zIndex:2e3},children:n.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${Tt.modal} ${Tt.unsavedModal}`,"data-theme":Ce,children:[n.jsx("div",{className:`tf-modal-header ${Tt.unsavedHeader}`,children:n.jsxs("div",{className:`tf-modal-title ${Tt.unsavedTitle}`,children:[n.jsx(yd,{size:20}),"Unsaved Changes"]})}),n.jsx("div",{className:`${Tt.form} ${Tt.unsavedContent}`,children:n.jsx("p",{className:Tt.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),n.jsxs("div",{className:`${Tt.formActions} ${Tt.unsavedActions}`,children:[n.jsx("button",{className:p.cancelBtn,onClick:()=>W(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),n.jsx("button",{className:p.destructiveBtn,onClick:T,title:"Discard unsaved changes and leave",children:"Discard"}),n.jsxs("button",{className:p.submitBtn,onClick:j,disabled:ke,title:"Save changes and leave",children:[ke?n.jsx(kr,{size:16,className:p.spinner}):n.jsx(ug,{size:16}),"Save"]})]})]})}),document.body),Ar&&Yi.createPortal(n.jsx("div",{className:Tn.overlay,children:n.jsxs("div",{className:Tn.browser,children:[n.jsxs("div",{className:Tn.header,children:[n.jsxs("div",{className:Tn.pathInfo,children:[n.jsx(Po,{size:14}),n.jsx("span",{children:ta||"Project Root"})]}),n.jsxs("div",{className:Tn.actions,children:[ta&&n.jsx("button",{className:p.helpLink,onClick:()=>{const u=ta.split("/").filter(Boolean);u.pop(),Ca(u.length?u.join("/")+"/":"")},children:"Back"}),n.jsx("button",{className:p.helpLink,onClick:()=>qa(!1),children:"Close"})]})]}),n.jsxs("div",{className:Tn.list,children:[Za&&typeof Za=="object"&&n.jsxs("div",{className:`${Tn.item} ${Tn.itemFile} ${Tn.itemCurrent}`,onClick:()=>cs(ta),children:[n.jsx(ao,{size:14})," Select Current: ./",ta||"(root)"]}),Ka.map(u=>n.jsxs("div",{className:Tn.item,onClick:()=>Ca(ta+u+"/"),children:[n.jsx(Po,{size:14})," ",u,"/"]},u)),ir.map(u=>n.jsxs("div",{className:`${Tn.item} ${Tn.itemFile}`,onClick:()=>cs(ta+u),children:[n.jsx(Dp,{size:14})," ",u]},u)),Ka.length===0&&ir.length===0&&n.jsx("div",{className:`${Tn.item} ${Tn.empty}`,children:"No items found"})]})]})}),document.body)]})}function A5(e){const t=e.setupState,a=e.runtimeMode,s=e.isAuthenticated,o=!!(t&&a==="cloud"&&s&&t.globalSetupState==="missing"),l=!!(t&&a==="local"&&t.globalSetupState==="missing"),i=!!(t&&a==="cloud"&&s&&t.workspaceSetupState==="missing"),d=!!(t&&a==="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"),x=g||v;return{setupGateActive:m,needsGlobalSetup:S,needsWorkspaceSetup:h,hasSetupReadError:x,phase:x?"setup-read-error":S?"needs-global-setup":h?"needs-workspace-setup":"ready"}}const Np="/taskforce/assets/taskforce-BxLPokNB.png";function sg(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 Mp(e={}){const t=new URLSearchParams;t.set("screen","plans");for(const[a,s]of Object.entries(e)){const o=String(s||"").trim();o&&t.set(a,o)}return`/?${t.toString()}`}function og({config:e={},initialTaskId:t,onTaskCountChange:a,onHeaderMouseDown:s,isDragging:o,onClose:l,mode:i="standalone"}){const d=_g(),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",x=Mp(),I=Mp({gate:"plan_selection_required"}),C=xg(),[D,U]=r.useState(""),[L,X]=r.useState(""),[me,se]=r.useState(""),[ae,O]=r.useState(""),[_,de]=r.useState("login"),[ke,Y]=r.useState(""),[P,z]=r.useState(!1),[ie,fe]=r.useState(null),[q,Me]=r.useState(null),[xe,oe]=r.useState(null),[le,Ie]=r.useState(!1),[Ee,je]=r.useState(""),[Pe,K]=r.useState(""),[A,b]=r.useState(null),[R,F]=r.useState(null),[Q,M]=r.useState("unknown"),[$,be]=r.useState(!1),[H,ce]=r.useState([]),[he,G]=r.useState(null),[re,ue]=r.useState(null),[Re,Te]=r.useState(null),[De,Oe]=r.useState(!1),[vt,st]=r.useState(0),[kt,Ye]=r.useState(0),[_t,dt]=r.useState(()=>Date.now()),[Qe,Rt]=r.useState("core"),[ee,ze]=r.useState(!1),[ft,it]=r.useState(null),[Et,ht]=r.useState(null),[Ot,Dt]=r.useState(""),[We,tt]=r.useState(""),[Fe,Ze]=r.useState("local"),[St,ot]=r.useState("details"),[te,Le]=r.useState([]),[Ct,jt]=r.useState(""),[Wt,Ge]=r.useState(!1),[$t,yt]=r.useState(null),[E,c]=r.useState(!1),[J,we]=r.useState(null),[Ae,Ke]=r.useState(!1),Je=r.useRef(!1),Ne=r.useMemo(()=>sy(),[]),[zt,Jt]=r.useState(Ne),[Pt,Ft]=r.useState(()=>Ne.find(W=>W.isDefaultStarter)?.id||Ne[0]?.id||""),[Lt,Ht]=r.useState(()=>sg(Ne.find(W=>W.isDefaultStarter)||Ne[0]||null)),[rn,Vt]=r.useState(!1),[Vn,qn]=r.useState(null),[Kn,ca]=r.useState(!1),[ye,rt]=r.useState(null),[Ce,Nt]=r.useState(!1),pt=Bb({config:e,initialTaskId:t,onTaskCountChange:a,onClose:l}),{runtimeMode:wt,workspaceSwitchingEnabled:Cn,currentWorkspaceId:kn,cloudAuthConfigured:cn,authRequiredForApi:ln,authBlocked:$n,isAuthenticated:gt,hasBetaAccess:rr,authSessionResolved:mn,setupState:tn,runtimeCapabilities:bn,refreshSetupContext:Kt,retryBootstrapChecks:vr,createWorkspace:Rn,saveWorkspaceProfile:Xn,fetchWorkspaces:jn,applyWorkspaceSyncStateSnapshot:Zt,workspaceCloudSyncEnabled:Zn,workspaceSyncPhase:nn,workspaceSyncSetupIntent:la,workspaceSyncSummary:ya,workspaceSyncRecommendedAction:Sr,workspaceSyncBusy:dn,workspaceLastErrorMessage:wr,retryWorkspaceCloudSync:qr,settingsModel:Va,fetchTasks:ka,bootstrapState:Un,loginWithCredentials:br,beginOAuthLogin:da,availableAuthProviders:Dn,registerWithCredentials:Nn,requestEmailVerification:xr,confirmEmailVerification:At,requestPasswordReset:va,confirmPasswordReset:Sa,inspectInviteAcceptance:ua,acceptInviteWithToken:zn,joinInviteWithToken:sr,authUserEmail:Pn,currentTheme:vn,logout:La}=pt,wa=r.useCallback(async(W,$e)=>{const It=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:W,stateKey:"workspace-sync",patch:$e})}),Mt=await It.json().catch(()=>({}));if(!It.ok||Mt?.success===!1)throw new Error(Mt?.error||`Failed to configure workspace sync (${It.status})`);return Mt},[]),Sn=r.useMemo(()=>zt.find(W=>W.id===Pt)||zt.find(W=>W.isDefaultStarter)||zt[0]||null,[Pt,zt]);Tg(vn);const Yt=Qp,ba=r.useMemo(()=>{const W=String(e.cloudAuthBaseUrl||e.apiBaseUrl||"").trim();return W?W.replace(/\/+$/,""):""},[e.apiBaseUrl,e.cloudAuthBaseUrl]),Hn=wt==="cloud"||bn?.runtimeMode==="cloud",Mn=!Hn&&cn&&!!ba,Ba=typeof window<"u"&&/^app\./i.test(window.location.hostname),En=wt==="cloud"&&ln,Mr=wt==="cloud"&&$n,an=d.pathname==="/login",un=d.pathname==="/setup",ea=d.pathname==="/coming-soon",or="/setup?step=workspace&source=cloud&postAuth=select-cloud-workspace",Er=!Hn&&Fe==="cloud",_r=Er&&Mn,Xt=r.useMemo(()=>{if(J)return J;if(la!=="attach-cloud-import")return null;const W=String(kn||"").trim();if(!W||W.toLowerCase()==="default")return null;const $e=te.find(It=>It.id===W);return{workspaceId:W,name:$e?.name||W}},[te,kn,J,la]),xa=!!(Xt&&kn===Xt.workspaceId),_a=!!(Xt&&xa&&nn==="error"),Cr=!!(Xt&&xa&&Zn&&nn==="active"&&!dn),Ar=r.useMemo(()=>{if(!Xt)return[];const W=ee?"In progress":"Complete",$e=_a?"Needs attention":dn||nn==="attach-cloud"?"In progress":nn==="active"?"Complete":"Waiting",It=Ae?"In progress":Cr?"Ready":"Waiting";return[`Connect workspace: ${W}`,`Import cloud data: ${$e}`,`Open local workspace: ${It}`]},[Xt,ee,_a,dn,nn,Ae,Cr]),qa=Ba?(!gt||$n)&&!h&&!g&&!v:(En&&!gt||Mr)&&!h&&!g&&!v,Ka=wt==="cloud"&&gt&&!rr&&!h&&!g&&!v,ir=wt==="cloud"&&gt&&mn&&ye?.canAccessApp===!1&&ye?.canAccessPlans!==!1&&!h&&!g&&!v,ta=wt==="cloud"&&gt&&(!mn||!Ce),Ca=cn,Za=r.useMemo(()=>{switch(_){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"}},[_]),na=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]),Yn=un&&na==="workspace"&&cs==="create-workspace",Kr=i!=="widget"&&Un.authPending&&!an&&!un&&!h&&!g&&!v&&(wt==="cloud"||Ba),Dr=r.useMemo(()=>A5({setupState:tn?{globalSetupState:tn.globalSetupState,workspaceSetupState:tn.workspaceSetupState,runtimeMode:tn.runtimeMode,workspaceId:tn.workspaceId,mode:tn.mode,forceSetup:tn.forceSetup,forceGlobalSetup:tn.forceGlobalSetup,forceWorkspaceSetup:tn.forceWorkspaceSetup}:null,runtimeMode:wt,isAuthenticated:gt}),[tn,wt,gt]),Aa=Dr.setupGateActive,cr=Dr.needsGlobalSetup,Wa=Dr.needsWorkspaceSetup,ma=Dr.hasSetupReadError,lr=i!=="widget"&&Un.auth.resolved&&!qa&&!Ka&&!h&&!g&&!v&&!an&&Un.appPending&&(un||wt==="cloud"||Ba),Zr=wt==="cloud"&&le&&!v,ls=Un.subtitle,et=Yn||un&&!!Xt||un&&Aa&&(ma||cr||Wa),Bt=r.useMemo(()=>Kr?"auth-bootstrap":Zr||lr?"app-bootstrap":an?"login":qa&&!an?"login-redirect":ea&&Ka?"coming-soon":et?"guided-setup":"app",[ea,an,Ka,qa,Zr,Kr,lr,et]),Ln=r.useCallback((W,$e,It)=>{const Mt=String(W||"").trim().toLowerCase(),Gn=String($e||"").trim().toLowerCase();return!!(!Mt||Mt==="system default workspace"||Gn&&Mt===Gn)},[]);r.useEffect(()=>{const W=tn?.mode==="operations"?"operations":"core";Rt(W)},[tn?.mode]),r.useEffect(()=>{if(wt!=="cloud"||!gt){rt(null),Nt(!1);return}if(!mn){rt(null),Nt(!1);return}rt(null),Nt(!1);let W=!1;return(async()=>{try{const $e=await fetch("/api/taskforce/account/access-status",{method:"GET",credentials:"include"}),It=await $e.json().catch(()=>({}));if(W)return;if(!$e.ok){rt(null),Nt(!0);return}const Mt=String(It?.gate||"").trim().toLowerCase();if(Mt!=="ok"&&Mt!=="plan_selection_required"&&Mt!=="checkout_pending"&&Mt!=="misconfigured"&&Mt!=="missing_entitlement"){rt(null),Nt(!0);return}rt({gate:Mt,canAccessApp:It?.canAccessApp===!0,canAccessPlans:It?.canAccessPlans!==!1,message:typeof It?.message=="string"?It.message:null}),Nt(!0)}catch{W||(rt(null),Nt(!0))}})(),()=>{W=!0}},[mn,gt,wt,d.pathname,d.search]),r.useEffect(()=>{if(Yn){Dt(""),tt("");return}if(!tn)return;const W=String(tn.workspace?.name||"").trim(),$e=String(tn.suggestedWorkspaceName||"").trim(),It=Ln(W,tn.workspaceId,tn.workspace?.description)?$e:W;Dt(It||$e||W),tt(String(tn.workspace?.description||""))},[tn?.workspace?.name,tn?.workspace?.description,tn?.suggestedWorkspaceName,tn?.workspaceId,Yn,Ln]),r.useEffect(()=>{if(!un||na!=="workspace")return;if(ot("details"),Xt&&Mn){Ze("cloud"),c(!1);return}if(String(new URLSearchParams(d.search).get("source")||"").trim().toLowerCase()==="cloud"&&Mn){Ze("cloud"),c(!1);return}Ze("local")},[Xt,Mn,un,d.search,na]);const An=r.useCallback(async()=>{if(!Mn||!gt){Le([]),jt("");return}Ge(!0),yt(null);try{const W=await fetch(`${ba}/api/taskforce/workspaces`,{method:"GET",credentials:"include"}),$e=await W.json().catch(()=>({}));if(!W.ok||$e?.success===!1){Le([]),jt(""),yt($e?.error||`Failed to load cloud projects (${W.status})`);return}const It=Array.isArray($e?.workspaces)?$e.workspaces.map(Mt=>({id:String(Mt?.id||"").trim(),name:String(Mt?.name||Mt?.id||"").trim(),description:typeof Mt?.description=="string"?Mt.description:null})).filter(Mt=>Mt.id.length>0):[];Le(It),jt(Mt=>Mt&&It.some(Gn=>Gn.id===Mt)?Mt:It[0]?.id||"")}catch{Le([]),jt(""),yt("Failed to load cloud projects.")}finally{Ge(!1)}},[Mn,gt,ba]);r.useEffect(()=>{Fe==="cloud"&&An()},[An,Fe]),r.useEffect(()=>{if(!un||na!=="workspace"||Fe==="cloud")return;let W=!1;return Vt(!0),qn(null),fetch("/api/taskforce/taxonomy-library",{method:"GET",credentials:"include"}).then(async $e=>{if(!$e.ok)throw new Error(`Failed to load setup libraries (${$e.status})`);const It=await $e.json().catch(()=>({})),Mt=Array.isArray(It?.packs)?It.packs:[];W||Mt.length===0||(Jt(Mt),Ft(Gn=>Mt.some(Ja=>Ja.id===Gn)?Gn:Mt.find(Ja=>Ja.isDefaultStarter)?.id||Mt[0]?.id||""))}).catch($e=>{W||(Jt(Ne),qn($e instanceof Error?$e.message:"Failed to load setup libraries."))}).finally(()=>{W||Vt(!1)}),()=>{W=!0}},[Ne,un,na,Fe]),r.useEffect(()=>{Ht(sg(Sn))},[Pt,Sn]),r.useEffect(()=>{Fe==="cloud"&&ot("details")},[Fe]),r.useEffect(()=>{_r||(we(null),Ke(!1),Je.current=!1)},[_r]),r.useEffect(()=>{!_a||!Xt||(ht(null),it(wr||`Failed to import "${Xt.name}" from cloud. Retry import to continue.`))},[Xt,_a,wr]),r.useEffect(()=>{if(!Cr||!Xt||Je.current)return;let W=!1;return Je.current=!0,Ke(!0),it(null),ht(`Workspace import complete. Opening ${Xt.name}...`),(async()=>{try{if(await Kt(),await Promise.all([jn(),ka(!0)]),W)return;await wa(Xt.workspaceId,{setupIntent:null}),Zt({enabled:Zn,phase:nn,setupIntent:null}),we(null),C("/",{replace:!0})}catch{if(W)return;ht(null),it(`Imported "${Xt.name}" but failed to finish opening it.`),Ke(!1),Je.current=!1}})(),()=>{W=!0}},[Xt,Zt,ka,jn,Cr,C,wa,Kt]);const wn=r.useMemo(()=>{const W=new URLSearchParams(d.search).get("next")||"/";if(W.startsWith("/"))return W==="/login"?"/":W;try{const $e=new URL(W),It=$e.hostname.toLowerCase(),Mt=It==="localhost"||It==="127.0.0.1"||It==="::1",Gn=It==="taskforcehq.ai"||It.endsWith(".taskforcehq.ai");if(($e.protocol==="http:"||$e.protocol==="https:")&&(Mt||Gn))return $e.toString()}catch{return"/"}return"/"},[d.search]),Ia=r.useMemo(()=>wn.startsWith("/")?wn:"/",[wn]),Ya=r.useCallback((W,$e)=>{if(W){if(W.startsWith("/")){C(W,{replace:$e?.replace===!0});return}typeof window<"u"&&($e?.replace===!0?window.location.replace(W):window.location.assign(W))}},[C]),ds=r.useMemo(()=>{try{const W=new URL(Ia,"https://taskforce.local");return W.pathname==="/setup"&&W.searchParams.get("step")==="workspace"&&W.searchParams.get("source")==="cloud"&&W.searchParams.get("postAuth")==="select-cloud-workspace"}catch{return!1}},[Ia]),Fa=r.useCallback(()=>ds?or:"/setup?step=workspace",[ds]),Oa=S==="year"?"year":"month",Ta=r.useCallback(W=>!!(W?.planSelectionRequired||W?.checkoutPending||W?.commercialState==="pending_plan_selection"||W?.commercialState==="checkout_pending"),[]),Gt=r.useCallback(W=>W?.planSelectionRequired||W?.commercialState==="pending_plan_selection"?I:W?.checkoutPending||W?.commercialState==="checkout_pending"?Mp({gate:"checkout_pending",checkout:k?"start":null,planId:y||null,planVersionId:k||null,interval:k?Oa:null}):wn,[wn,I,Oa,y,k]),$a=r.useMemo(()=>{const W=String(new URLSearchParams(d.search).get("mode")||"").trim().toLowerCase();return W==="register"?Ca?"register":"login":W==="verify"||W==="forgot"||W==="reset"||W==="invite"?W:"login"},[Ca,d.search]),pa=r.useMemo(()=>String(new URLSearchParams(d.search).get("token")||"").trim(),[d.search]),Bn=r.useCallback(W=>{const $e=new URLSearchParams(d.search),It=W==="register"&&!Ca?"login":W;It==="login"?$e.delete("mode"):$e.set("mode",It);const Mt=$e.toString();C(`/login${Mt?`?${Mt}`:""}`,{replace:!0})},[Ca,d.search,C]);r.useEffect(()=>{an&&(de($a),$a==="verify"&&pa&&Y(pa),$a==="reset"&&pa&&je(pa),$a==="invite"&&pa&&K(pa))},[an,$a,pa]),r.useEffect(()=>{_!=="verify"&&(an&&$a==="verify"||(z(!1),fe(null),Me(null)))},[_,an,$a]),r.useEffect(()=>{_!=="register"&&O("")},[_]),r.useEffect(()=>{if(!xe||!gt||!xe.commercialOnboardingGate&&(!mn||ta))return;const W=!xe.commercialOnboardingGate&&xe.workspaceSetupRequired?Fa():xe.path,$e=`${d.pathname}${d.search}${d.hash||""}`;if(W.startsWith("/")){$e!==W&&C(W,{replace:!0});return}Ya(W,{replace:!0})},[mn,ta,gt,d.hash,d.pathname,d.search,C,Ya,xe,Fa]),r.useEffect(()=>{if(!le||!mn)return;if(!gt){Ie(!1),oe(null);return}if(Ce&&ye?.canAccessApp===!0){U(""),X(""),se(""),O(""),oe(null),Ie(!1);return}const W=xe?.commercialOnboardingGate?xe.path:I,$e=`${d.pathname}${d.search}${d.hash||""}`;if(W.startsWith("/")){$e!==W&&C(W,{replace:!0});return}Ya(W,{replace:!0})},[ye?.canAccessApp,Ce,mn,le,gt,d.hash,d.pathname,d.search,C,Ya,xe,I]),r.useEffect(()=>{if(!xe||!gt)return;const W=!xe.commercialOnboardingGate&&xe.workspaceSetupRequired?Fa():xe.path;`${d.pathname}${d.search}${d.hash||""}`===W&&(xe.commercialOnboardingGate||(U(""),X(""),se(""),O(""),oe(null)))},[d.hash,d.pathname,d.search,gt,xe,Fa,wt]),r.useEffect(()=>{an&&(document.title=Za)},[Za,an]),r.useEffect(()=>{if(!an||_!=="invite"||!Pe.trim())return;let W=!0;return(async()=>{const $e=await ua(Pe);if(W)if($e.success){b($e.email||null),F($e.workspaceId||null),be($e.passwordRequired===!0);const It=($e.availableMethods||[]).filter(Ja=>Ja==="google"||Ja==="github"||Ja==="apple");ce($e.inviteeState==="pending_setup"?It:[]);const Mt=!!(gt&&Pn&&$e.email&&Pn.trim().toLowerCase()===$e.email.trim().toLowerCase()),Gn=$e.passwordRequired===!0?"new_user":Mt?"existing_user_ready":"existing_user_signed_out";M(Gn),G(Gn==="new_user"?"Create your account password to join this workspace.":Gn==="existing_user_ready"?"Invite ready. Confirm to join this workspace.":"Sign in with the invited account to join this workspace."),ue(null),Te(null)}else b(null),F(null),M("invalid"),be(!1),ce([]),ue(ra($e)),Te($e.code||$e.state||null)})(),()=>{W=!1}},[an,_,Pe,ua,gt,Pn]),r.useEffect(()=>{_==="invite"&&Q==="existing_user_signed_out"&&A&&U(W=>W.trim()?W:A)},[_,Q,A]),r.useEffect(()=>{if(!(vt>Date.now()||kt>Date.now()))return;const $e=window.setInterval(()=>dt(Date.now()),1e3);return()=>window.clearInterval($e)},[vt,kt]);const Lr=Math.max(0,Math.ceil((vt-_t)/1e3)),Br=Math.max(0,Math.ceil((kt-_t)/1e3)),dr=Lr>0,ur=Br>0,Fs=r.useMemo(()=>Ty(),[]),ra=W=>{const $e=W.error||"Request failed.",It=W.code||W.state;return It?`[${It}] ${$e}`:$e},fa=W=>W?.deliveryAttempted===!1?W?.intro||"If that account exists and still needs verification, we sent an email.":W?.emailSent===!1?`Verification email failed to send. ${W?.emailError||"Try Resend Verification again."}`:"Verification email resent.",so=W=>W?.deliveryAttempted===!1?"If that account exists, we sent password reset instructions.":W?.emailSent===!1?`Password reset email failed to send. ${W?.emailError||"Try again in a minute."}`:"Password reset instructions sent.";r.useEffect(()=>{if(i==="widget"||an&&De)return;const W=wt==="cloud"&&gt&&Ce&&ye?.canAccessApp===!1&&ye?.canAccessPlans!==!1;if(Un.workspace.pending&&!W)return;if(Ka){ea||C("/coming-soon",{replace:!0});return}if(ea&&!Ka){C("/",{replace:!0});return}if(qa){if(!an){const It=`${d.pathname}${d.search}${d.hash}`;C(`/login?next=${encodeURIComponent(It||"/")}`,{replace:!0});return}return}else{const It=an&&_==="invite"&&Pe.trim().length>0;if(an&&gt&&!It&&(!!xe||Un.workspace.pending||_==="register"||_==="verify"||!Un.config.loaded||ta))return;an&&gt&&!It&&Ya(wn,{replace:!0})}if(!(an&&!gt||xe&&gt||an&&gt&&(_==="register"||_==="verify"||_==="invite"&&Pe.trim().length>0))&&!le&&!v){if(ir){if(!v){const It=encodeURIComponent(String(ye?.gate||"plan_selection_required"));C(`/?screen=plans&gate=${It}`,{replace:!0})}return}if(Xt){un&&na==="workspace"&&new URLSearchParams(d.search).get("source")==="cloud"||C(or,{replace:!0});return}if(!(v&&ta)&&!(v&&wt==="cloud"&&Ce&&ye?.canAccessApp===!1&&ye?.canAccessPlans!==!1)){if(Aa){if(ma){(!un||na!=="error")&&C("/setup?step=error",{replace:!0});return}if(cr){(!un||na!=="global")&&C("/setup?step=global",{replace:!0});return}if(Wa){(!un||na!=="workspace")&&C(Fa(),{replace:!0});return}un&&C("/",{replace:!0});return}un&&tn&&!Yn&&C("/",{replace:!0})}}},[i,qa,Ka,ir,an,un,ea,g,v,ye,ye?.gate,Ce,_,le,ta,Aa,tn,ma,Yn,Xt,cr,Wa,na,Un,wt,De,gt,Ce,Pe,d.pathname,d.search,d.hash,C,Ia,xe,or]),r.useEffect(()=>{if(i==="widget"||wt!=="local"||!Un.config.loaded||an||un)return;const W=String(kn||"").trim().toLowerCase();(!W||W==="default")&&C("/setup?step=workspace",{replace:!0})},[i,wt,Un.config.loaded,an,un,kn,C]);const Wr=r.useCallback(async()=>{ca(!0);try{await vr()}finally{ca(!1)}},[vr]),mr=r.useCallback(async()=>{await La(),C("/login",{replace:!0})},[La,C]);if(i==="widget")return n.jsx(iD,{...pt,onHeaderMouseDown:s,isDragging:o,onClose:l});if(h){const W=new URLSearchParams(d.search);return W.set("screen","plans"),n.jsx(Xf,{to:`/?${W.toString()}${d.hash||""}`,replace:!0})}if(g){const W=new URLSearchParams(d.search);return W.set("screen","plans"),n.jsx(Xf,{to:`/?${W.toString()}${d.hash||""}`,replace:!0})}if(Bt==="auth-bootstrap")return n.jsx("div",{className:en.standaloneWrapper,"data-theme":vn,children:n.jsx("div",{className:ge.loginView,children:n.jsxs("div",{className:ge.loginCard,children:[n.jsxs("div",{className:ge.authBrandRow,children:[n.jsx("img",{src:Yt,alt:"Taskforce",className:ge.loginLogo}),n.jsx("h1",{className:ge.loginTitle,children:"Loading Taskforce"})]}),n.jsx("p",{className:ge.loginSubtitle,children:"Checking your session..."})]})})});if(Bt==="app-bootstrap")return n.jsx("div",{className:en.standaloneWrapper,"data-theme":vn,children:n.jsx("div",{className:ge.loginView,children:n.jsxs("div",{className:ge.loginCard,children:[n.jsxs("div",{className:ge.authBrandRow,children:[n.jsx("img",{src:Yt,alt:"Taskforce",className:ge.loginLogo}),n.jsx("h1",{className:ge.loginTitle,children:"Loading Taskforce"})]}),n.jsx("p",{className:ge.loginSubtitle,children:ls}),Un.stalled&&n.jsxs(n.Fragment,{children:[n.jsx("p",{className:ge.loginError,children:Un.error||"Startup checks timed out."}),n.jsx("button",{className:p.submitBtn,disabled:Kn,onClick:Wr,children:Kn?"Retrying...":"Retry checks"}),Hn&&n.jsx("button",{className:p.cancelBtn,disabled:Kn,onClick:mr,children:"Go to sign-in"})]})]})})});if(Bt==="login")return n.jsx("div",{className:en.standaloneWrapper,"data-theme":vn,children:n.jsx("div",{className:ge.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${Np})`},children:n.jsxs("div",{className:ge.loginCard,children:[!Hn&&!qa&&n.jsx("button",{className:ge.loginCloseBtn,"aria-label":"Close sign in","data-testid":"auth-close-button",onClick:()=>C(Ia,{replace:!0}),children:"×"}),n.jsxs("div",{className:ge.authBrandRow,children:[n.jsx("img",{src:Yt,alt:"Taskforce",className:ge.loginLogo}),n.jsxs("h1",{className:ge.loginTitle,children:["TASKFORCE ",n.jsx("span",{className:ge.loginTitleAccent,children:"HQ"})]})]}),n.jsxs("p",{className:ge.loginSubtitle,children:[_==="login"&&"Sign in with your account credentials.",_==="register"&&"Create your Taskforce account.",_==="verify"&&"Enter your verification token.",_==="forgot"&&"Request a password reset link.",_==="reset"&&"Set a new password using your reset token.",_==="invite"&&(Q==="existing_user_ready"?`You've been invited to join ${R||"this workspace"}.`:Q==="existing_user_signed_out"?"Sign in to join this workspace.":"Create your account to join this workspace.")]}),(_==="login"||_==="register"||_==="verify"||_==="forgot"||_==="invite"&&Q==="existing_user_signed_out")&&n.jsxs("label",{className:ge.loginField,children:[n.jsx("span",{className:ge.loginFieldLabel,children:"Email"}),n.jsx("input",{className:`${p.input} ${ge.loginInput}`,type:"email",value:D,placeholder:"Email",autoComplete:"email","data-testid":"auth-email-input",onChange:W=>U(W.target.value)})]}),_==="register"&&n.jsxs("label",{className:ge.loginField,children:[n.jsx("span",{className:ge.loginFieldLabel,children:"Display name"}),n.jsx("input",{className:`${p.input} ${ge.loginInput}`,type:"text",value:L,placeholder:"Display name",autoComplete:"nickname","data-testid":"auth-display-name-input",onChange:W=>X(W.target.value)})]}),(_==="login"||_==="register"||_==="reset"||_==="invite"&&($||Q==="existing_user_signed_out"))&&n.jsxs("label",{className:ge.loginField,children:[n.jsx("span",{className:ge.loginFieldLabel,children:_==="reset"?"New password":_==="invite"&&$?"Create password":"Password"}),n.jsx("input",{className:`${p.input} ${ge.loginInput}`,type:"password",value:me,placeholder:_==="reset"?"New password":_==="invite"&&$?"Create password":"Password",autoComplete:_==="register"||_==="reset"||_==="invite"&&$?"new-password":"current-password","data-testid":"auth-password-input",onChange:W=>se(W.target.value)})]}),(_==="register"||_==="invite"&&$)&&n.jsx(n.Fragment,{children:n.jsxs("label",{className:ge.loginField,children:[n.jsx("span",{className:ge.loginFieldLabel,children:"Confirm password"}),n.jsx("input",{className:`${p.input} ${ge.loginInput}`,type:"password",value:ae,placeholder:"Confirm password",autoComplete:"new-password","data-testid":"auth-confirm-password-input",onChange:W=>O(W.target.value)})]})}),(_==="register"||_==="invite"&&$)&&n.jsx("p",{className:ge.loginSubtitle,children:Fs.join(" ")}),_==="verify"&&n.jsxs("label",{className:ge.loginField,children:[n.jsx("span",{className:ge.loginFieldLabel,children:"Verification token"}),n.jsx("input",{className:`${p.input} ${ge.loginInput}`,type:"text",value:ke,placeholder:"Verification token",autoComplete:"one-time-code","data-testid":"auth-verification-token-input",onChange:W=>Y(W.target.value)})]}),_==="reset"&&n.jsxs("label",{className:ge.loginField,children:[n.jsx("span",{className:ge.loginFieldLabel,children:"Reset token"}),n.jsx("input",{className:`${p.input} ${ge.loginInput}`,type:"text",value:Ee,placeholder:"Reset token",autoComplete:"one-time-code","data-testid":"auth-reset-token-input",onChange:W=>je(W.target.value)})]}),_==="invite"&&n.jsxs(n.Fragment,{children:[n.jsxs("label",{className:ge.loginField,children:[n.jsx("span",{className:ge.loginFieldLabel,children:"Invite token"}),n.jsx("input",{className:`${p.input} ${ge.loginInput}`,type:"text",value:Pe,placeholder:"Invite token","data-testid":"auth-invite-token-input",onChange:W=>K(W.target.value)})]}),A&&n.jsxs("p",{className:ge.loginSubtitle,children:["Invite for: ",n.jsx("strong",{children:A}),R?` · Workspace: ${R}`:""]})]}),he&&n.jsx("p",{className:ge.loginSubtitle,children:he}),re&&n.jsx("p",{className:ge.loginError,children:re}),_==="login"&&Re==="EMAIL_NOT_VERIFIED"&&D.trim()&&n.jsx("button",{className:ge.authModeLink,disabled:De||dr,onClick:async()=>{Oe(!0),G(null);const W=await xr(D);W.success?(st(Date.now()+3e4),Bn("verify"),W.verificationToken&&Y(W.verificationToken),G(fa(W)),ue(null),Te(null)):ue(ra(W)),Oe(!1)},children:dr?`Resend in ${Lr}s`:"Resend Verification Email"}),n.jsx("div",{className:ge.authPrimaryActions,role:"group","aria-label":"Primary authentication action",children:n.jsx("button",{className:`${p.submitBtn} ${ge.loginPrimaryBtn}`,disabled:De||_==="forgot"&&ur,"data-testid":"auth-submit-button",onClick:async()=>{if(Oe(!0),G(null),ue(null),Te(null),_==="register"&&!L.trim()){ue("Display name is required."),Oe(!1);return}if(_==="register"){const $e=Ry(me,{email:D,displayName:L});if(!$e.ok){ue($e.message||"Password does not meet the password policy."),Te($e.code||null),Oe(!1);return}if(me!==ae){ue("Passwords do not match."),Te("PASSWORD_CONFIRMATION_MISMATCH"),Oe(!1);return}}let W={success:!1};if(_==="login"?W=await br(D,me):_==="register"?W=await Nn(D,me,{displayName:L,planId:y||void 0,planVersionId:k||void 0,interval:S||void 0}):_==="verify"?W=await At(ke):_==="forgot"?W=await va(D):_==="reset"?W=await Sa(Ee,me):_==="invite"&&(Q==="existing_user_signed_out"?W=await br(D,me):W=$?await zn(Pe,me):await sr(Pe)),W.success)if(_==="register"){const $e=Gt(W),It=Ta(W);W.verificationRequired?(z(!!W.workspaceSetupRequired),fe(It?String(W.commercialState||"").trim()||(W.planSelectionRequired?"pending_plan_selection":"checkout_pending"):null),Me($e),W.verificationToken&&Y(W.verificationToken),st(Date.now()+3e4),Bn("verify"),G(W.emailSent===!1?`Account created, but verification email failed to send. ${W.emailError||"Try Resend Verification again."}`:"Account created. Check your email for verification instructions.")):(Ie(It),oe({path:$e,workspaceSetupRequired:!!W.workspaceSetupRequired,commercialOnboardingGate:It}))}else if(_==="verify"){await vr();const $e=ie==="pending_plan_selection"||ie==="checkout_pending";Ie($e),oe({path:q||wn,workspaceSetupRequired:P,commercialOnboardingGate:$e})}else if(_==="forgot"){const $e=W.deliveryAttempted===!0&&W.emailSent===!1;W.resetToken&&je(W.resetToken),G(so(W)),$e||(Ye(Date.now()+3e4),Bn("reset"))}else if(_==="reset")Bn("login"),G("Password updated. Sign in with your new password.");else if(_==="invite"){if(Q==="existing_user_signed_out"){const $e=String(A||"").trim().toLowerCase(),It=D.trim().toLowerCase();if($e&&It===$e){de("invite"),M("existing_user_ready"),se(""),O(""),G("Signed in. Review the invite details to continue."),ue(null),Te(null),Oe(!1);return}$e&&U(A||""),M("existing_user_signed_out"),se(""),O(""),G($e?`Signed in, but this invite is for ${A}. Sign in with that account to continue.`:"Signed in, but this invite requires the invited account. Sign in with that account to continue."),ue("Sign in with the invited account to join this workspace."),Te("INVITE_ACCOUNT_MISMATCH"),Oe(!1);return}if(W.workspaceSetupRequired){C(Fa(),{replace:!0}),Oe(!1);return}Ya(wn,{replace:!0})}else if(_==="login"){if(Pe.trim()){de("invite"),se(""),O(""),G("Signed in. Review the invite details to continue."),Oe(!1);return}if(W.workspaceSetupRequired){C(Fa(),{replace:!0}),Oe(!1);return}U(""),X(""),se(""),O(""),Ya(wn,{replace:!0})}else U(""),X(""),se(""),O(""),Ya(wn,{replace:!0});else{if(_==="register"&&(W.code==="SIGNUP_PLAN_NOT_ENABLED"||W.code==="SIGNUP_PLAN_VERSION_NOT_FOUND"||W.code==="SIGNUP_PLAN_VERSION_REQUIRED")){C(I,{replace:!0}),Oe(!1);return}if(ue(ra(W)),Te(W.code||null),_==="login"&&(W.code==="WORKSPACE_NOT_FOUND"||W.code==="WORKSPACE_ID_REQUIRED")){C("/setup?step=workspace",{replace:!0}),Oe(!1);return}if(_==="login"&&W.code==="EMAIL_NOT_VERIFIED"&&D.trim()){const $e=await xr(D);$e.success&&(st(Date.now()+3e4),Bn("verify"),$e.verificationToken&&Y($e.verificationToken),G(fa({...$e,intro:"If that account exists and still needs verification, we sent an email."})),ue(null),Te(null))}_==="register"&&W.code==="EMAIL_ALREADY_EXISTS_UNVERIFIED"&&D.trim()&&(st(Date.now()+3e4),Bn("verify"),W.verificationToken&&Y(W.verificationToken),G(W.emailSent===!1?`This email already has an unverified account, but verification email delivery failed. ${W.emailError||"Try Resend Verification again."}`:"This email already has an unverified account. Check your email for verification instructions."),ue(null),Te(null))}Oe(!1)},children:De?"Working...":_==="login"?"Sign In":_==="register"?"Create Account":_==="verify"?"Verify Email":_==="forgot"?ur?`Retry in ${Br}s`:"Send Reset Link":_==="reset"?"Reset Password":Q==="existing_user_signed_out"?"Sign In to Continue":$?"Create Account and Join":"Join Workspace"})}),(_==="login"||_==="register")&&Dn.length>0&&n.jsxs("div",{className:ge.oauthProviders,children:[n.jsx("div",{className:ge.oauthDivider,children:n.jsx("span",{children:"or continue with"})}),n.jsxs("div",{className:ge.oauthButtons,children:[Dn.includes("google")&&n.jsx("button",{type:"button",className:ge.oauthButton,disabled:De,onClick:()=>da("google",d.pathname!=="/login"?d.pathname:"/"),"aria-label":"Continue with Google",children:"Google"}),Dn.includes("github")&&n.jsx("button",{type:"button",className:ge.oauthButton,disabled:De,onClick:()=>da("github",d.pathname!=="/login"?d.pathname:"/"),"aria-label":"Continue with GitHub",children:"GitHub"}),Dn.includes("apple")&&n.jsx("button",{type:"button",className:ge.oauthButton,disabled:De,onClick:()=>da("apple",d.pathname!=="/login"?d.pathname:"/"),"aria-label":"Continue with Apple",children:"Apple"})]})]}),_==="invite"&&Q==="new_user"&&H.length>0&&n.jsxs("div",{className:ge.oauthProviders,children:[n.jsx("div",{className:ge.oauthDivider,children:n.jsx("span",{children:"or join with"})}),n.jsxs("div",{className:ge.oauthButtons,children:[H.includes("google")&&n.jsx("button",{type:"button",className:ge.oauthButton,disabled:De,onClick:()=>da("google","/",Pe),"aria-label":"Join with Google",children:"Google"}),H.includes("github")&&n.jsx("button",{type:"button",className:ge.oauthButton,disabled:De,onClick:()=>da("github","/",Pe),"aria-label":"Join with GitHub",children:"GitHub"}),H.includes("apple")&&n.jsx("button",{type:"button",className:ge.oauthButton,disabled:De,onClick:()=>da("apple","/",Pe),"aria-label":"Join with Apple",children:"Apple"})]})]}),_==="register"&&n.jsxs("p",{className:ge.registerConsent,children:["By creating an account, you agree to the"," ",n.jsx("a",{className:ge.registerConsentLink,href:"https://taskforcehq.ai/legal/terms/",target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})," ","and acknowledge the"," ",n.jsx("a",{className:ge.registerConsentLink,href:"https://taskforcehq.ai/legal/privacy/",target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"}),"."]}),n.jsxs("div",{className:ge.authSecondaryActions,role:"group","aria-label":"Authentication navigation",children:[Ca&&(_==="login"||_==="register")&&n.jsxs("p",{className:ge.authModeSwitch,children:[_==="login"?"Need an account?":"Already have an account?"," ",n.jsx("button",{className:ge.authModeSwitchLink,disabled:De,"data-testid":"auth-switch-mode-button",onClick:()=>{ue(null),Te(null),G(null),Bn(_==="login"?"register":"login")},children:_==="login"?"Register":"Sign In"})]}),n.jsxs("div",{className:ge.authModeLinks,children:[(_==="login"||_==="register")&&n.jsxs(n.Fragment,{children:[n.jsx("button",{className:ge.authModeLink,disabled:De||ur,"data-testid":"auth-forgot-password-button",onClick:()=>{ue(null),Te(null),G(null),Bn("forgot")},children:ur?`Forgot Password (${Br}s)`:"Forgot Password"}),n.jsx("button",{className:ge.authModeLink,disabled:De||dr,"data-testid":"auth-resend-verification-button",onClick:()=>{ue(null),Te(null),G(null),Bn("verify")},children:dr?`Resend Verification (${Lr}s)`:"Resend Verification"}),n.jsx("button",{className:ge.authModeLink,disabled:De,"data-testid":"auth-accept-invite-button",onClick:()=>{ue(null),Te(null),G(null),Bn("invite")},children:"Accept Invite"})]}),_!=="login"&&_!=="register"&&n.jsxs(n.Fragment,{children:[_==="verify"&&n.jsx("button",{className:ge.authModeLink,disabled:De||dr||!D.trim(),"data-testid":"auth-resend-verification-button",onClick:async()=>{Oe(!0),G(null),ue(null),Te(null);const W=await xr(D);W.success?(st(Date.now()+3e4),W.verificationToken&&Y(W.verificationToken),G(fa(W))):ue(ra(W)),Oe(!1)},children:dr?`Resend Verification (${Lr}s)`:"Resend Verification"}),n.jsx("button",{className:ge.authModeLink,disabled:De,"data-testid":"auth-return-sign-in-button",onClick:()=>{ue(null),Te(null),G(null),Bn("login")},children:_==="verify"?"Back to Sign In":"Sign In"}),Ca&&_!=="verify"&&n.jsx("button",{className:ge.authModeLink,disabled:De,"data-testid":"auth-return-register-button",onClick:()=>{ue(null),Te(null),G(null),Bn("register")},children:"Register"}),_==="reset"&&n.jsx("button",{className:ge.authModeLink,disabled:De||ur,"data-testid":"auth-return-forgot-password-button",onClick:()=>{ue(null),Te(null),G(null),Bn("forgot")},children:ur?`Forgot Password (${Br}s)`:"Forgot Password"})]})]})]})]})})});if(Bt==="login-redirect")return n.jsx("div",{className:en.standaloneWrapper,"data-theme":vn,children:n.jsx("div",{className:ge.loginView,children:n.jsxs("div",{className:ge.loginCard,children:[n.jsxs("div",{className:ge.authBrandRow,children:[n.jsx("img",{src:Yt,alt:"Taskforce",className:ge.loginLogo}),n.jsx("h1",{className:ge.loginTitle,children:"Loading Taskforce"})]}),n.jsx("p",{className:ge.loginSubtitle,children:"Redirecting to sign in..."})]})})});if(Bt==="coming-soon")return n.jsx("div",{className:en.standaloneWrapper,"data-theme":vn,children:n.jsx("div",{className:ge.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${Np})`},children:n.jsxs("div",{className:ge.loginCard,children:[n.jsxs("div",{className:ge.authBrandRow,children:[n.jsx("img",{src:Yt,alt:"Taskforce",className:ge.loginLogo}),n.jsx("h1",{className:ge.loginTitle,children:"Beta Access"})]}),n.jsx("p",{className:ge.loginSubtitle,children:"You are signed in, but your account does not have beta access yet."}),n.jsx("p",{className:ge.loginSubtitle,children:"You will see the full app as soon as beta access is enabled."}),n.jsx("button",{className:p.cancelBtn,onClick:async()=>{await pt.logout(),C("/login",{replace:!0})},children:"Sign Out"})]})})});if(Bt==="guided-setup"){const W=!Yn&&(ma||na==="error"),$e=!Yn&&!W&&(cr||na==="global"),It=qe(W?"setup.headingCheckFailed":$e?"setup.headingGlobalRequired":"setup.headingWorkspaceRequired"),Mt=W?qe("setup.subtitleUnreadable"):$e?qe("setup.subtitleGlobalRequired"):null,Gn="Workspace",Ja=Hn||Fe!=="cloud",Yr=Ja&&St==="details",Wn=Ja&&St==="library",Fr=!Hn&&Mn&&Yr&&!Xt,Fn=bn?.runtimeMode==="cloud"?hg:tv,T=Sn?Pp(Sn.categories):"",j=Sn?Pp(Sn.types):"",nt=Sn?Pp(Sn.priorities):"",bt=ee?qe("setup.saving"):Er?Xt?_a?"Retry Import":"Importing Workspace...":"Connect Workspace":Yr?"Continue":Wn?"Create Workspace":"Connect Workspace";return n.jsx("div",{className:en.standaloneWrapper,"data-theme":vn,children:n.jsx("div",{className:ge.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${Np})`},children:n.jsxs("div",{className:ge.loginCard,children:[n.jsxs("div",{className:ge.setupHeaderRow,children:[n.jsxs("div",{className:ge.authBrandRow,children:[n.jsx("img",{src:Yt,alt:"Taskforce",className:ge.loginLogo}),n.jsxs("h1",{className:ge.loginTitle,children:["TASKFORCE ",n.jsx("span",{className:ge.loginTitleAccent,children:"HQ"})]})]}),bn&&n.jsx("span",{className:ge.runtimeIconBadge,title:bn.runtimeMode==="cloud"?"Cloud runtime":"Local runtime","aria-label":bn.runtimeMode==="cloud"?"Cloud runtime":"Local runtime",children:Ue.createElement(Fn,{size:16,"aria-hidden":!0})})]}),n.jsx("p",{className:ge.loginSubtitle,children:n.jsx("strong",{children:It})}),Mt?n.jsx("p",{className:ge.loginSubtitle,children:Mt}):null,Et&&n.jsx("p",{className:ge.loginSubtitle,children:Et}),ft&&n.jsx("p",{className:ge.loginError,children:ft}),$e&&n.jsxs("div",{className:ge.optionGrid,children:[n.jsxs("label",{className:`${ge.authModeLink} ${ge.optionRow}`,children:[n.jsx("input",{type:"radio",name:"setup-mode",value:"core",checked:Qe==="core",onChange:()=>Rt("core"),disabled:ee}),n.jsx("span",{children:qe("setup.coreModeOption",{workspaceLabel:Gn})})]}),n.jsxs("label",{className:`${ge.authModeLink} ${ge.optionRow}`,children:[n.jsx("input",{type:"radio",name:"setup-mode",value:"operations",checked:Qe==="operations",onChange:()=>Rt("operations"),disabled:ee}),n.jsx("span",{children:qe("setup.operationsModeOption")})]})]}),!W&&!$e&&n.jsxs("div",{className:ge.optionGrid,children:[Fr&&n.jsxs("div",{className:ge.optionGroup,children:[n.jsxs("label",{className:`${ge.authModeLink} ${ge.optionRow}`,children:[n.jsx("input",{type:"radio",name:"workspace-setup-source",value:"local",checked:Fe==="local",onChange:()=>Ze("local"),disabled:ee}),n.jsxs("span",{children:["Create new local ",Gn.toLowerCase()]})]}),n.jsxs("label",{className:`${ge.authModeLink} ${ge.optionRow}`,children:[n.jsx("input",{type:"radio",name:"workspace-setup-source",value:"cloud",checked:Fe==="cloud",onChange:()=>Ze("cloud"),disabled:ee}),n.jsxs("span",{children:["Sync existing cloud ",Gn.toLowerCase()]})]})]}),Er?n.jsxs("div",{className:ge.optionGroup,children:[!Xt&&!Mn&&n.jsx("p",{className:ge.loginError,children:"Cloud workspace sync is unavailable right now. Switch back to local setup or refresh runtime configuration."}),!Xt&&Mn&&!gt&&n.jsxs(n.Fragment,{children:[n.jsx("p",{className:ge.inlineHint,children:"Sign in to choose one of your cloud projects."}),n.jsxs("div",{className:ge.actionRowEnd,children:[n.jsx("button",{className:p.cancelBtn,disabled:ee,onClick:()=>{C(`/login?mode=login&next=${encodeURIComponent(or)}`,{replace:!0})},children:"Sign In"}),Ca&&n.jsx("button",{className:p.submitBtn,disabled:ee,onClick:()=>{C(`/login?mode=register&next=${encodeURIComponent(or)}`,{replace:!0})},children:"Register"})]})]}),!Xt&&Mn&&gt&&n.jsxs(n.Fragment,{children:[n.jsxs("select",{className:p.input,value:Ct,onChange:ve=>jt(ve.target.value),disabled:ee||Wt||te.length===0,children:[te.length===0&&n.jsx("option",{value:"",children:Wt?"Loading cloud projects...":"No cloud projects found"}),te.map(ve=>n.jsxs("option",{value:ve.id,children:[ve.name," (",ve.id,")"]},ve.id))]}),n.jsx("div",{className:ge.actionRowEnd,children:n.jsx("button",{className:p.cancelBtn,disabled:ee||Wt,onClick:()=>{An()},children:"Refresh Cloud Projects"})}),$t&&n.jsx("p",{className:ge.loginError,children:$t})]}),Xt&&n.jsxs(n.Fragment,{children:[n.jsxs("p",{className:ge.inlineHint,children:['Importing "',Xt.name,'" from cloud into local.']}),n.jsx("div",{className:ge.optionGroup,children:Ar.map(ve=>n.jsx("p",{className:ge.inlineHint,children:ve},ve))}),n.jsx("p",{className:ge.inlineHint,children:Ae?"Finishing setup and opening your workspace.":ya||"Pulling tasks, taxonomies, and settings into local."}),!Ae&&Sr&&n.jsx("p",{className:ge.inlineHint,children:Sr})]})]}):n.jsxs(n.Fragment,{children:[Yr&&n.jsxs(n.Fragment,{children:[n.jsx("p",{className:ge.loginSubtitle,children:"Workspace name"}),n.jsx("input",{className:p.input,type:"text",value:Ot,placeholder:"Workspace name",onChange:ve=>Dt(ve.target.value),disabled:ee}),n.jsx("p",{className:ge.loginSubtitle,children:"Workspace description"}),n.jsx("textarea",{className:p.textarea,value:We,placeholder:"Workspace description (optional)",onChange:ve=>tt(ve.target.value),disabled:ee,rows:4})]}),Wn&&n.jsxs("div",{className:ge.optionGroup,children:[n.jsx("p",{className:ge.loginSubtitle,children:"What are you working on?"}),n.jsxs("select",{className:p.input,value:Pt,onChange:ve=>Ft(ve.target.value),disabled:ee||rn||zt.length===0,children:[zt.length===0&&n.jsx("option",{value:"",children:rn?"Loading setup options...":"No setup options available"}),zt.map(ve=>n.jsx("option",{value:ve.id,children:ve.label},ve.id))]}),Sn?n.jsx(n.Fragment,{children:Sn.description?n.jsx("p",{className:ge.inlineHint,children:Sn.description}):null}):null,n.jsxs("div",{className:ge.optionGroup,children:[n.jsx("p",{className:ge.loginSubtitle,children:"Apply Setup Sections"}),n.jsxs("label",{className:`${ge.authModeLink} ${ge.optionRow}`,children:[n.jsx("input",{type:"checkbox",checked:Lt.categories,onChange:()=>Ht(ve=>({...ve,categories:!ve.categories})),disabled:ee||!Sn?.categories.length}),n.jsx("span",{children:"Categories"})]}),T?n.jsx("p",{className:ge.inlineHint,children:T}):null,n.jsxs("label",{className:`${ge.authModeLink} ${ge.optionRow}`,children:[n.jsx("input",{type:"checkbox",checked:Lt.types,onChange:()=>Ht(ve=>({...ve,types:!ve.types})),disabled:ee||!Sn?.types.length}),n.jsx("span",{children:"Task Types"})]}),j?n.jsx("p",{className:ge.inlineHint,children:j}):null,n.jsxs("label",{className:`${ge.authModeLink} ${ge.optionRow}`,children:[n.jsx("input",{type:"checkbox",checked:Lt.priorities,onChange:()=>Ht(ve=>({...ve,priorities:!ve.priorities})),disabled:ee||!Sn?.priorities.length}),n.jsx("span",{children:"Priorities"})]}),nt?n.jsx("p",{className:ge.inlineHint,children:nt}):null]}),rn?n.jsx("p",{className:ge.inlineHint,children:"Loading setup options…"}):null,Vn?n.jsx("p",{className:ge.loginError,children:Vn}):null]}),!Hn&&Mn&&gt&&Yr&&n.jsxs("div",{className:ge.optionGroup,children:[n.jsxs("label",{className:`${ge.authModeLink} ${ge.optionRow}`,children:[n.jsx("input",{type:"checkbox",checked:E,onChange:ve=>c(ve.target.checked),disabled:ee}),n.jsx("span",{children:"Sync to cloud after setup"})]}),n.jsx("p",{className:ge.inlineHint,children:"When enabled, this project will connect to cloud sync as soon as setup finishes."})]})]})]}),n.jsxs("div",{className:ge.authModeLinks,children:[Wn?n.jsx("button",{className:p.cancelBtn,onClick:()=>{it(null),ht(null),ot("details")},children:"Back"}):Yn?n.jsx("button",{className:p.cancelBtn,onClick:()=>{it(null),ht(null),C("/",{replace:!0})},children:"Cancel"}):wt==="cloud"?n.jsx("button",{className:p.cancelBtn,onClick:async()=>{await pt.logout(),C("/login",{replace:!0})},children:qe("setup.signOut")}):null,$e?n.jsx("button",{className:p.submitBtn,disabled:ee||_r&&!!Xt&&!_a,onClick:async()=>{ze(!0),ht(null),it(null);try{const ve=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:Qe}})}),ne=await ve.json().catch(()=>({}));!ve.ok||ne?.success===!1?it(ne?.error||qe("setup.saveFailedWithStatus",{status:ve.status})):(ht(qe("setup.globalSetupSaved")),await Kt())}catch{it(qe("setup.saveFailed"))}finally{ze(!1)}},children:qe(ee?"setup.saving":"setup.saveGlobalSetup")}):W?n.jsx("button",{className:p.submitBtn,disabled:ee,onClick:Kt,children:qe("setup.retrySetupCheck")}):n.jsx("button",{className:p.submitBtn,disabled:ee||_r&&!Xt&&!gt,onClick:async()=>{if(_r&&Xt){if(!_a)return;ze(!0),ht(`Retrying import for ${Xt.name}...`),it(null);try{await qr()}catch{ht(null),it(`Failed to retry import for "${Xt.name}".`)}finally{ze(!1)}return}if(Er){if(!Mn){it("Cloud workspace sync is unavailable right now."),ze(!1);return}if(!gt){it("Sign in is required before syncing a cloud project."),ze(!1);return}const ve=te.find(ja=>ja.id===Ct);if(!ve){it("Select a cloud project to sync."),ze(!1);return}const ne=await Xn({workspaceId:ve.id,name:ve.name||ve.id,description:ve.description||void 0});if(!ne.success){it(ne.error||qe("setup.saveWorkspaceFailed")),ze(!1);return}const Ra=String(ne.workspaceId||ve.id||"").trim();if(!Ra){it("Failed to resolve workspace id for sync setup."),ze(!1);return}try{await wa(Ra,{version:2,enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null})}catch(ja){it(ja instanceof Error?ja.message:"Failed to configure workspace sync."),ze(!1);return}Zt({enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null}),await Kt(),we({workspaceId:Ra,name:ve.name||ve.id}),Ke(!1),ht(`Importing ${ve.name||ve.id} from cloud...`),ze(!1);return}if(Yr){if(!Ot.trim()){it("Workspace name is required before continuing.");return}it(null),ht(null),ot("library");return}ze(!0),ht(null),it(null);{const ve=Yn||tn?.workspaceSetupState==="missing",ne=Yn||Cn&&ve,Ra=ne?await Rn(Ot,We||void 0):null,ja=ne?null:await Xn({workspaceId:ve?void 0:tn?.workspaceId,name:Ot,description:We}),ha=Ra||ja;if(ha?.success){const Os=String(Ra?.workspace?.id||ja?.workspaceId||tn?.workspaceId||"").trim();if(!Os){it("Failed to resolve workspace id for setup."),ze(!1);return}if(!!Sn&&(Lt.categories||Lt.types||Lt.priorities)&&Sn){const us=await Va.onApplySystemTaxonomyPack({pack:Sn,sections:Lt,remapExistingValuesToDefault:!0,workspaceIdOverride:Os});if(!us?.success){it(us?.error||"Failed to apply setup library."),ze(!1);return}}const Na=!!(!Hn&&E&&Mn&&gt),oo=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:Os,stateKey:"workspace-sync",patch:{version:2,enabled:Na,phase:Na?"provision-local":"idle",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}})}),Lo=await oo.json().catch(()=>({}));if(!oo.ok||Lo?.success===!1){it(Lo?.error||`Failed to configure workspace sync (${oo.status})`),ze(!1);return}Zt({enabled:Na,phase:Na?"provision-local":"idle",setupIntent:null,pullCursor:null}),ht(Na?`${Gn} setup saved. Cloud sync enabled.`:qe("setup.workspaceSetupSaved",{workspaceLabel:Gn})),Yn&&(await Kt(),await ka(!0),C("/",{replace:!0}))}else{if(ha?.code==="WORKSPACE_LIMIT_REACHED"){ze(!1),C(x,{replace:!0});return}it(ha?.error||qe("setup.saveWorkspaceFailed"))}}ze(!1)},children:bt})]})]})})})}return n.jsx(C5,{...pt,onHeaderMouseDown:s,isDragging:o,onClose:l})}function I5(e){return pv()?n.jsx(og,{...e}):n.jsx(fv,{children:n.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 T5(){if(typeof window<"u"){const t=window.location.hostname.toLowerCase();if(t==="localhost"||t==="127.0.0.1"||t==="::1")return}return mf(Hy).apiBaseUrl||void 0}function R5(e){const t=mf(Hy),a=t.cloudAuthBaseUrl;if(a)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(a,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 a}catch{}else return a}else return a;if(t.baseUrl)return t.baseUrl;if(e)return e}function j5(){const e=T5(),t=R5(e);return n.jsx(hv,{children:n.jsx(I5,{mode:"standalone",config:{apiEndpoint:"/api/taskforce/task",apiBaseUrl:e,cloudAuthBaseUrl:t}})})}Tk.createRoot(document.getElementById("root")).render(n.jsx(Ue.StrictMode,{children:n.jsx(j5,{})}));export{E1 as $,V5 as A,gB as B,X1 as C,Qc as D,wB as E,G5 as F,tF as G,GL as H,tc as I,uf as J,Kp as K,Gh as L,Ws as M,Vh as N,UW as O,q5 as P,nF as Q,ly as R,ky as S,id as T,vm as U,cy as V,Y5 as W,Z5 as X,gm as Y,MO as Z,M1 as _,_m as a,T1 as a0,H5 as a1,Cm as a2,Vr as b,eS as c,Av as d,Ut as e,W5 as f,Qu as g,B1 as h,ub as i,K5 as j,W1 as k,sy as l,Xe as m,vS as n,em as o,Kg as p,tm as q,Da as r,Zg as s,p as t,$5 as u,F5 as v,U5 as w,O5 as x,z5 as y,MS as z};