@taskforcehq/taskforce 0.3.301 → 0.3.302

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 (147) hide show
  1. package/dist/Taskforce.module.css +26 -2
  2. package/dist/TaskforceCore.filter-persistence.test.js +1 -1
  3. package/dist/TaskforceCore.js +13 -24
  4. package/dist/TaskforceCore.test.js +167 -152
  5. package/dist/components/features/TaskSettings.js +14 -82
  6. package/dist/components/features/TaskSettings.test.js +33 -70
  7. package/dist/components/features/settings/TaxonomyLibraryManager.js +8 -2
  8. package/dist/components/features/settings/TaxonomyLibraryManager.test.js +1 -1
  9. package/dist/components/task/TaskActionHeader.js +6 -3
  10. package/dist/components/task/TaskCard.js +6 -3
  11. package/dist/components/task/TaskForm.js +2 -2
  12. package/dist/components/task/TaskForm.test.js +41 -2
  13. package/dist/components/ui/ReferenceBadgeButton.js +1 -1
  14. package/dist/components/views/PlansPage.js +9 -8
  15. package/dist/components/views/StandaloneLayout.js +466 -204
  16. package/dist/components/views/panels/PlanningDrawer.js +18 -1
  17. package/dist/components/views/standalone/modals/AccountHubModal.d.ts +43 -0
  18. package/dist/components/views/standalone/modals/AccountHubModal.js +22 -0
  19. package/dist/components/views/standalone/modals/CreateWorkspaceConfirmModal.d.ts +9 -0
  20. package/dist/components/views/standalone/modals/CreateWorkspaceConfirmModal.js +8 -0
  21. package/dist/components/views/standalone/modals/EditProfileModal.d.ts +26 -0
  22. package/dist/components/views/standalone/modals/EditProfileModal.js +10 -0
  23. package/dist/components/views/standalone/modals/HelpModal.d.ts +9 -0
  24. package/dist/components/views/standalone/modals/HelpModal.js +8 -0
  25. package/dist/components/views/standalone/modals/ScheduleWarningModal.d.ts +13 -0
  26. package/dist/components/views/standalone/modals/ScheduleWarningModal.js +6 -0
  27. package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +61 -0
  28. package/dist/components/views/standalone/modals/SyncStatusModal.js +38 -0
  29. package/dist/components/views/standalone/modals/TeamManagementModal.d.ts +64 -0
  30. package/dist/components/views/standalone/modals/TeamManagementModal.js +10 -0
  31. package/dist/components/views/standalone/modals/types.d.ts +2 -0
  32. package/dist/components/views/standalone/modals/types.js +1 -0
  33. package/dist/components/views/teamManagementAccess.d.ts +1 -1
  34. package/dist/components/views/teamManagementAccess.js +2 -2
  35. package/dist/components/views/teamManagementAccess.test.js +3 -3
  36. package/dist/config/deployment.js +2 -2
  37. package/dist/config/deployment.test.js +5 -3
  38. package/dist/core/AiProfileService.js +7 -2
  39. package/dist/core/AiProfiles.test.js +19 -0
  40. package/dist/core/SyncReconciliationService.d.ts +2 -0
  41. package/dist/core/SyncReconciliationService.js +3 -0
  42. package/dist/core/TaskAuditTimeline.test.js +40 -0
  43. package/dist/core/Taskforce.d.ts +49 -0
  44. package/dist/core/Taskforce.ids.test.js +133 -0
  45. package/dist/core/Taskforce.js +241 -78
  46. package/dist/core/UserProfileAvatarDrafts.test.d.ts +1 -0
  47. package/dist/core/UserProfileAvatarDrafts.test.js +102 -0
  48. package/dist/core/taskReferencePolicy.d.ts +28 -0
  49. package/dist/core/taskReferencePolicy.js +189 -0
  50. package/dist/core/types.d.ts +2 -0
  51. package/dist/hooks/tasks/useTaskFormActions.js +3 -0
  52. package/dist/hooks/useTaskData.js +3 -2
  53. package/dist/hooks/useTaskData.test.js +66 -0
  54. package/dist/hooks/useTaskforce.d.ts +5 -0
  55. package/dist/hooks/useTaskforce.js +63 -15
  56. package/dist/hooks/useTaskforce.sync-behavior.test.js +185 -6
  57. package/dist/mcp/aiProfileBootstrap.d.ts +29 -0
  58. package/dist/mcp/aiProfileBootstrap.js +80 -0
  59. package/dist/mcp/aiProfileBootstrap.test.d.ts +1 -0
  60. package/dist/mcp/aiProfileBootstrap.test.js +68 -0
  61. package/dist/mcp/clientIntegrations.d.ts +2 -8
  62. package/dist/mcp/clientIntegrations.js +21 -40
  63. package/dist/mcp/clientIntegrations.test.js +28 -2
  64. package/dist/mcp/clientProfileDefaults.d.ts +12 -0
  65. package/dist/mcp/clientProfileDefaults.js +37 -0
  66. package/dist/mcp/runtime.d.ts +10 -7
  67. package/dist/mcp/runtime.js +41 -19
  68. package/dist/mcp/runtime.test.js +49 -2
  69. package/dist/migrations/taskSchemaMigrations.js +53 -1
  70. package/dist/qaOpen.test.d.ts +1 -0
  71. package/dist/qaOpen.test.js +56 -0
  72. package/dist/server/index.cookieProxy.test.js +1 -0
  73. package/dist/server/index.d.ts +1 -0
  74. package/dist/server/index.js +15 -1
  75. package/dist/server/index.test.js +14 -1
  76. package/dist/server/routes/admin.js +25 -22
  77. package/dist/server/routes/auth.d.ts +5 -0
  78. package/dist/server/routes/auth.js +350 -16
  79. package/dist/server/routes/billing.js +11 -1
  80. package/dist/server/routes/billing.test.js +32 -2
  81. package/dist/server/routes/documents.js +6 -1
  82. package/dist/server/routes/shared.d.ts +1 -1
  83. package/dist/server/routes/shared.js +11 -3
  84. package/dist/server/routes/sync.integration.test.js +130 -0
  85. package/dist/server/routes/sync.js +226 -1924
  86. package/dist/server/routes/tasks.js +18 -4
  87. package/dist/server/routes.js +26 -19
  88. package/dist/server/routes.test.js +352 -6
  89. package/dist/shared/runtimeContract.d.ts +1 -1
  90. package/dist/sync/collaborationSyncPayload.d.ts +17 -0
  91. package/dist/sync/collaborationSyncPayload.js +131 -0
  92. package/dist/sync/collaborationSyncPayload.test.d.ts +1 -0
  93. package/dist/sync/collaborationSyncPayload.test.js +104 -0
  94. package/dist/sync/collaborationSyncState.d.ts +15 -0
  95. package/dist/sync/collaborationSyncState.js +60 -0
  96. package/dist/sync/contentSyncPayload.d.ts +45 -0
  97. package/dist/sync/contentSyncPayload.js +104 -0
  98. package/dist/sync/contentSyncPayload.test.d.ts +1 -0
  99. package/dist/sync/contentSyncPayload.test.js +104 -0
  100. package/dist/sync/contentSyncState.d.ts +88 -0
  101. package/dist/sync/contentSyncState.js +743 -0
  102. package/dist/sync/planningSyncPayload.d.ts +9 -0
  103. package/dist/sync/planningSyncPayload.js +82 -0
  104. package/dist/sync/planningSyncPayload.test.d.ts +1 -0
  105. package/dist/sync/planningSyncPayload.test.js +68 -0
  106. package/dist/sync/syncApplyHandlers.d.ts +83 -0
  107. package/dist/sync/syncApplyHandlers.js +445 -0
  108. package/dist/sync/taskSyncPayload.d.ts +33 -0
  109. package/dist/sync/taskSyncPayload.js +126 -0
  110. package/dist/sync/taskSyncPayload.test.d.ts +1 -0
  111. package/dist/sync/taskSyncPayload.test.js +54 -0
  112. package/dist/sync/workspacePullFeed.d.ts +28 -0
  113. package/dist/sync/workspacePullFeed.js +301 -0
  114. package/dist/sync/workspacePullFeed.test.d.ts +1 -0
  115. package/dist/sync/workspacePullFeed.test.js +166 -0
  116. package/dist/sync/workspaceSyncModel.d.ts +4 -1
  117. package/dist/sync/workspaceSyncModel.js +9 -2
  118. package/dist/sync/workspaceSyncModel.test.js +29 -0
  119. package/dist/test/setup.js +1 -1
  120. package/dist/types.d.ts +1 -0
  121. package/dist/ui/assets/{AgentsModule-Bdq3T1Ts.js → AgentsModule-JG5jc3he.js} +1 -1
  122. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-jKUVo-PJ.js → AnnotatedAttachmentWorkspace-Dvi02Y7q.js} +1 -1
  123. package/dist/ui/assets/{DocumentWorkspace-DuQa-uIC.js → DocumentWorkspace-iys3zfca.js} +2 -2
  124. package/dist/ui/assets/{InitiativesModule-C8Pi2VTk.js → InitiativesModule-DJvLJI3A.js} +1 -1
  125. package/dist/ui/assets/PlansPage-BMPlpFpw.js +1 -0
  126. package/dist/ui/assets/TaskSettings-Bqd4cCzW.js +8 -0
  127. package/dist/ui/assets/{TaskSettings-BwB9NtmJ.css → TaskSettings-CnIBL_Eb.css} +1 -1
  128. package/dist/ui/assets/{WorkflowsModule-b6TLuHwJ.js → WorkflowsModule-BguHeQaV.js} +1 -1
  129. package/dist/ui/assets/index-MXeWoebC.css +1 -0
  130. package/dist/ui/assets/index-YJ4k5QNa.js +6 -0
  131. package/dist/ui/assets/{vendor-icons-QZyhEwgT.js → vendor-icons-C8EED3Oh.js} +1 -1
  132. package/dist/ui/index.html +3 -3
  133. package/dist/utils/billingStatusCache.d.ts +21 -0
  134. package/dist/utils/billingStatusCache.js +70 -0
  135. package/dist/utils/taskActivity.js +17 -4
  136. package/dist/utils/taskActivity.test.js +27 -0
  137. package/dist/utils/taskNormalization.js +10 -2
  138. package/dist/utils/taskReferences.d.ts +11 -1
  139. package/dist/utils/taskReferences.js +33 -1
  140. package/package.json +2 -1
  141. package/scripts/qa-open-lib.mjs +175 -0
  142. package/scripts/qa-open-lib.mjs.d.ts +49 -0
  143. package/scripts/qa-open.mjs +352 -0
  144. package/dist/ui/assets/PlansPage-B6BDECSi.js +0 -1
  145. package/dist/ui/assets/TaskSettings-DUJgRTPU.js +0 -8
  146. package/dist/ui/assets/index-BiiF1cLQ.css +0 -1
  147. package/dist/ui/assets/index-xBWLPOEb.js +0 -6
@@ -0,0 +1,8 @@
1
+ import{r as l,j as e,R as Me}from"./vendor-react-CKJs5o3c.js";import{p as en,t as s,T as js,P as Ee,A as ks,I as ae,r as X,D as sn,a as ea,b as tn,l as da,c as an,d as sa}from"./index-YJ4k5QNa.js";import{T as ze,m as Xe,X as fs,g as pa,f as ua,I as lt,a0 as Ye,o as nn,h as we,r as ma,a1 as ta,k as fe,d as ln,a2 as aa,a3 as na,a4 as rt,L as ha,a5 as on,b as me,i as he,a6 as rn,a7 as cn,q as dn,a8 as ct,a as bs,a9 as pn,Z as ys,B as ia,c as ot,p as un,aa as mn,ab as hn,ac as xn,ad as xa,ae as gn,af as bn,ag as yn,ah as vn}from"./vendor-icons-C8EED3Oh.js";import"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";import"./vendor-router-BbWMxlnO.js";const fn={aiProfileToken:"X-Taskforce-AI-Profile-Token",aiProfileName:"X-Taskforce-AI-Name",aiProfileIcon:"X-Taskforce-AI-Icon",aiProfileColor:"X-Taskforce-AI-Color",aiProfileDescription:"X-Taskforce-AI-Description",aiProfileRole:"X-Taskforce-AI-Role",aiProfileProvider:"X-Taskforce-AI-Provider",aiProfileModel:"X-Taskforce-AI-Model",aiProfileSurfaceType:"X-Taskforce-AI-Surface-Type"};function ve(i){return String(i||"").trim()||null}function jn(i){return i==null?null:en(i)}function kn(i){return{aiProfileToken:ve(i.aiProfileToken),aiProfileName:ve(i.aiProfileName),aiProfileIcon:ve(i.aiProfileIcon),aiProfileColor:ve(i.aiProfileColor),aiProfileDescription:ve(i.aiProfileDescription),aiProfileRole:ve(i.aiProfileRole),aiProfileProvider:ve(i.aiProfileProvider),aiProfileModel:ve(i.aiProfileModel),aiProfileSurfaceType:jn(i.aiProfileSurfaceType)}}function Nn(i){const r=kn(i),g={};for(const[v,w]of Object.entries(fn)){const T=r[v];T&&(g[w]=T)}return g}const la=[{id:"cursor",label:"Cursor"},{id:"cline",label:"Cline"},{id:"vscode",label:"VS Code / Copilot"},{id:"windsurf",label:"Windsurf"},{id:"antigravity",label:"Antigravity"},{id:"openclaw",label:"OpenClaw"},{id:"codex",label:"Codex"},{id:"claude-code",label:"Claude Code CLI"},{id:"gemini-cli",label:"Gemini CLI"}];function dt(i,r){return String(i||"").toLowerCase().replace(/[^a-zA-Z0-9_-]+/g,"-").replace(/-+/g,"-").replace(/^[-_]+|[-_]+$/g,"")||r.toLowerCase()}function Cn(i,r){const v=dt(i||r||"workspace","workspace").slice(0,25)||"workspace";return dt(`taskforce-${v}`,"taskforce-workspace")}function wn(i,r){return r}function Tn(i){return{Authorization:`Bearer ${i.tokenValue}`,...Nn(i)}}function Sn(i){return`${i} Keep the generated AI bootstrap headers intact so Taskforce can bind and restore the same AI profile automatically.`}function ue(i,r){return Sn(`${i} Use the generated config exactly as shown.`)}function $n(i){const{clientId:r,endpoint:g,tokenValue:v,serverId:w}=i,T=Tn(i);T.Authorization;const S=Object.entries(T).filter(([B])=>B!=="Authorization").map(([B,A])=>` --header "${B}: ${A}"`).join("");switch(r){case"cursor":return{clientId:r,kind:"json",rootKey:"mcpServers",serverConfig:{url:g,headers:T},instructionLabel:"Cursor Configuration Instructions",instructionText:ue("Open Cursor settings, find MCP servers, and paste this config.")};case"cline":return{clientId:r,kind:"json",rootKey:"mcpServers",serverConfig:{url:g,type:"streamableHttp",headers:T},instructionLabel:"Cline Configuration Instructions",instructionText:ue("Open Cline MCP Servers, add a remote server, or paste this into the Cline MCP config with Streamable HTTP selected.")};case"vscode":return{clientId:r,kind:"json",rootKey:"servers",serverConfig:{type:"http",url:g,headers:T},instructionLabel:"VS Code Configuration Instructions",instructionText:ue("Open .vscode/mcp.json or MCP: Open User Configuration and add this server under the servers object.")};case"windsurf":return{clientId:r,kind:"json",rootKey:"mcpServers",serverConfig:{serverUrl:g,headers:T},instructionLabel:"Windsurf Configuration Instructions",instructionText:ue("Open Windsurf MCP settings, add a server, and paste this config.")};case"antigravity":return{clientId:r,kind:"json",rootKey:"mcpServers",serverConfig:{serverUrl:g,headers:T},instructionLabel:"Antigravity Configuration Instructions",instructionText:ue("Open Antigravity MCP settings, view the raw config, and paste this Antigravity-specific configuration.")};case"openclaw":return{clientId:r,kind:"json",rootKey:"servers",wrapperKeys:["mcp"],serverConfig:{transport:"streamable-http",url:g,headers:T},instructionLabel:"OpenClaw Configuration Instructions",instructionText:ue("Open ~/.openclaw/openclaw.json and add this server under mcp.servers.")};case"codex":return{clientId:r,kind:"text",renderedText:[`[mcp_servers.${w}]`,`url = "${g}"`,`http_headers = { ${Object.entries(T).map(([B,A])=>`${B} = "${A}"`).join(", ")} }`].join(`
2
+ `),instructionLabel:"Codex Configuration Instructions",instructionText:ue("Open ~/.codex/config.toml and add this Codex MCP entry.")};case"claude-code":return{clientId:r,kind:"text",renderedText:`claude mcp add --transport http ${w} ${g} --header "Authorization: Bearer ${v}"${S}`,instructionLabel:"Claude Code Configuration Instructions",instructionText:ue("Run this Claude Code command in your terminal to add the remote Taskforce MCP server.")};case"gemini-cli":return{clientId:r,kind:"text",renderedText:`gemini mcp add ${w} ${g} --transport http --header "Authorization: Bearer ${v}"${S}`,instructionLabel:"Gemini CLI Configuration Instructions",instructionText:ue("Run this Gemini CLI command in your terminal to add the remote Taskforce MCP server. Add --scope user if you want it available across all projects.")};case"claude-desktop":return{clientId:r,kind:"text",renderedText:wn(r,g),instructionLabel:"Claude Desktop Configuration Instructions",instructionText:"Open Claude Desktop Settings > Connectors, paste this MCP server URL, and complete the Taskforce OAuth flow to authorize one workspace."};case"chatgpt-desktop":return{clientId:r,kind:"text",renderedText:g,instructionLabel:"ChatGPT Desktop Configuration Instructions",instructionText:"Open ChatGPT Apps & Connectors / developer mode, paste this MCP server URL, and complete the Taskforce OAuth authorize flow when ChatGPT opens it."};default:{const B=r;throw new Error(`Unsupported MCP client: ${B}`)}}}const _n="_categoryManagerContainer_1ibti_1",In="_pathInputGroupStretch_1ibti_9",Ln="_emptyStateItalic_1ibti_13",Bn="_emptyStateBox_1ibti_28",An="_emptyStateBare_1ibti_44",Pn="_emptyStateIcon_1ibti_49",Dn="_taxonomyGrid_1ibti_55",Mn="_checkboxRow_1ibti_61",En="_checkboxLabel_1ibti_67",zn="_checkboxSmall_1ibti_75",Rn="_flexGap8_1ibti_80",Gn="_optionOrderButtons_1ibti_85",Fn="_addTaxonomyBtnSmall_1ibti_92",E={categoryManagerContainer:_n,pathInputGroupStretch:In,emptyStateItalic:Ln,emptyStateBox:Bn,emptyStateBare:An,emptyStateIcon:Pn,taxonomyGrid:Dn,checkboxRow:Mn,checkboxLabel:En,checkboxSmall:zn,flexGap8:Rn,optionOrderButtons:Gn,addTaxonomyBtnSmall:Fn},On="_taxonomyDrillDown_1oekr_1",Hn="_drillDownList_1oekr_7",Wn="_librarySection_1oekr_13",Un="_libraryLauncher_1oekr_18",Vn="_libraryLauncherInfo_1oekr_40",Kn="_libraryLauncherIcon_1oekr_47",qn="_libraryLauncherText_1oekr_60",Jn="_libraryLauncherLabel_1oekr_67",Xn="_libraryLauncherSubtext_1oekr_73",Yn="_libraryLauncherMeta_1oekr_79",Zn="_drillDownSection_1oekr_89",Qn="_drillDownSectionHeader_1oekr_95",ei="_drillDownSectionTitle_1oekr_102",si="_drillDownItem_1oekr_111",ti="_drillDownItemAction_1oekr_126",ai="_drillDownItemDimmed_1oekr_145",ni="_drillDownItemInfo_1oekr_153",ii="_drillDownItemText_1oekr_159",li="_drillDownItemLabel_1oekr_165",oi="_drillDownItemSubtext_1oekr_170",ri="_systemIcon_1oekr_175",ci="_chevron_1oekr_179",di="_orderButtons_1oekr_184",pi="_createOverlay_1oekr_195",ui="_createDialog_1oekr_209",mi="_createDialogTitle_1oekr_218",hi="_inputGroup_1oekr_224",xi="_dialogActions_1oekr_228",gi="_createSubmit_1oekr_234",bi="_createCancel_1oekr_238",yi="_taxonomyDetailView_1oekr_242",vi="_detailHeader_1oekr_249",fi="_taxonomyBreadcrumbs_1oekr_257",ji="_breadcrumbPrev_1oekr_263",ki="_breadcrumbIcon_1oekr_284",Ni="_breadcrumbDivider_1oekr_288",Ci="_breadcrumbActive_1oekr_293",wi="_detailContent_1oekr_301",b={taxonomyDrillDown:On,drillDownList:Hn,librarySection:Wn,libraryLauncher:Un,libraryLauncherInfo:Vn,libraryLauncherIcon:Kn,libraryLauncherText:qn,libraryLauncherLabel:Jn,libraryLauncherSubtext:Xn,libraryLauncherMeta:Yn,drillDownSection:Zn,drillDownSectionHeader:Qn,drillDownSectionTitle:ei,drillDownItem:si,drillDownItemAction:ti,drillDownItemDimmed:ai,drillDownItemInfo:ni,drillDownItemText:ii,drillDownItemLabel:li,drillDownItemSubtext:oi,systemIcon:ri,chevron:ci,orderButtons:di,createOverlay:pi,createDialog:ui,createDialogTitle:mi,inputGroup:hi,dialogActions:xi,createSubmit:gi,createCancel:bi,taxonomyDetailView:yi,detailHeader:vi,taxonomyBreadcrumbs:fi,breadcrumbPrev:ji,breadcrumbIcon:ki,breadcrumbDivider:Ni,breadcrumbActive:Ci,detailContent:wi};function Ti(i){const r=[{id:"categories",label:i.displayLabels?.category||"Categories",kind:"system",summary:`${i.categories.length} configured`},{id:"types",label:i.displayLabels?.type||"Task Types",kind:"system",summary:`${i.types.length} active`},{id:"priorities",label:i.displayLabels?.priority||"Priority Levels",kind:"system",summary:`${i.priorities.length} levels`},{id:"complexities",label:"Complexity",kind:"attribute",summary:i.manualComplexityEnabled?"Enabled":"Disabled (default)"}],g=i.taxonomies.map(v=>({id:v.id,label:v.label,kind:"custom",summary:`${v.options.length} options${v.status==="retired"?" · Retired":""}`,taxonomy:v}));return[...r,...g]}function Si({taxonomy:i,onUpdateTaxonomy:r,onRemoveTaxonomy:g,onRestoreTaxonomy:v}){const[w,T]=l.useState(""),[S,B]=l.useState(!1),[A,R]=l.useState(""),[O,j]=l.useState(i.label),[_,L]=l.useState((i.aliases||[]).join(", ")),[H,P]=l.useState(""),[x,C]=l.useState(null),D=n=>{const c=n.split(",").map(I=>I.trim()).filter(Boolean);return c.length>0?Array.from(new Set(c)):void 0};l.useEffect(()=>{j(i.label),L((i.aliases||[]).join(", "));const n=i.options.find(c=>String(c.value)===String(w));C(n||null),P((n?.aliases||[]).join(", "))},[i,w]);const h=n=>{r({...i,...n})},z=()=>{if(!A.trim())return;const n=A.toLowerCase().trim().replace(/\s+/g,"-");if(i.options.some(I=>I.value===n)){alert("Option value already exists");return}const c={value:n,label:A.trim(),color:Ee[i.options.length%Ee.length],status:"active"};h({options:[...i.options,c]}),R(""),B(!1),T(n)},u=(n,c)=>{h({options:i.options.map(I=>String(I.value)===String(n)?{...I,...c}:I)})},W=n=>{u(n,{status:"retired"})},m=n=>{u(n,{status:"active"})},$=(n,c)=>{const I=i.options.findIndex(G=>String(G.value)===String(n));if(I<0)return;const y=I+c;if(y<0||y>=i.options.length)return;const F=[...i.options],[p]=F.splice(I,1);F.splice(y,0,p),h({options:F})};return e.jsxs("div",{className:E.categoryManagerContainer,children:[e.jsxs("div",{className:`${s.categoryConfigPanel} ${s.configPanel} ${s.marginBottom24}`,children:[e.jsxs("div",{className:`${s.flexBetween} ${s.marginBottom16}`,children:[e.jsx("div",{className:s.flex1,children:e.jsx("label",{className:`${s.subLabel} ${s.subLabelBlock} ${s.marginBottom8}`,children:"Taxonomy Settings"})}),!i.isSystem&&(i.status==="retired"?e.jsx("button",{type:"button",className:s.saveSettingsBtn,onClick:()=>v?.(i.id),children:"Restore Taxonomy"}):g&&e.jsxs("button",{type:"button",className:`${s.destructiveBtn} ${s.deleteBtnSmall}`,onClick:()=>{confirm(`Retire taxonomy "${i.label}"? Existing task data will be preserved as legacy values.`)&&g(i.id)},children:[e.jsx(ze,{size:14,className:s.trashIcon})," Retire Taxonomy"]}))]}),i.status==="retired"&&e.jsx("p",{className:s.settingsHint,style:{marginTop:"-4px",marginBottom:"16px"},children:"This taxonomy is retired. Existing tasks keep their values, but it is hidden from normal new-task entry unless a task already uses it."}),e.jsxs("div",{className:E.taxonomyGrid,children:[e.jsxs("div",{className:s.settingGroup,style:{margin:0},children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Display Label"}),e.jsx("input",{className:s.input,value:O,onChange:n=>j(n.target.value),onBlur:()=>h({label:O}),disabled:i.isSystem,placeholder:"e.g. Sprint, Phase..."})]}),e.jsxs("div",{className:s.settingGroup,style:{margin:0},children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Description"}),e.jsx("textarea",{className:s.textarea,value:i.description||"",onChange:n=>h({description:n.target.value}),placeholder:"Optional guidance for when and how to use this taxonomy...",rows:3,style:{minHeight:"88px"}})]}),e.jsxs("div",{className:s.settingGroup,style:{margin:0},children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Aliases"}),e.jsx("input",{className:s.input,value:_,onChange:n=>L(n.target.value),onBlur:()=>h({aliases:D(_)}),placeholder:"Optional aliases, comma-separated"})]}),e.jsxs("div",{className:s.settingGroup,style:{margin:0},children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Widget Type"}),e.jsxs("select",{className:s.select,value:i.widgetType,onChange:n=>{const c=n.target.value;h({widgetType:c,multiSelect:c==="level"?!1:i.multiSelect})},children:[e.jsx("option",{value:"select",children:"Dropdown (Select Box)"}),e.jsx("option",{value:"level",children:"Level Selector (Segmented)"})]})]})]}),e.jsxs("div",{className:E.checkboxRow,children:[e.jsxs("label",{className:E.checkboxLabel,children:[e.jsx("input",{type:"checkbox",checked:i.isRequired,onChange:n=>h({isRequired:n.target.checked}),className:E.checkboxSmall}),"Mark as Required"]}),e.jsxs("label",{className:`${E.checkboxLabel} ${i.widgetType==="level"?s.opacity50:""}`,children:[e.jsx("input",{type:"checkbox",checked:i.multiSelect,onChange:n=>h({multiSelect:n.target.checked}),disabled:i.widgetType==="level",className:E.checkboxSmall}),"Allow Multi-select"]})]}),e.jsxs("div",{className:E.checkboxRow,children:[e.jsxs("label",{className:E.checkboxLabel,children:[e.jsx("input",{type:"checkbox",checked:i.formEnabled!==!1,onChange:n=>h({formEnabled:n.target.checked}),className:E.checkboxSmall}),"Show in Task Form"]}),e.jsxs("label",{className:E.checkboxLabel,children:[e.jsx("input",{type:"checkbox",checked:i.filterEnabled!==!1,onChange:n=>h({filterEnabled:n.target.checked}),className:E.checkboxSmall}),"Show in Filters"]}),e.jsxs("label",{className:E.checkboxLabel,children:[e.jsx("input",{type:"checkbox",checked:i.sortEnabled===!0,onChange:n=>h({sortEnabled:n.target.checked}),className:E.checkboxSmall}),"Show in Sorts"]})]})]}),e.jsx("div",{className:`${s.configDivider} ${s.configDividerMargin24}`}),e.jsxs("div",{className:`${s.configPanel} ${s.flex1} ${s.flexCol}`,children:[e.jsxs("div",{className:`${s.headerFlex}`,style:{marginBottom:x&&!S||S?"16px":"0"},children:[e.jsx("div",{style:{flex:1},children:e.jsx(js,{value:w,options:[{value:"",label:"Select an option to configure...",icon:"HelpCircle",color:"var(--text-secondary)"},...i.options.map(n=>({value:n.value,label:n.status==="retired"?`${n.label} (Retired)`:n.label,icon:n.icon,color:n.color}))],onChange:n=>{T(n),B(!1)},disabled:S})}),S?e.jsx("button",{type:"button",onClick:()=>B(!1),title:"Cancel",className:`${s.browseBtn} ${s.cancelBtnRed}`,children:e.jsx(fs,{size:18})}):e.jsx("button",{type:"button",className:s.browseBtn,onClick:()=>B(!0),title:"Add Option",children:e.jsx(Xe,{size:18})})]}),S&&e.jsx("div",{className:`${s.configItem} ${s.marginBottom16}`,children:e.jsxs("div",{className:E.flexGap8,children:[e.jsx("input",{type:"text",className:s.input,placeholder:"New option label...",value:A,onChange:n=>R(n.target.value),onKeyDown:n=>{n.key==="Enter"&&z()},autoFocus:!0}),e.jsx("button",{type:"button",className:s.saveSettingsBtn,onClick:z,disabled:!A.trim(),children:"Add Option"})]})}),x&&!S&&e.jsxs("div",{className:s.flex1,children:[e.jsx("div",{className:`${s.configDivider} ${s.marginBottom20}`}),e.jsxs("div",{className:`${s.flexBetweenCenter} ${s.marginBottom20}`,children:[e.jsxs("div",{className:`${s.flexColGap4} ${s.flex1}`,children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Option Label"}),e.jsxs("div",{className:s.gridConfig,children:[e.jsx("input",{className:s.input,value:x.label,onChange:n=>u(x.value,{label:n.target.value}),placeholder:"Option Label"}),x.status==="retired"?e.jsx("button",{type:"button",className:s.saveSettingsBtn,onClick:()=>m(x.value),title:"Restore Option",children:"Restore"}):e.jsxs("button",{type:"button",className:`${s.destructiveBtn} ${s.deleteBtnMedium}`,onClick:()=>W(x.value),title:"Retire Option",children:[e.jsx(ze,{size:14,className:s.trashIcon})," Retire"]})]})]}),e.jsxs("div",{className:E.optionOrderButtons,children:[e.jsx("button",{type:"button",className:s.browseBtn,title:"Move option up",onClick:()=>$(x.value,-1),disabled:i.options[0]?.value===x.value,children:e.jsx(pa,{size:16})}),e.jsx("button",{type:"button",className:s.browseBtn,title:"Move option down",onClick:()=>$(x.value,1),disabled:i.options[i.options.length-1]?.value===x.value,children:e.jsx(ua,{size:16})})]})]}),e.jsx("p",{className:s.settingsHint,style:{marginBottom:"20px"},children:"Retired options stay visible for existing tasks and filters, but they should not be used for new work."}),e.jsxs("div",{className:s.settingGroup,style:{marginBottom:"20px"},children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Aliases"}),e.jsx("input",{className:s.input,value:H,onChange:n=>P(n.target.value),onBlur:()=>u(x.value,{aliases:D(H)}),placeholder:"Optional aliases, comma-separated"})]}),e.jsx("div",{className:`${s.configDivider} ${s.configDividerMargin}`}),e.jsxs("div",{className:s.configSection,children:[e.jsx("label",{className:`${s.label} ${s.inputLabelBlock}`,children:"Visual Style"}),e.jsxs("div",{className:s.categorySubConfig,children:[e.jsx("div",{className:s.colorPickerGrid,children:Ee.map(n=>{const c=X(n)||"#000000",I=x.color===n,y=x.icon&&lt[x.icon]?lt[x.icon]:Ye;return e.jsx("button",{type:"button",className:`${s.colorSwatch} ${I?s.colorSwatchActive:""}`,style:{borderColor:I?c:void 0,"--swatch-color":c,"--swatch-border-color":`${c}80`},onClick:()=>u(x.value,{color:n}),title:n,children:e.jsx(y,{size:14,style:{color:c}})},n)})}),e.jsx("div",{className:s.iconGrid,children:ks.map(n=>{const c=lt[n]||ae[n]||Ye;return e.jsx("button",{type:"button",className:`${s.iconPickerBtn} ${x.icon===n?s.iconPickerBtnActive:""}`,style:x.icon===n?{borderColor:X(x.color),color:X(x.color),background:`${X(x.color)}15`}:{},onClick:()=>u(x.value,{icon:n}),title:n,children:e.jsx(c,{size:16})},n)})})]})]})]}),!x&&!S&&e.jsxs("div",{className:`${E.emptyStateBox} ${E.emptyStateBare}`,children:[e.jsx(nn,{size:24,className:E.emptyStateIcon}),"Select an option above to configure its appearance"]})]})]})}function $i(i){const{displayLabel:r,categories:g,pathValidation:v,onUpdateDisplayLabel:w,onUpdateCategory:T,onRemoveCategory:S,onSaveCategory:B,onAddPath:A,onRemovePath:R,onUpdateCategoryIcon:O,onUpdateCategoryColor:j,onBrowseFolders:_}=i,[L,H]=l.useState(""),[P,x]=l.useState(!1),[C,D]=l.useState(""),[h,z]=l.useState(""),[u,W]=l.useState(r||""),[m,$]=l.useState("");l.useEffect(()=>{W(r||"")},[r]),l.useEffect(()=>{const p=g.find(G=>G.value===L);p&&z(p.label)},[L,g]);const n=()=>{if(!C.trim())return;B(C);const p=C.trim().toLowerCase().replace(/\s+/g,"-");D(""),x(!1),setTimeout(()=>H(p),100)},c=p=>{h&&h!==p.label&&T({...p,label:h},p.label)},I=p=>{const G=[];if(p.path&&G.push(p.path),p.paths&&p.paths.length>0)for(const K of p.paths)G.includes(K)||G.push(K);return G},y=g.find(p=>p.value===L),F=y?.value===sn;return e.jsxs("div",{className:`${s.configPanel} ${s.flex1}`,children:[e.jsxs("div",{className:`${s.headerFlex}`,style:{marginBottom:y&&!P||P?"20px":"0"},children:[e.jsxs("div",{style:{flex:1},children:[e.jsx("label",{id:"category-config-label",className:s.label,style:{display:"none"},children:"Select Category"}),e.jsx(js,{value:L,options:[{value:"",label:"Select a category to configure...",icon:"HelpCircle",color:"var(--text-secondary)"},...g.map(p=>({value:p.value,label:`${p.label}${p.disabled?" (Legacy)":""}`,icon:p.icon,color:p.color}))],onChange:p=>{H(String(p)),x(!1)},disabled:P,ariaLabelledBy:"category-config-label"})]}),P?e.jsx("button",{type:"button",className:`${s.browseBtn} ${s.cancelBtnRed}`,onClick:()=>x(!1),title:"Cancel creation",children:e.jsx(fs,{size:18})}):e.jsx("button",{type:"button",className:s.browseBtn,onClick:()=>x(!0),title:"Create new category",children:e.jsx(Xe,{size:18})})]}),P&&e.jsxs("div",{className:`${s.configItem} ${s.marginBottom16}`,children:[e.jsx("div",{className:`${s.labelRow} ${s.marginBottom8}`,children:e.jsx("label",{className:s.settingsLabel,children:"New Category Name"})}),e.jsxs("div",{style:{display:"flex",gap:"8px"},children:[e.jsx("input",{type:"text",className:s.input,placeholder:"e.g. Backend, Frontend, API...",value:C,onChange:p=>D(p.target.value),onKeyDown:p=>{p.key==="Enter"&&n()},autoFocus:!0}),e.jsx("button",{type:"button",className:s.saveSettingsBtn,onClick:n,disabled:!C.trim(),children:"Create"})]})]}),y&&!P&&e.jsxs("div",{className:s.flex1,style:{overflowY:"auto",marginRight:"-8px",paddingRight:"8px"},children:[e.jsx("div",{className:`${s.configDivider} ${s.marginBottom20}`}),e.jsxs("div",{className:`${s.configSection} ${s.marginBottom20}`,children:[e.jsxs("div",{className:s.flexBetween,children:[e.jsx("label",{className:`${s.subLabel} ${s.subLabelBlock}`,children:"General"}),!F&&e.jsxs("button",{type:"button",onClick:()=>{confirm(`Retire category "${y.label}"? Existing tasks will be reassigned to ${ea}.`)&&(S(y.value),H(""))},title:"Retire Category",className:`${s.destructiveBtn} ${s.deleteBtnSmall}`,children:[e.jsx(ze,{size:14,className:s.trashIcon})," Retire"]})]}),F&&e.jsxs("p",{className:s.settingsHint,style:{marginBottom:"12px"},children:[ea," is the protected fallback category and cannot be retired."]}),e.jsxs("div",{className:s.gridConfig,children:[e.jsxs("div",{className:s.flexColGap4,children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Display Label"}),e.jsx("input",{className:s.input,value:u,onChange:p=>W(p.target.value),onBlur:()=>w?.(u.trim())})]}),e.jsxs("div",{className:s.flexColGap4,children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Label"}),e.jsx("input",{className:s.input,value:h,onChange:p=>z(p.target.value),onBlur:()=>c(y),onKeyDown:p=>{p.key==="Enter"&&(c(y),p.target.blur())}})]}),e.jsxs("div",{className:s.flexColGap4Center,children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Available for New Tasks"}),e.jsx("input",{type:"checkbox",checked:!y.disabled,onChange:()=>T({...y,disabled:!y.disabled}),className:s.checkboxInput})]})]}),e.jsx("p",{className:s.settingsHint,style:{marginTop:"12px"},children:"Turn this off to keep the category on existing tasks while removing it from new task selection by default."})]}),e.jsx("div",{className:`${s.configDivider} ${s.configDividerMargin}`}),e.jsxs("div",{className:`${s.configSection} ${s.marginBottom20}`,children:[e.jsx("label",{className:s.subLabel,style:{fontSize:"14px",fontWeight:600,display:"block",marginBottom:"8px"},children:"Context Paths"}),e.jsx("p",{className:s.settingsHint,style:{marginBottom:"12px"},children:"Files in these paths will be included as context for tasks in this category."}),I(y).length>0&&e.jsx("div",{className:`${s.pathList} ${s.pathListMargin}`,children:I(y).map((p,G)=>{const K=v[p],ne=K?.exists,Re=K?.isFile;return e.jsxs("div",{className:`${s.pathChip} ${ne===!1?s.pathInvalid:ne?s.pathValid:""}`,children:[ne===void 0?e.jsx(we,{size:12,className:s.spinner}):ne?Re?e.jsx(ma,{size:12,className:s.pathValidIcon}):e.jsx(ta,{size:12,className:s.pathValidIcon}):e.jsx(fe,{size:12,className:s.pathInvalidIcon}),e.jsx("span",{className:s.pathText,title:p,children:p}),e.jsx("button",{type:"button",className:s.removePathBtn,onClick:()=>R(y.value,p),title:"Remove path",children:e.jsx(fs,{size:10})})]},G)})}),e.jsxs("div",{className:`${s.pathInputGroup} ${E.pathInputGroupStretch}`,children:[e.jsx("input",{type:"text",className:s.input,value:m,onChange:p=>$(p.target.value),onKeyDown:p=>{p.key==="Enter"&&(p.preventDefault(),m.trim()&&(A(y.value,m.trim()),$("")))},placeholder:"Add path (e.g. frontend/src/...)"}),e.jsx("button",{type:"button",className:s.browseBtn,onClick:()=>{m.trim()&&(A(y.value,m.trim()),$(""))},disabled:!m.trim(),title:"Add path",children:e.jsx(Xe,{size:18})}),e.jsx("button",{type:"button",className:s.browseBtn,onClick:()=>_(y.value),title:"Browse folders",children:e.jsx(ta,{size:16})})]})]}),e.jsx("div",{className:`${s.configDivider} ${s.configDividerMargin}`}),e.jsxs("div",{className:s.configSection,children:[e.jsx("label",{className:`${s.subLabel} ${s.subLabelBlock} ${s.subLabelBlock12}`,children:"Visual Style"}),e.jsxs("div",{className:s.categorySubConfig,children:[e.jsx("div",{className:s.colorPickerGrid,children:Ee.map(p=>{const G=X(p)||"#000000",K=y.color===p,ne=y.icon&&ae[y.icon]?ae[y.icon]:ln;return e.jsx("button",{type:"button",className:`${s.colorSwatch} ${K?s.colorSwatchActive:""}`,style:{borderColor:K?G:void 0,"--swatch-color":G,"--swatch-border-color":`${G}80`},onClick:()=>j(y.value,p),title:p,children:e.jsx(ne,{size:14,style:{color:G}})},p)})}),e.jsx("div",{className:s.iconGrid,children:ks.map(p=>{const G=ae[p];return e.jsx("button",{type:"button",className:`${s.iconPickerBtn} ${y.icon===p?s.iconPickerBtnActive:""}`,style:y.icon===p?{borderColor:X(y.color),color:X(y.color),background:`${X(y.color)}15`}:{},onClick:()=>O(y.value,p),title:p,children:e.jsx(G,{size:16})},p)})})]})]})]}),!y&&!P&&e.jsx("div",{className:`${E.emptyStateItalic} ${E.emptyStateBare}`,children:"Select a category above to configure settings"})]})}function _i(i){const{types:r,onSaveType:g,onRemoveType:v,onUpdateType:w,displayLabel:T,onUpdateDisplayLabel:S}=i,[B,A]=l.useState(""),[R,O]=l.useState(!1),[j,_]=l.useState(""),[L,H]=l.useState(""),[P,x]=l.useState(T||"");l.useEffect(()=>{const u=r.find(W=>W.value===B);u&&H(u.label)},[B,r]),l.useEffect(()=>{x(T||"")},[T]);const C=r.find(u=>u.value===B),D=C?.value===tn,h=C?.status==="retired",z=()=>{if(!j.trim())return;g(j);const u=j.trim().toLowerCase().replace(/\s+/g,"-");_(""),O(!1),setTimeout(()=>A(u),100)};return e.jsxs("div",{className:`${s.configPanel} ${s.flex1}`,children:[e.jsxs("div",{className:`${s.headerFlex}`,style:{marginBottom:C&&!R||R?"20px":"0"},children:[e.jsxs("div",{style:{flex:1},children:[e.jsx("label",{id:"type-config-label",className:s.label,style:{display:"none"},children:"Select Type"}),e.jsx(js,{value:B,options:[{value:"",label:"Select a type to configure...",icon:"HelpCircle",color:"var(--text-secondary)"},...r.map(u=>({value:u.value,label:u.status==="retired"?`${u.label} (Retired)`:u.label,icon:u.icon||"Box",color:u.color||"violet-500"}))],onChange:u=>{A(String(u)),O(!1)},disabled:R,ariaLabelledBy:"type-config-label"})]}),R?e.jsx("button",{type:"button",className:`${s.browseBtn} ${s.cancelBtnRed}`,onClick:()=>O(!1),title:"Cancel creation",children:e.jsx(fs,{size:18})}):e.jsx("button",{type:"button",className:s.browseBtn,onClick:()=>O(!0),title:"Create new type",children:e.jsx(Xe,{size:18})})]}),R&&e.jsxs("div",{className:`${s.configItem} ${s.marginBottom16}`,children:[e.jsx("div",{className:`${s.labelRow} ${s.marginBottom8}`,children:e.jsx("label",{className:s.settingsLabel,children:"New Type Label"})}),e.jsxs("div",{style:{display:"flex",gap:"8px"},children:[e.jsx("input",{type:"text",className:s.input,placeholder:"e.g. Bug, Feature, Chore...",value:j,onChange:u=>_(u.target.value),onKeyDown:u=>{u.key==="Enter"&&z()},autoFocus:!0}),e.jsx("button",{type:"button",className:s.saveSettingsBtn,onClick:z,disabled:!j.trim(),children:"Create"})]})]}),C&&!R&&e.jsxs("div",{className:s.flex1,children:[e.jsx("div",{className:`${s.configDivider} ${s.marginBottom20}`}),e.jsx("div",{className:s.flexBetweenCenter,children:e.jsxs("div",{className:`${s.flexColGap4} ${s.flex1}`,children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Display Label"}),e.jsx("input",{className:s.input,value:P,onChange:u=>x(u.target.value),onBlur:()=>S?.(P.trim())}),e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Label"}),e.jsxs("div",{className:s.gridConfig,children:[e.jsx("input",{className:s.input,value:L,onChange:u=>H(u.target.value),onBlur:()=>w(C.value,{label:L}),onKeyDown:u=>{u.key==="Enter"&&u.currentTarget.blur()}}),!D&&e.jsxs("button",{type:"button",onClick:()=>{if(h){w(C.value,{status:"active"});return}confirm(`Retire type "${C.label}"? Existing tasks using it will keep it as a legacy type until reassigned.`)&&v(C.value)},title:h?"Restore Type":"Retire Type",className:`${s.destructiveBtn} ${s.deleteBtnMedium}`,children:[e.jsx(ze,{size:14,className:s.trashIcon})," ",h?"Restore":"Retire"]})]})]})}),e.jsx("p",{className:`${s.settingsHint} ${s.marginTop12}`,children:D?"Task is the protected fallback type and cannot be retired.":h?"Retired types stay available as legacy values on existing tasks until you reassign them.":"Retiring a type removes it from new task selection while preserving it as a legacy value on tasks that already use it."}),e.jsx("div",{className:`${s.configDivider} ${s.configDividerMargin}`}),e.jsxs("div",{className:s.configSection,children:[e.jsx("label",{className:`${s.subLabel} ${s.subLabelBlock} ${s.subLabelBlock12}`,children:"Visual Style"}),e.jsxs("div",{className:s.categorySubConfig,children:[e.jsx("div",{className:s.colorPickerGrid,children:Ee.map(u=>{const W=X(u)||"#000000",m=C.color===u,$=C.icon&&ae[C.icon]?ae[C.icon]:Ye;return e.jsx("button",{type:"button",className:`${s.colorSwatch} ${m?s.colorSwatchActive:""}`,style:{borderColor:m?W:void 0,"--swatch-color":W,"--swatch-border-color":`${W}80`},onClick:()=>w(C.value,{color:u}),title:u,children:e.jsx($,{size:14,style:{color:W}})},u)})}),e.jsx("div",{className:s.iconGrid,children:ks.map(u=>{const W=ae[u];return e.jsx("button",{type:"button",className:`${s.iconPickerBtn} ${C.icon===u?s.iconPickerBtnActive:""}`,style:C.icon===u?{borderColor:X(C.color),color:X(C.color),background:`${X(C.color)}15`}:{},onClick:()=>w(C.value,{icon:u}),title:u,children:e.jsx(W,{size:16})},u)})})]})]})]}),!C&&!R&&e.jsx("div",{className:`${E.emptyStateItalic} ${E.emptyStateBare}`,children:"Select a type above to manage"})]})}function Ii({priorities:i,onUpdatePriorities:r,displayLabel:g,onUpdateDisplayLabel:v}){const[w,T]=l.useState(""),[S,B]=l.useState(null),[A,R]=l.useState(g||"");l.useEffect(()=>{const j=i.find(_=>String(_.value)===String(w))||null;B(j)},[i,w]),l.useEffect(()=>{R(g||"")},[g]);const O=(j,_)=>{r(i.map(L=>String(L.value)===String(j)?{...L,..._}:L))};return e.jsxs("div",{className:`${s.configPanel} ${s.flex1}`,children:[e.jsxs("div",{className:s.marginBottom20,children:[e.jsx("label",{id:"priority-config-label",className:s.label,style:{display:"none"},children:"Select Priority"}),e.jsx(js,{value:w,options:[{value:"",label:"Select a priority level to configure...",icon:"HelpCircle",color:"var(--text-secondary)"},...i.map(j=>({value:j.value,label:j.label,icon:j.icon||"Gauge",color:j.color||"blue-500"}))],onChange:j=>T(j),ariaLabelledBy:"priority-config-label"})]}),S?e.jsxs("div",{className:s.flex1,style:{overflowY:"auto",marginRight:"-8px",paddingRight:"8px"},children:[e.jsx("div",{className:`${s.configDivider} ${s.marginBottom20}`}),e.jsxs("div",{className:`${s.configSection} ${s.marginBottom20}`,children:[e.jsx("label",{className:`${s.subLabel} ${s.subLabelBlock}`,children:"General"}),e.jsx("p",{className:s.settingsHint,style:{marginBottom:"12px"},children:"Priority uses a fixed ordered scale. You can rename and restyle levels, but not add, remove, or reorder them here."}),e.jsxs("div",{className:s.gridConfig,children:[e.jsxs("div",{className:s.flexColGap4,children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Display Label"}),e.jsx("input",{className:s.input,value:A,onChange:j=>R(j.target.value),onBlur:()=>v?.(A.trim())})]}),e.jsxs("div",{className:s.flexColGap4,children:[e.jsx("label",{className:`${s.label} ${s.inputLabel}`,children:"Label"}),e.jsx("input",{className:s.input,value:S.label,onChange:j=>O(S.value,{label:j.target.value})})]})]})]}),e.jsx("div",{className:`${s.configDivider} ${s.configDividerMargin}`}),e.jsxs("div",{className:s.configSection,children:[e.jsx("label",{className:`${s.subLabel} ${s.subLabelBlock} ${s.subLabelBlock12}`,children:"Visual Style"}),e.jsxs("div",{className:s.categorySubConfig,children:[e.jsx("div",{className:s.colorPickerGrid,children:Ee.map(j=>{const _=X(j)||"#000000",L=S.color===j,H=S.icon&&ae[S.icon]?ae[S.icon]:aa;return e.jsx("button",{type:"button",className:`${s.colorSwatch} ${L?s.colorSwatchActive:""}`,style:{borderColor:L?_:void 0,"--swatch-color":_,"--swatch-border-color":`${_}80`},onClick:()=>O(S.value,{color:j}),title:j,children:e.jsx(H,{size:14,style:{color:_}})},j)})}),e.jsx("div",{className:s.iconGrid,children:ks.map(j=>{const _=ae[j]||aa;return e.jsx("button",{type:"button",className:`${s.iconPickerBtn} ${S.icon===j?s.iconPickerBtnActive:""}`,style:S.icon===j?{borderColor:X(S.color),color:X(S.color),background:`${X(S.color)}15`}:{},onClick:()=>O(S.value,{icon:j}),title:j,children:e.jsx(_,{size:16})},j)})})]})]})]}):e.jsx("div",{className:`${E.emptyStateItalic} ${E.emptyStateBare}`,children:"Select a priority above to manage"})]})}function Li(i){return i.map(r=>({...r,aliases:Array.isArray(r.aliases)?[...r.aliases]:void 0}))}function Bi(i){return i.map(r=>({...r,aliases:Array.isArray(r.aliases)?[...r.aliases]:void 0,options:Li(Array.isArray(r.options)?r.options:[])}))}const Ai=[{id:"client-delivery",label:"Client Delivery",description:"Taxonomies for client-facing work, approvals, and service commitments.",domainTag:"operations",bestFor:"Agencies, consulting, and service delivery work.",taxonomies:[{id:"approval-stage",label:"Approval Stage",description:"Track where work sits in the client or internal approval pipeline.",widgetType:"select",isSystem:!1,multiSelect:!1,isRequired:!1,formEnabled:!0,filterEnabled:!0,sortEnabled:!0,status:"active",options:[{value:"draft",label:"Draft",color:"blue-200",icon:"Pencil",status:"active"},{value:"internal-review",label:"Internal Review",color:"blue-500",icon:"Users",status:"active"},{value:"client-review",label:"Client Review",color:"amber-500",icon:"MessageSquare",status:"active"},{value:"approved",label:"Approved",color:"emerald-500",icon:"CheckCircle",status:"active"}]},{id:"service-line",label:"Service Line",description:"Identify which delivery lane owns or contributes to this work.",widgetType:"select",isSystem:!1,multiSelect:!0,isRequired:!1,formEnabled:!0,filterEnabled:!0,sortEnabled:!1,status:"active",options:[{value:"strategy",label:"Strategy",color:"violet-500",icon:"Target",status:"active"},{value:"content",label:"Content",color:"sky-500",icon:"Pencil",status:"active"},{value:"delivery",label:"Delivery",color:"emerald-500",icon:"Briefcase",status:"active"},{value:"reporting",label:"Reporting",color:"amber-500",icon:"Activity",status:"active"}]}]},{id:"content-operations",label:"Content Operations",description:"Reusable taxonomies for channels, publishing readiness, and editorial planning.",domainTag:"content",bestFor:"Editorial calendars, content teams, and publishing operations.",taxonomies:[{id:"content-channel",label:"Content Channel",description:"Show where a piece of work will be published or reused.",widgetType:"select",isSystem:!1,multiSelect:!0,isRequired:!1,formEnabled:!0,filterEnabled:!0,sortEnabled:!1,status:"active",options:[{value:"blog",label:"Blog",color:"blue-500",icon:"FileText",status:"active"},{value:"email",label:"Email",color:"amber-500",icon:"Mail",status:"active"},{value:"social",label:"Social",color:"violet-500",icon:"Flag",status:"active"},{value:"webinar",label:"Webinar",color:"violet-500",icon:"Video",status:"active"}]},{id:"publish-readiness",label:"Publish Readiness",description:"Track whether a content task is ready to move into scheduling or release.",widgetType:"select",isSystem:!1,multiSelect:!1,isRequired:!0,formEnabled:!0,filterEnabled:!0,sortEnabled:!0,status:"active",options:[{value:"not-started",label:"Not Started",color:"blue-200",icon:"Circle",status:"active"},{value:"in-review",label:"In Review",color:"amber-500",icon:"Search",status:"active"},{value:"ready",label:"Ready",color:"emerald-500",icon:"Rocket",status:"active"}]},{id:"effort-band",label:"Effort Band",description:"A lightweight numeric scale for content effort without using complexity.",widgetType:"level",isSystem:!1,multiSelect:!1,isRequired:!1,formEnabled:!1,filterEnabled:!0,sortEnabled:!0,status:"active",options:[{value:1,label:"Light",color:"teal-500",icon:"Wind",status:"active"},{value:2,label:"Standard",color:"blue-500",icon:"Minus",status:"active"},{value:3,label:"Heavy",color:"orange-500",icon:"Gauge",status:"active"}]}]},{id:"product-delivery",label:"Product Delivery",description:"Useful planning taxonomies for delivery stages, stakeholders, and delivery risk.",domainTag:"product",bestFor:"Product teams, implementation work, and cross-functional delivery.",taxonomies:[{id:"delivery-stage",label:"Delivery Stage",description:"Track how work moves from intake through active delivery.",widgetType:"select",isSystem:!1,multiSelect:!1,isRequired:!0,formEnabled:!0,filterEnabled:!0,sortEnabled:!0,status:"active",options:[{value:"backlog",label:"Backlog",color:"blue-200",icon:"Inbox",status:"active"},{value:"scoping",label:"Scoping",color:"sky-500",icon:"Search",status:"active"},{value:"ready",label:"Ready",color:"blue-500",icon:"Check",status:"active"},{value:"in-flight",label:"In Flight",color:"indigo-500",icon:"Play",status:"active"},{value:"blocked",label:"Blocked",color:"amber-500",icon:"Pause",status:"active"},{value:"done",label:"Done",color:"green-500",icon:"CheckCircle",status:"active"}]},{id:"stakeholder",label:"Stakeholder",description:"Show which audience or stakeholder group is most relevant to the work.",widgetType:"select",isSystem:!1,multiSelect:!0,isRequired:!1,formEnabled:!0,filterEnabled:!0,sortEnabled:!1,status:"active",options:[{value:"internal",label:"Internal",color:"blue-500",icon:"Users",status:"active"},{value:"client",label:"Client",color:"amber-500",icon:"Briefcase",status:"active"},{value:"leadership",label:"Leadership",color:"violet-500",icon:"Flag",status:"active"},{value:"partner",label:"Partner",color:"teal-500",icon:"Globe",status:"active"}]},{id:"risk-level",label:"Risk Level",description:"A simple signal for delivery or coordination risk.",widgetType:"level",isSystem:!1,multiSelect:!1,isRequired:!1,formEnabled:!1,filterEnabled:!0,sortEnabled:!0,status:"active",options:[{value:1,label:"Low",color:"teal-500",icon:"Wind",status:"active"},{value:2,label:"Medium",color:"amber-500",icon:"Gauge",status:"active"},{value:3,label:"High",color:"red-500",icon:"TriangleAlert",status:"active"}]}]},{id:"content-production",label:"Content Production",description:"Production-oriented taxonomies for content stages, channels, and asset effort.",domainTag:"marketing",bestFor:"Marketing teams, campaigns, and multi-channel asset production.",taxonomies:[{id:"content-stage",label:"Content Stage",description:"Track where a content asset sits in the production lifecycle.",widgetType:"select",isSystem:!1,multiSelect:!1,isRequired:!0,formEnabled:!0,filterEnabled:!0,sortEnabled:!0,status:"active",options:[{value:"outline",label:"Outline",color:"blue-200",icon:"Pencil",status:"active"},{value:"draft",label:"Draft",color:"blue-500",icon:"FileText",status:"active"},{value:"review",label:"Review",color:"amber-500",icon:"Search",status:"active"},{value:"approved",label:"Approved",color:"green-500",icon:"CheckCircle",status:"active"},{value:"published",label:"Published",color:"violet-500",icon:"Rocket",status:"active"}]},{id:"distribution-channel",label:"Distribution Channel",description:"Capture where the asset will be published or promoted.",widgetType:"select",isSystem:!1,multiSelect:!0,isRequired:!1,formEnabled:!0,filterEnabled:!0,sortEnabled:!1,status:"active",options:[{value:"blog",label:"Blog",color:"blue-500",icon:"FileText",status:"active"},{value:"email",label:"Email",color:"amber-500",icon:"Mail",status:"active"},{value:"video",label:"Video",color:"violet-500",icon:"Video",status:"active"},{value:"social",label:"Social",color:"indigo-500",icon:"Flag",status:"active"},{value:"docs",label:"Docs",color:"sky-500",icon:"Book",status:"active"}]},{id:"asset-effort",label:"Asset Effort",description:"Estimate the relative production effort for a content asset.",widgetType:"level",isSystem:!1,multiSelect:!1,isRequired:!1,formEnabled:!1,filterEnabled:!0,sortEnabled:!0,status:"active",options:[{value:1,label:"Quick",color:"teal-500",icon:"Wind",status:"active"},{value:2,label:"Standard",color:"blue-500",icon:"Minus",status:"active"},{value:3,label:"Campaign",color:"orange-500",icon:"Rocket",status:"active"}]}]}];function Pi(){return Ai.map(i=>({...i,taxonomies:Bi(i.taxonomies)}))}const Di="_libraryContainer_94zm2_1",Mi="_introCard_94zm2_7",Ei="_eyebrow_94zm2_17",zi="_introTitle_94zm2_28",Ri="_introCopy_94zm2_35",Gi="_prototypeNotice_94zm2_43",Fi="_libraryGrid_94zm2_49",Oi="_packList_94zm2_56",Hi="_packCard_94zm2_62",Wi="_packCardInteractive_94zm2_73",Ui="_packCardActive_94zm2_88",Vi="_packHeader_94zm2_94",Ki="_packHeaderText_94zm2_101",qi="_packTitleRow_94zm2_108",Ji="_packTitle_94zm2_108",Xi="_packBadge_94zm2_122",Yi="_packDescription_94zm2_137",Zi="_packBestFor_94zm2_144",Qi="_packCounts_94zm2_151",el="_packTaxonomyPreview_94zm2_157",sl="_packTaxonomyChip_94zm2_163",tl="_packTaxonomyMore_94zm2_175",al="_packCountChip_94zm2_185",nl="_packActions_94zm2_198",il="_packActionHint_94zm2_204",ll="_previewPanel_94zm2_212",ol="_previewHeader_94zm2_224",rl="_previewSummaryRow_94zm2_230",cl="_previewTitle_94zm2_236",dl="_previewBestFor_94zm2_243",pl="_previewSubtext_94zm2_250",ul="_previewSection_94zm2_256",ml="_previewSectionTitle_94zm2_262",hl="_previewList_94zm2_271",xl="_previewItem_94zm2_277",gl="_previewItemLabel_94zm2_288",bl="_previewItemMeta_94zm2_298",yl="_customTaxonomyCard_94zm2_304",vl="_customTaxonomyHeader_94zm2_314",fl="_customTaxonomyDescription_94zm2_321",jl="_customTaxonomyBadges_94zm2_328",kl="_customTaxonomyBadge_94zm2_328",Nl="_applyPanel_94zm2_347",Cl="_applyTitle_94zm2_357",wl="_applyCopy_94zm2_364",Tl="_analysisPanel_94zm2_371",Sl="_analysisCopy_94zm2_381",$l="_analysisWarning_94zm2_388",_l="_checkboxList_94zm2_395",Il="_checkboxLabel_94zm2_401",Ll="_prototypeResult_94zm2_409",Bl="_prototypeError_94zm2_415",o={libraryContainer:Di,introCard:Mi,eyebrow:Ei,introTitle:zi,introCopy:Ri,prototypeNotice:Gi,libraryGrid:Fi,packList:Oi,packCard:Hi,packCardInteractive:Wi,packCardActive:Ui,packHeader:Vi,packHeaderText:Ki,packTitleRow:qi,packTitle:Ji,packBadge:Xi,packDescription:Yi,packBestFor:Zi,packCounts:Qi,packTaxonomyPreview:el,packTaxonomyChip:sl,packTaxonomyMore:tl,packCountChip:al,packActions:nl,packActionHint:il,previewPanel:ll,previewHeader:ol,previewSummaryRow:rl,previewTitle:cl,previewBestFor:dl,previewSubtext:pl,previewSection:ul,previewSectionTitle:ml,previewList:hl,previewItem:xl,previewItemLabel:gl,previewItemMeta:bl,customTaxonomyCard:yl,customTaxonomyHeader:vl,customTaxonomyDescription:fl,customTaxonomyBadges:jl,customTaxonomyBadge:kl,applyPanel:Nl,applyTitle:Cl,applyCopy:wl,analysisPanel:Tl,analysisCopy:Sl,analysisWarning:$l,checkboxList:_l,checkboxLabel:Il,prototypeResult:Ll,prototypeError:Bl};function Al(i,r="Layers"){const g=ae[i||r]||ae[r];return e.jsx(g,{size:15})}function oa(i){return{categories:i.categories.length>0,types:i.types.length>0,priorities:i.priorities.length>0}}function vs(i){const{title:r,items:g}=i;return e.jsxs("section",{className:o.previewSection,children:[e.jsx("h4",{className:o.previewSectionTitle,children:r}),e.jsx("div",{className:o.previewList,children:g.map(v=>e.jsxs("div",{className:o.previewItem,children:[e.jsxs("span",{className:o.previewItemLabel,children:[e.jsx("span",{style:{color:v.color?`var(--color-${v.color}, var(--text-secondary))`:"var(--text-secondary)"},children:Al(v.icon)}),e.jsx("span",{children:v.label})]}),v.meta?e.jsx("span",{className:o.previewItemMeta,children:v.meta}):null]},v.key))})]})}function ra(i){let r=0,g=0,v=0,w=0;return i.taxonomies.forEach(T=>{T.multiSelect&&(r+=1),T.widgetType==="level"&&(g+=1),T.isRequired&&(v+=1),T.formEnabled!==!1&&(w+=1)}),{multiSelectCount:r,numericCount:g,requiredCount:v,formEnabledCount:w}}function Pl(i){const r=[];return r.push(i.widgetType==="level"?"Numeric":"Descriptive"),i.multiSelect&&r.push("Multi-select"),i.isRequired&&r.push("Required"),i.formEnabled!==!1&&r.push("Shows in forms"),i.filterEnabled&&r.push("Filterable"),i.sortEnabled&&r.push("Sortable"),r}function Dl(i){return{...i,aliases:Array.isArray(i.aliases)?[...i.aliases]:void 0,options:Array.isArray(i.options)?i.options.map(r=>({...r,aliases:Array.isArray(r.aliases)?[...r.aliases]:void 0})):[]}}function ga(i,r){i.key!=="Enter"&&i.key!==" "||(i.preventDefault(),r())}function Ml(i){const{onAnalyzeSystemTaxonomyPack:r,onApplySystemTaxonomyPack:g}=i,v=l.useMemo(()=>da(),[]),[w,T]=l.useState(v),[S,B]=l.useState(v[0]?.id||""),[A,R]=l.useState(()=>v[0]?oa(v[0]):{categories:!0,types:!0,priorities:!0}),[O,j]=l.useState(!1),[_,L]=l.useState(null),[H,P]=l.useState(!1),[x,C]=l.useState(!1),D=w.find(m=>m.id===S)||w[0]||null,h=l.useMemo(()=>!D||!r?null:r(D),[r,D]);l.useEffect(()=>{let m=!1;return P(!0),fetch("/api/taskforce/taxonomy-library").then(async $=>{if(!$.ok)return null;const n=await $.json().catch(()=>({})),c=Array.isArray(n?.packs)?n.packs:[];return!m&&c.length>0&&(T(c),B(I=>c.some(y=>y.id===I)?I:c[0].id)),null}).catch(()=>null).finally(()=>{m||P(!1)}),()=>{m=!0}},[]);const z=m=>{const $=w.find(n=>n.id===m);B(m),R($?oa($):{categories:!0,types:!0,priorities:!0}),j(!1),L(null)},u=m=>{R($=>({...$,[m]:!$[m]}))},W=()=>{if(!D)return;if(Object.entries(A).filter(([,$])=>$).map(([$])=>$).length===0){L({type:"error",message:"Select at least one taxonomy section to apply."});return}if(!g){L({type:"error",message:"System taxonomy pack apply is not available in this surface yet."});return}C(!0),L(null),g({pack:D,sections:A,remapExistingValuesToDefault:O}).then($=>{if($?.success){L({type:"success",message:`${D.label} was applied to the selected taxonomy sections.`});return}L({type:"error",message:$?.error||"Failed to apply the selected taxonomy pack."})}).catch($=>{L({type:"error",message:$ instanceof Error?$.message:"Failed to apply the selected taxonomy pack."})}).finally(()=>{C(!1)})};return D?e.jsxs("div",{className:o.libraryContainer,children:[e.jsxs("section",{className:o.introCard,children:[e.jsxs("span",{className:o.eyebrow,children:[e.jsx(rt,{size:14}),"System Taxonomy Library"]}),e.jsx("h3",{className:o.introTitle,children:"Browse starter packs before you replace anything."}),e.jsx("p",{className:o.introCopy,children:"Library packs give you coordinated categories, task types, and priority scales. Apply replaces only the sections you choose."}),H?e.jsx("p",{className:o.prototypeNotice,children:"Loading available packs…"}):null]}),e.jsxs("div",{className:o.libraryGrid,children:[e.jsx("div",{className:o.packList,children:w.map(m=>{const $=m.id===S;return e.jsxs("article",{className:`${o.packCard} ${o.packCardInteractive} ${$?o.packCardActive:""}`,role:"button",tabIndex:0,"aria-pressed":$,onClick:()=>z(m.id),onKeyDown:n=>ga(n,()=>z(m.id)),children:[e.jsx("div",{className:o.packHeader,children:e.jsxs("div",{className:o.packHeaderText,children:[e.jsx("div",{className:o.packTitleRow,children:e.jsx("h4",{className:o.packTitle,children:m.label})}),e.jsx("p",{className:o.packDescription,children:m.description})]})}),e.jsxs("div",{className:o.packCounts,children:[e.jsxs("span",{className:o.packCountChip,children:[e.jsx(ha,{size:13}),m.categories.length," categories"]}),e.jsxs("span",{className:o.packCountChip,children:[e.jsx(on,{size:13}),m.types.length," types"]}),e.jsxs("span",{className:o.packCountChip,children:[e.jsx(me,{size:13}),m.priorities.length," priority levels"]})]}),e.jsx("div",{className:o.packActions,children:e.jsx("button",{type:"button",className:s.submitBtn,onClick:()=>z(m.id),children:"Apply"})})]},m.id)})}),e.jsxs("aside",{className:o.previewPanel,children:[e.jsxs("div",{className:o.previewHeader,children:[e.jsx("h3",{className:o.previewTitle,children:D.label}),e.jsx("p",{className:o.previewSubtext,children:"Read-only preview. Applying this pack will replace only the sections you choose."})]}),e.jsx(vs,{title:"Categories",items:D.categories.map(m=>({key:m.value,label:m.label,icon:m.icon,color:m.color}))}),e.jsx(vs,{title:"Task Types",items:D.types.map(m=>({key:m.value,label:m.label,icon:m.icon,color:m.color,meta:m.status==="retired"?"Retired":void 0}))}),e.jsx(vs,{title:"Priority Levels",items:D.priorities.map(m=>({key:String(m.value),label:m.label,icon:m.icon,color:m.color,meta:`Level ${m.value}`}))}),e.jsxs("section",{className:o.applyPanel,children:[e.jsx("h4",{className:o.applyTitle,children:"Apply Selected Sections"}),e.jsx("p",{className:o.applyCopy,children:"Applying this pack will replace the selected taxonomy sections in this workspace."}),h?e.jsxs("div",{className:o.analysisPanel,children:[h.unmatchedCategoryValues.length>0?e.jsxs("p",{className:o.analysisCopy,children:[h.unmatchedCategoryValues.length," category value",h.unmatchedCategoryValues.length===1?"":"s"," will be preserved as legacy unless you remap to default."]}):null,h.unmatchedTypeValues.length>0?e.jsxs("p",{className:o.analysisCopy,children:[h.unmatchedTypeValues.length," type value",h.unmatchedTypeValues.length===1?"":"s"," will be preserved as legacy unless you remap to default."]}):null,h.incompatiblePriorityValues.length>0?e.jsxs("p",{className:o.analysisWarning,children:["Existing tasks use priority level",h.incompatiblePriorityValues.length===1?"":"s"," ",h.incompatiblePriorityValues.join(", "),". Priority replacement will be blocked unless you remap unmatched existing values to default."]}):null,h.unmatchedCategoryValues.length===0&&h.unmatchedTypeValues.length===0&&h.incompatiblePriorityValues.length===0?e.jsx("p",{className:o.analysisCopy,children:"This pack lines up with the current workspace values for the selected taxonomy sections."}):null]}):null,e.jsxs("div",{className:o.checkboxList,children:[e.jsxs("label",{className:o.checkboxLabel,children:[e.jsx("input",{type:"checkbox",checked:A.categories,onChange:()=>u("categories")}),e.jsx("span",{children:"Categories"})]}),e.jsxs("label",{className:o.checkboxLabel,children:[e.jsx("input",{type:"checkbox",checked:A.types,onChange:()=>u("types")}),e.jsx("span",{children:"Types"})]}),e.jsxs("label",{className:o.checkboxLabel,children:[e.jsx("input",{type:"checkbox",checked:A.priorities,onChange:()=>u("priorities")}),e.jsx("span",{children:"Priorities"})]})]}),e.jsxs("label",{className:o.checkboxLabel,children:[e.jsx("input",{type:"checkbox",checked:O,onChange:()=>j(m=>!m)}),e.jsx("span",{children:"Remap unmatched existing values to default"})]}),e.jsx("p",{className:o.applyCopy,children:"Leave this off to preserve unmatched category and type values as legacy entries. Priority replacement will be blocked if existing tasks use values outside the selected pack."}),e.jsx("div",{className:o.packActions,children:e.jsx("button",{type:"button",className:s.submitBtn,onClick:W,disabled:x,children:x?"Applying…":"Apply Pack"})}),_?e.jsx("p",{className:`${o.prototypeResult} ${_.type==="error"?o.prototypeError:""}`,children:_.message}):null]})]})]})]}):e.jsx("div",{className:s.emptyState,children:e.jsx("p",{className:"tf-empty-copy",children:"No system taxonomy library packs are available."})})}function El(i){const{taxonomies:r=[],onUpdateCustomTaxonomies:g}=i,v=l.useMemo(()=>Pi(),[]),[w,T]=l.useState(v),[S,B]=l.useState(v[0]?.id||""),[A,R]=l.useState(!1),[O,j]=l.useState(null),[_,L]=l.useState(v[0]?.taxonomies.map(n=>n.id)||[]),[H,P]=l.useState(null),x=w.find(n=>n.id===S)||w[0]||null,C=x?ra(x):null,D=l.useMemo(()=>x?x.taxonomies.filter(n=>_.includes(n.id)):[],[x,_]),h=l.useMemo(()=>new Set(_),[_]),z=l.useMemo(()=>{const n=new Set(r.map(c=>c.id));return D.map(c=>c.id).filter(c=>n.has(c))},[D,r]),u=l.useMemo(()=>{if(!x)return[];const n=new Set(r.map(c=>c.id));return x.taxonomies.filter(c=>h.has(c.id)&&!n.has(c.id))},[x,h,r]);if(l.useEffect(()=>{let n=!1;return R(!0),j(null),fetch("/api/taskforce/custom-taxonomy-library").then(async c=>{if(!c.ok)throw new Error(`Failed to load custom taxonomy packs (${c.status})`);const I=await c.json().catch(()=>({})),y=Array.isArray(I?.packs)?I.packs:[];!n&&y.length>0&&(T(y),B(F=>y.some(p=>p.id===F)?F:y[0].id))}).catch(c=>{n||j(c instanceof Error?c.message:"Failed to load custom taxonomy packs.")}).finally(()=>{n||R(!1)}),()=>{n=!0}},[]),l.useEffect(()=>{L(x?.taxonomies.map(n=>n.id)||[]),P(null)},[S,x]),!x)return e.jsx("div",{className:s.emptyState,children:e.jsx("p",{className:"tf-empty-copy",children:"No custom taxonomy library packs are available."})});const W=n=>{L(c=>c.includes(n)?c.filter(I=>I!==n):[...c,n]),P(null)},m=()=>{L(u.map(n=>n.id)),P(null)},$=()=>{if(_.length===0){P({type:"error",message:"Select at least one taxonomy to install."});return}if(z.length>0){P({type:"error",message:`This workspace already has ${z.length} taxonomy ${z.length===1?"id":"ids"} that match your current selection. Deselect conflicting taxonomies before installing this pack.`});return}if(!g){P({type:"error",message:"Custom taxonomy install is not available in this surface yet."});return}g([...r,...u.map(n=>Dl(n))]),P({type:"success",message:`${u.length} custom ${u.length===1?"taxonomy was":"taxonomies were"} added to this workspace.`})};return e.jsxs("div",{className:o.libraryContainer,children:[e.jsxs("section",{className:o.introCard,children:[e.jsxs("span",{className:o.eyebrow,children:[e.jsx(na,{size:14}),"Custom Taxonomy Library"]}),e.jsx("h3",{className:o.introTitle,children:"Browse reusable custom taxonomy packs."}),e.jsx("p",{className:o.introCopy,children:"These packs install workspace-owned custom taxonomies such as approval stages, channels, and effort bands. Review a pack, choose the taxonomies you want, and install them into this workspace."}),A?e.jsx("p",{className:o.prototypeNotice,children:"Loading available packs…"}):null,O?e.jsx("p",{className:`${o.prototypeResult} ${o.prototypeError}`,children:O}):null]}),e.jsxs("div",{className:o.libraryGrid,children:[e.jsx("div",{className:o.packList,children:w.map(n=>{const c=n.id===S,I=ra(n),y=n.taxonomies.slice(0,3).map(F=>F.label);return e.jsxs("article",{className:`${o.packCard} ${o.packCardInteractive} ${c?o.packCardActive:""}`,role:"button",tabIndex:0,"aria-pressed":c,onClick:()=>B(n.id),onKeyDown:F=>ga(F,()=>B(n.id)),children:[e.jsx("div",{className:o.packHeader,children:e.jsxs("div",{className:o.packHeaderText,children:[e.jsxs("div",{className:o.packTitleRow,children:[e.jsx("h4",{className:o.packTitle,children:n.label}),n.domainTag?e.jsx("span",{className:o.packBadge,children:n.domainTag}):null]}),e.jsx("p",{className:o.packDescription,children:n.description}),n.bestFor?e.jsxs("p",{className:o.packBestFor,children:[e.jsx("strong",{children:"Best for:"})," ",n.bestFor]}):null]})}),e.jsxs("div",{className:o.packCounts,children:[e.jsxs("span",{className:o.packCountChip,children:[e.jsx(na,{size:13}),n.taxonomies.length," taxonomies"]}),I.multiSelectCount>0?e.jsx("span",{className:o.packCountChip,children:"Multi-select"}):null,I.numericCount>0?e.jsx("span",{className:o.packCountChip,children:"Numeric"}):null,I.requiredCount>0?e.jsx("span",{className:o.packCountChip,children:"Required"}):null]}),e.jsxs("div",{className:o.packTaxonomyPreview,children:[y.map(F=>e.jsx("span",{className:o.packTaxonomyChip,children:F},F)),n.taxonomies.length>y.length?e.jsxs("span",{className:o.packTaxonomyMore,children:["+",n.taxonomies.length-y.length," more"]}):null]}),e.jsx("div",{className:o.packActions,children:e.jsx("span",{className:o.packActionHint,children:c?"Previewing":"Click to Preview"})})]},n.id)})}),e.jsxs("aside",{className:o.previewPanel,children:[e.jsxs("div",{className:o.previewHeader,children:[e.jsx("h3",{className:o.previewTitle,children:x.label}),x.bestFor?e.jsxs("p",{className:o.previewBestFor,children:[e.jsx("strong",{children:"Best for:"})," ",x.bestFor]}):null,e.jsx("p",{className:o.previewSubtext,children:"Review each taxonomy before installing it into this workspace. Installed taxonomies become normal workspace-owned custom taxonomies."})]}),e.jsxs("div",{className:o.previewSummaryRow,children:[e.jsxs("span",{className:o.packCountChip,children:[x.taxonomies.length," taxonomies"]}),(C?.formEnabledCount||0)>0?e.jsxs("span",{className:o.packCountChip,children:[C.formEnabledCount," show in forms"]}):null,(C?.numericCount||0)>0?e.jsxs("span",{className:o.packCountChip,children:[C.numericCount," numeric"]}):null,(C?.requiredCount||0)>0?e.jsxs("span",{className:o.packCountChip,children:[C.requiredCount," required"]}):null]}),e.jsxs("section",{className:o.applyPanel,children:[e.jsx("h4",{className:o.applyTitle,children:"Choose Taxonomies to Install"}),e.jsx("p",{className:o.applyCopy,children:"Select only the taxonomies you want to add. This first pass installs new custom taxonomies only and asks you to skip conflicts rather than replace them."}),e.jsx("div",{className:o.checkboxList,children:x.taxonomies.map(n=>e.jsxs("label",{className:o.checkboxLabel,children:[e.jsx("input",{type:"checkbox",checked:_.includes(n.id),onChange:()=>W(n.id)}),e.jsxs("span",{children:[n.label,r.some(c=>c.id===n.id)?" (Already installed)":""]})]},n.id))}),e.jsxs("div",{className:o.analysisPanel,children:[e.jsxs("p",{className:o.analysisCopy,children:[_.length," ",_.length===1?"taxonomy is":"taxonomies are"," currently selected from this pack."]}),u.length>0?e.jsxs("p",{className:o.analysisCopy,children:[u.length," selected ",u.length===1?"taxonomy is":"taxonomies are"," ready to install right now."]}):e.jsx("p",{className:o.analysisCopy,children:"No selected taxonomies are currently installable."}),z.length>0?e.jsxs("p",{className:o.analysisWarning,children:[z.length," selected ",z.length===1?"taxonomy conflicts":"taxonomies conflict"," with existing workspace ids: ",z.join(", "),"."]}):null]}),e.jsxs("div",{className:o.packActions,children:[z.length>0?e.jsx("button",{type:"button",className:s.cancelBtn,onClick:m,children:"Select Installable Only"}):null,e.jsx("button",{type:"button",className:s.submitBtn,onClick:$,disabled:_.length===0||u.length===0,children:"Install Selected Taxonomies"})]}),H?e.jsx("p",{className:`${o.prototypeResult} ${H.type==="error"?o.prototypeError:""}`,children:H.message}):null]}),x.taxonomies.map(n=>e.jsxs("section",{className:o.customTaxonomyCard,children:[e.jsx("div",{className:o.customTaxonomyHeader,children:e.jsxs("div",{children:[e.jsx("h4",{className:o.previewSectionTitle,children:n.label}),n.description?e.jsx("p",{className:o.customTaxonomyDescription,children:n.description}):null]})}),z.includes(n.id)?e.jsx("p",{className:o.analysisWarning,children:"Conflicts with an existing taxonomy id in this workspace."}):null,e.jsx("div",{className:o.customTaxonomyBadges,children:Pl(n).map(c=>e.jsx("span",{className:o.customTaxonomyBadge,children:c},c))}),e.jsx(vs,{title:n.widgetType==="level"?"Levels":"Options",items:n.options.map(c=>({key:`${n.id}:${c.value}`,label:c.label,icon:c.icon,color:c.color,meta:n.widgetType==="level"?`Level ${c.value}`:String(c.value)}))})]},n.id))]})]})]})}function ca(i){const{mode:r="system",taxonomies:g,onUpdateCustomTaxonomies:v,onAnalyzeSystemTaxonomyPack:w,onApplySystemTaxonomyPack:T}=i;return r==="custom"?e.jsx(El,{taxonomies:g,onUpdateCustomTaxonomies:v}):e.jsx(Ml,{onAnalyzeSystemTaxonomyPack:w,onApplySystemTaxonomyPack:T})}function zl(i){const{taxonomies:r,onUpdateTaxonomies:g,taxonomyDisplayLabels:v,onUpdateTaxonomyDisplayLabels:w,categories:T,pathValidation:S,onUpdateCategory:B,onRemoveCategory:A,onSaveCategory:R,onAddPath:O,onRemovePath:j,onUpdateCategoryIcon:_,onUpdateCategoryColor:L,onBrowseFolders:H,types:P,onSaveType:x,onRemoveType:C,onUpdateType:D,priorities:h,onUpdatePriorities:z,onAnalyzeSystemTaxonomyPack:u,onApplySystemTaxonomyPack:W,manualComplexityEnabled:m,onManualComplexityEnabledChange:$,initialTab:n}=i,[c,I]=l.useState(n||""),[y,F]=l.useState(n?"detail":"list"),[p,G]=l.useState(!1),[K,ne]=l.useState(""),Re=l.useMemo(()=>da().length,[]),Ge=l.useMemo(()=>Ti({categories:T,types:P,priorities:h,taxonomies:r,manualComplexityEnabled:m,displayLabels:v}),[T,m,h,r,v,P]),Ns=()=>{if(!K.trim())return;const f=K.toLowerCase().trim().replace(/\s+/g,"-");if(r.some(Y=>Y.id===f)){alert("A taxonomy with this ID already exists");return}const q={id:f,label:K.trim(),options:[],widgetType:"select",isSystem:!1,multiSelect:!1,formEnabled:!1,filterEnabled:!0,sortEnabled:!1};g([...r,q]),ne(""),G(!1),I(f),F("detail")},Cs=f=>{g(r.map(q=>q.id===f.id?f:q))},ws=f=>{const q=r.map(Y=>Y.id===f?{...Y,status:"retired"}:Y);g(q),F("list")},Ts=f=>{const q=r.map(Y=>Y.id===f?{...Y,status:"active"}:Y);g(q)},Te=f=>{I(f),F("detail")},Ze=(f,q)=>{const Y=r.findIndex(_s=>_s.id===f);if(Y<0)return;const Fe=Y+q;if(Fe<0||Fe>=r.length)return;const Oe=[...r],[$s]=Oe.splice(Y,1);Oe.splice(Fe,0,$s),g(Oe)},Qe=Ge.find(f=>f.id===c),es=Qe?.taxonomy,Ss=Ge.filter(f=>f.kind!=="custom"),je=Ge.filter(f=>f.kind==="custom");return y==="list"?e.jsxs("div",{className:b.taxonomyDrillDown,children:[e.jsxs("div",{className:b.drillDownList,children:[e.jsx("section",{className:b.librarySection,children:e.jsxs("button",{className:b.libraryLauncher,onClick:()=>Te("library"),children:[e.jsxs("div",{className:b.libraryLauncherInfo,children:[e.jsx("span",{className:b.libraryLauncherIcon,children:e.jsx(rt,{size:18})}),e.jsxs("div",{className:b.libraryLauncherText,children:[e.jsx("span",{className:b.libraryLauncherLabel,children:"System Taxonomy Library"}),e.jsx("span",{className:b.libraryLauncherSubtext,children:"Browse curated packs for categories, task types, and priority scales."})]})]}),e.jsxs("span",{className:b.libraryLauncherMeta,children:[Re," curated packs",e.jsx(he,{size:16,className:b.chevron})]})]})}),e.jsxs("div",{className:b.drillDownSection,children:[e.jsx("h4",{className:b.drillDownSectionTitle,children:"System Taxonomies"}),Ss.map(f=>e.jsxs("button",{className:`${b.drillDownItem} ${f.id==="complexities"&&!m?b.drillDownItemDimmed:""}`,onClick:()=>Te(f.id),children:[e.jsxs("div",{className:b.drillDownItemInfo,children:[e.jsx(rn,{size:16,className:b.systemIcon}),e.jsxs("div",{className:b.drillDownItemText,children:[e.jsx("span",{className:b.drillDownItemLabel,children:f.label}),e.jsx("span",{className:b.drillDownItemSubtext,children:f.summary})]})]}),e.jsx(he,{size:16,className:b.chevron})]},f.id))]}),e.jsxs("div",{className:b.drillDownSection,children:[e.jsxs("div",{className:b.drillDownSectionHeader,children:[e.jsx("h4",{className:b.drillDownSectionTitle,children:"Custom Taxonomies"}),e.jsxs("button",{className:E.addTaxonomyBtnSmall,onClick:()=>G(!0),title:"Add Custom Taxonomy",children:[e.jsx(Xe,{size:14})," New"]})]}),e.jsxs("button",{className:b.drillDownItem,onClick:()=>Te("custom-library"),children:[e.jsxs("div",{className:b.drillDownItemInfo,children:[e.jsx(rt,{size:16,className:b.systemIcon}),e.jsxs("div",{className:b.drillDownItemText,children:[e.jsx("span",{className:b.drillDownItemLabel,children:"Custom Taxonomy Library"}),e.jsx("span",{className:b.drillDownItemSubtext,children:"Reusable templates for future custom taxonomy packs"})]})]}),e.jsx(he,{size:16,className:b.chevron})]}),je.length===0?e.jsx("div",{className:s.emptyState,children:e.jsx("p",{className:"tf-empty-copy",children:"No custom taxonomies yet."})}):je.map(f=>e.jsxs("div",{className:`${b.drillDownItem} ${f.taxonomy?.status==="retired"?b.drillDownItemDimmed:""}`,children:[e.jsxs("button",{className:b.drillDownItemAction,onClick:()=>Te(f.id),children:[e.jsxs("div",{className:b.drillDownItemInfo,children:[e.jsx(cn,{size:16}),e.jsxs("div",{className:b.drillDownItemText,children:[e.jsx("span",{className:b.drillDownItemLabel,children:f.taxonomy?.status==="retired"?`${f.label} (Retired)`:f.label}),e.jsx("span",{className:b.drillDownItemSubtext,children:f.summary})]})]}),e.jsx(he,{size:16,className:b.chevron})]}),e.jsxs("div",{className:b.orderButtons,children:[e.jsx("button",{type:"button",className:s.browseBtn,title:"Move taxonomy up",onClick:q=>{q.stopPropagation(),Ze(f.id,-1)},disabled:je[0]?.id===f.id,children:e.jsx(pa,{size:16})}),e.jsx("button",{type:"button",className:s.browseBtn,title:"Move taxonomy down",onClick:q=>{q.stopPropagation(),Ze(f.id,1)},disabled:je[je.length-1]?.id===f.id,children:e.jsx(ua,{size:16})})]})]},f.id))]})]}),p&&e.jsx("div",{className:b.createOverlay,children:e.jsxs("div",{className:b.createDialog,children:[e.jsx("h3",{className:b.createDialogTitle,children:"New Taxonomy"}),e.jsxs("div",{className:b.inputGroup,children:[e.jsx("label",{className:s.label,children:"Name"}),e.jsx("input",{className:s.input,placeholder:"e.g. Sprint, Phase",value:K,onChange:f=>ne(f.target.value),autoFocus:!0})]}),e.jsxs("div",{className:b.dialogActions,children:[e.jsx("button",{className:`${s.submitBtn} ${b.createSubmit}`,onClick:Ns,disabled:!K.trim(),children:"Create"}),e.jsx("button",{className:`${s.cancelBtn} ${b.createCancel}`,onClick:()=>{G(!1),ne("")},children:"Cancel"})]})]})})]}):e.jsxs("div",{className:b.taxonomyDetailView,children:[e.jsx("div",{className:b.detailHeader,children:e.jsxs("div",{className:b.taxonomyBreadcrumbs,children:[e.jsxs("button",{className:b.breadcrumbPrev,onClick:()=>F("list"),title:"Back to All Taxonomies",children:[e.jsx(dn,{size:16,className:b.breadcrumbIcon}),"Taxonomies"]}),e.jsx(he,{size:14,className:b.breadcrumbDivider}),e.jsx("h3",{className:b.breadcrumbActive,children:c==="library"?"System Taxonomy Library":c==="custom-library"?"Custom Taxonomy Library":Qe?.label||"Taxonomy"})]})}),e.jsx("div",{className:b.detailContent,children:c==="library"?e.jsx(ca,{mode:"system",onAnalyzeSystemTaxonomyPack:u,onApplySystemTaxonomyPack:W}):c==="custom-library"?e.jsx(ca,{mode:"custom",taxonomies:r,onUpdateCustomTaxonomies:g}):c==="categories"?e.jsx($i,{displayLabel:v?.category,onUpdateDisplayLabel:f=>w?.({category:f}),categories:T,pathValidation:S,onUpdateCategory:B,onRemoveCategory:A,onSaveCategory:R,onAddPath:O,onRemovePath:j,onUpdateCategoryIcon:_,onUpdateCategoryColor:L,onBrowseFolders:H}):c==="types"?e.jsx(_i,{displayLabel:v?.type,onUpdateDisplayLabel:f=>w?.({type:f}),types:P,onSaveType:x,onRemoveType:C,onUpdateType:D}):c==="complexities"?e.jsxs("div",{className:s.settingGroup,children:[e.jsx("h4",{className:s.settingSubtitle,children:"Complexity"}),e.jsx("p",{className:s.settingsHint,children:"Complexity is estimated by AI and system logic by default."}),e.jsx("p",{className:s.settingsHint,children:"Enable this to let users set complexity manually and show the Complexity field in Add/Edit Task. When disabled, the Complexity field is hidden from the task form."}),e.jsxs("label",{className:s.archiveToggle,children:[e.jsx("input",{type:"checkbox",checked:m,onChange:f=>{$(f.target.checked)}}),e.jsx("span",{children:"Manual Complexity"})]})]}):es?e.jsx(Si,{taxonomy:es,onUpdateTaxonomy:Cs,onRemoveTaxonomy:ws,onRestoreTaxonomy:Ts}):c==="priorities"?e.jsx(Ii,{displayLabel:v?.priority,onUpdateDisplayLabel:f=>w?.({priority:f}),priorities:h,onUpdatePriorities:z}):e.jsxs("div",{className:s.emptyState,children:[e.jsx("p",{className:"tf-empty-copy",children:"Taxonomy not found."}),e.jsx("button",{className:s.submitBtn,onClick:()=>F("list"),children:"Return to List"})]})})]})}const Rl={sun:vn,wind:xa,moon:yn,sparkles:ct};function Jl(i){const{settingsModel:r,onSectionChange:g}=i,{currentTheme:v,globalTheme:w,themeUseGlobalDefault:T,keyShortcut:S,jsonBackupEnabled:B,globalJsonBackupEnabled:A,globalWeekStartsOn:R,locale:O="en-US",supportedLocales:j=["en-US","es-419","pt-BR"],jsonBackupUseGlobalDefault:_,manualComplexityEnabled:L,checklistDropdownEnabled:H=!0,showTaskCardStatusLabel:P=!0,exportWorkflowsPath:x,exportingResource:C,exportResult:D,initialSection:h,onThemeChange:z,onSaveTheme:u,onSaveGlobalTheme:W,onResetProjectToGlobal:m,onKeyShortcutChange:$,onJsonBackupEnabledChange:n,onSaveGlobalJsonBackupEnabled:c,onSaveGlobalWeekStartsOn:I,onSaveLocale:y,onManualComplexityEnabledChange:F,onChecklistDropdownEnabledChange:p,onShowTaskCardStatusLabelChange:G,onSaveSettings:K,onExportWorkflowsPathChange:ne,onShowFolderBrowserChange:Re,onBrowserTargetChange:Ge,onFetchFolders:Ns,categories:Cs,pathValidation:ws,taxonomyDisplayLabels:Ts,onUpdateCategory:Te,onRemoveCategory:Ze,onSaveCategory:Qe,onAddPath:es,onRemovePath:Ss,onUpdateCategoryIcon:je,onUpdateCategoryColor:f,types:q,onSaveType:Y,onRemoveType:Fe,onUpdateType:Oe,taxonomies:$s,onUpdateTaxonomies:_s,priorities:ba,onUpdatePriorities:ya,onAnalyzeSystemTaxonomyPack:va,onApplySystemTaxonomyPack:fa,onUpdateTaxonomyDisplayLabels:ja,projectRoot:Se,projectName:He,mcpHostRoot:Is,serverHostRoot:Ls,mcpScriptPath:oe,tenantId:ka,workspaceId:ie,runtimeMode:ke="local",cloudAuthBaseUrl:Bs="",cloudMcpBaseUrl:As="",fetchCloudAuthApi:$e,workspaceSwitchingEnabled:Na=!1,currentWorkspaceRole:Ca="member",currentWorkspaceName:_e="",onDeleteWorkspace:Ps,onMcpHostRootChange:wa,isAuthenticated:Ds=!1,exportEnvironment:pt,setupState:se=null,buildInfo:Gl=null,onExportEnvironmentChange:Ta,onSaveSetupMode:Fl,onSaveWorkspaceProfile:Ms,availableWorkflows:Ie=[],onExportWorkflows:Sa,initiativeTemplates:Le=[],onRefreshInitiativeTemplates:Es,onCreateInitiativeFromTemplate:zs,onRefreshWorkflows:$a}=r,ut=ke!=="cloud",[We,ss]=l.useState([]);l.useEffect(()=>{Ie.length>0&&We.length===0&&ss(Ie)},[Ie]);const _a=t=>{ss(a=>a.includes(t)?a.filter(d=>d!==t):[...a,t])},Ia=()=>ss(Ie),La=()=>ss([]),[Be,U]=l.useState(null),[ts,Ba]=l.useState(()=>se?.mode==="operations"?"operations":"core"),[mt,ht]=l.useState(()=>String(se?.workspace?.name||"").trim()),[xt,gt]=l.useState(()=>String(se?.workspace?.description||"")),[Ue,bt]=l.useState(""),[Rs,Aa]=l.useState(""),[yt,vt]=l.useState(!1),[M,te]=l.useState("general"),[Gs,Ve]=l.useState(!0),[re,as]=l.useState(()=>"project"),[Fs,ft]=l.useState([]),[Os,jt]=l.useState(!1),[xe,Hs]=l.useState(null),[ns,is]=l.useState(null),ls=Me.useCallback(async()=>{if(ie){jt(!0);try{const t=typeof window<"u"?new URL(`/api/taskforce/workspace/assignee-options?workspaceId=${encodeURIComponent(ie)}`,window.location.origin).toString():`/api/taskforce/workspace/assignee-options?workspaceId=${encodeURIComponent(ie)}`,a=await fetch(t,{credentials:"include"});if(!a.ok)return;const d=await a.json().catch(()=>({})),N=Array.isArray(d?.assignees)?d.assignees.filter(k=>k.kind==="agent").map(k=>({id:String(k.value||""),name:String(k.label||""),profileToken:typeof k.profileToken=="string"?k.profileToken:null,username:String(k.username||k.value||""),icon:String(k.icon||"Bot"),color:String(k.color||"#6B7280"),kind:"agent",description:typeof k.description=="string"?k.description:null,role:typeof k.role=="string"?k.role:null,provider:typeof k.provider=="string"?k.provider:null,model:typeof k.model=="string"?k.model:null,surfaceType:typeof k.surfaceType=="string"?k.surfaceType:null})):[];ft(N)}catch{ft([])}finally{jt(!1)}}},[ie]),Pa=Me.useCallback(async(t,a)=>{if(ie){is(null);try{const d=await fetch("/api/taskforce/workspace/ai-profiles/merge",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:ie,keepId:t,mergeId:a})}),N=await d.json().catch(()=>({}));d.ok?(is({type:"success",message:"Profiles merged successfully."}),Hs(null),await ls()):is({type:"error",message:N?.error||"Merge failed."})}catch{is({type:"error",message:"Network error during merge."})}}},[ie,ls]);l.useEffect(()=>{(M==="agents"||M==="mcp")&&ls()},[M,ls]),l.useEffect(()=>{Le.length>0&&!Ue&&bt(Le[0].id)},[Le,Ue]),l.useEffect(()=>{if(!Be)return;const t=setTimeout(()=>U(null),2500);return()=>clearTimeout(t)},[Be]),l.useEffect(()=>{Ba(se?.mode==="operations"?"operations":"core")},[se?.mode]),l.useEffect(()=>{ht(String(se?.workspace?.name||"").trim()),gt(String(se?.workspace?.description||""))},[se?.workspace?.name,se?.workspace?.description]);const Da=async t=>{z(t);const a=await u(t);U({type:a?"success":"error",message:a?"Project theme saved.":"Failed to save project theme."})},kt=(t,a,d)=>{const N=Rl[t.icon];return e.jsxs("button",{className:`${s.themeBtn} tf-button-tile ${a===t.id?s.activeTheme:""}`,onClick:()=>{d(t.id)},children:[e.jsx(N,{size:20})," ",t.label]},t.id)},Ae=ke==="cloud"||Ds,Ws=ke==="cloud"||Ds?"cloud":"local",[os,Us]=l.useState(Ws),[ge,Nt]=l.useState(!1),[Ke,Ct]=l.useState(!0),[wt,Tt]=l.useState(!1),[Vs,St]=l.useState(!1),[Ks,$t]=l.useState(!0),[qs,Js]=l.useState([]),[Ma,_t]=l.useState(!1),[It,Xs]=l.useState(null),[rs,cs]=l.useState(null),ds=l.useMemo(()=>`${String(_e||se?.workspace?.name||He||ie||"Taskforce Workspace").trim()} MCP`,[_e,se?.workspace?.name,He,ie]),[Lt,Ys]=l.useState(ds),[qe,Ea]=l.useState(["tasks:read","tasks:write","workspace:read"]),[Zs,Bt]=l.useState(""),[ps,le]=l.useState(null),[J,At]=l.useState(null),[de,Pt]=l.useState("cursor"),[Dt,Qs]=l.useState(""),[Mt,Et]=l.useState(!1),[Z,be]=l.useState(null),[us,zt]=l.useState([]),[za,Rt]=l.useState(!1),[Gt,Pe]=l.useState(null),[Ft,Ot]=l.useState(null);l.useEffect(()=>{Us(Ws)},[Ws]),l.useEffect(()=>{Ys(t=>t.trim().length>0?t:ds)},[ds]),l.useEffect(()=>{if(!ps)return;const t=setTimeout(()=>le(null),3500);return()=>clearTimeout(t)},[ps]),l.useEffect(()=>{J&&(Qs(J),be(null))},[J]);const et=l.useMemo(()=>{const t=an(As||Bs||""),a=String(t||As||Bs||"").trim().replace(/\/+$/,"");return a?`${a}/mcp`:typeof window>"u"?"/mcp":`${window.location.origin.replace(/\/+$/,"")}/mcp`},[As,Bs]),Ra=ke!=="cloud"&&Ae,st=ke==="cloud"||os==="cloud",Ga=ke!=="cloud"&&(!Ae||os==="local"),Fa=l.useMemo(()=>{const t={active:0,expired:1,revoked:2};return[...qs].sort((a,d)=>{const N=(t[a.status]??99)-(t[d.status]??99);return N!==0?N:String(d.createdAt||"").localeCompare(String(a.createdAt||""))})},[qs]),De=l.useMemo(()=>Cn(_e||null,He||null),[_e,He]),ms=J||"<<GENERATE_TOKEN>>",V=l.useMemo(()=>$n({clientId:de,endpoint:et,tokenValue:ms,serverId:De}),[et,De,ms,de]),hs=V.kind==="json"?V.serverConfig??null:null,Ht=de==="chatgpt-desktop"||de==="claude-desktop",Wt=l.useMemo(()=>us.find(t=>t.provider==="chatgpt"&&t.status==="active")||null,[us]),Ut=l.useMemo(()=>us.find(t=>t.provider==="claude"&&t.status==="active")||null,[us]),xs=de==="chatgpt-desktop"?Wt:de==="claude-desktop"?Ut:null,Oa=l.useMemo(()=>{if(V.kind==="text")return V.renderedText||"";let t={[V.rootKey||"mcpServers"]:{[De]:V.serverConfig}};for(const a of[...V.wrapperKeys||[]].reverse())t={[a]:t};return JSON.stringify(t,null,2)},[V,De]),tt=(t,a,d="mcpServers",N=[])=>{const k={color:"var(--text-helper)"},Q={color:"var(--brand-primary-strong)",fontWeight:"bold"},ee={color:"var(--text-secondary)"},Ne={color:"var(--text-primary, #fff)"},Je=ms,Ce=[...N,d],ye=" ".repeat(Ce.length+1),Qt=JSON.stringify(a,null,2).split(`
3
+ `).map((pe,ce)=>ce===0?pe:`${ye}${pe}`).join(`
4
+ `).split(Je);return e.jsxs(e.Fragment,{children:[e.jsx("span",{style:ee,children:"{"}),`
5
+ `,Ce.map((pe,ce)=>e.jsxs(Me.Fragment,{children:[`${" ".repeat(ce+1)}`,e.jsx("span",{style:k,children:`"${pe}"`}),e.jsx("span",{style:k,children:":"})," ",e.jsx("span",{style:ee,children:"{"}),`
6
+ `]},`mcp-container-open-${pe}-${ce}`)),ye,e.jsxs("span",{style:Ne,children:[`"${t}"`,": ",Qt.map((pe,ce)=>e.jsxs(Me.Fragment,{children:[pe,ce<Qt.length-1&&e.jsx("span",{style:Q,children:Je})]},`config-segment-${ce}`))]}),`
7
+ `,[...Ce].reverse().map((pe,ce)=>e.jsxs(Me.Fragment,{children:[`${" ".repeat(Ce.length-ce)}`,e.jsx("span",{style:ee,children:"}"}),`
8
+ `]},`mcp-container-close-${pe}-${ce}`)),e.jsx("span",{style:ee,children:"}"})]})},Vt=t=>{const a={color:"var(--text-primary, #fff)"},d={color:"var(--brand-primary-strong)",fontWeight:"bold"},N=ms,k=String(t||"").split(N);return k.map((Q,ee)=>e.jsxs(Me.Fragment,{children:[e.jsx("span",{style:a,children:Q}),ee<k.length-1&&e.jsx("span",{style:d,children:N})]},`text-config-${ee}`))},at=t=>{Ea(a=>a.includes(t)?a.length===1?a:a.filter(d=>d!==t):[...a,t])},gs=(t,a)=>{navigator.clipboard.writeText(t),Nt(a),setTimeout(()=>Nt(!1),2e3)},Kt=()=>{if(!Ht&&!J){le({type:"error",message:"Generate a token before copying the Cloud MCP configuration."});return}gs(Oa,"full")},qt=()=>{let t=oe||"",a=Se||"";const d=Is||Ls;if(d&&Se){if(oe&&oe.startsWith(Se))t=oe.replace(Se,d);else if(oe&&oe.includes("/node_modules/")){const Zt=oe.indexOf("/node_modules/");t=d+oe.substring(Zt)}a=d}const N=(oe||"").endsWith(".ts"),k=He||(Se?Se.split(/[/\\]/).pop():"project"),Q=dt(`taskforce-${k}`,"taskforce-project"),ee=(ka||"").trim()||"your-tenant-id",Ne=(ie||se?.workspaceId||"").trim(),Ce={TASKFORCE_TENANT_ID:ee,TASKFORCE_WORKSPACE_ID:Ne&&Ne!=="default"?Ne:"your-workspace-id"},ye=Ke?{command:"taskforce",args:["mcp",a||"."],env:Ce}:{command:N?"npx":"node",args:N?["-y","tsx",t,a]:[t,a],env:Ce};return!Ke&&!ye.args[ye.args.length-1]&&(ye.args[ye.args.length-1]=".../path/to/project/root"),{serverId:Q,serverConfig:ye}},Ha=(t="full")=>{if(!oe&&!Ke)return;const{serverId:a,serverConfig:d}=qt(),N=t==="full"?JSON.stringify({mcpServers:{[a]:d}},null,2):`"${a}": ${JSON.stringify(d,null,2)}`;gs(N,t)},Jt=async()=>{if(Ae){_t(!0),Xs(null);try{const t=await $e("/api/taskforce/settings/mcp/tokens",{method:"GET",credentials:"include"}),a=await t.json().catch(()=>({}));if(!t.ok){Xs(String(a?.error||"Failed to load MCP tokens."));return}Js(Array.isArray(a?.items)?a.items:[])}catch{Xs("Failed to load MCP tokens.")}finally{_t(!1)}}},nt=async()=>{if(Ae){Rt(!0),Pe(null);try{const t=await $e("/api/taskforce/settings/mcp/connectors",{method:"GET",credentials:"include"}),a=await t.json().catch(()=>({}));if(!t.ok){Pe(String(a?.error||"Failed to load MCP connectors."));return}zt(Array.isArray(a?.items)?a.items:[])}catch{Pe("Failed to load MCP connectors.")}finally{Rt(!1)}}},Wa=async()=>{const t=Lt.trim();if(!t){le({type:"error",message:"Token name is required."});return}cs("create"),le(null);try{const a=await $e("/api/taskforce/settings/mcp/tokens",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,scopes:qe,expiresAt:Zs?new Date(`${Zs}T00:00:00`).toISOString():null})}),d=await a.json().catch(()=>({}));if(!a.ok){le({type:"error",message:String(d?.error||"Failed to create token.")});return}At(String(d?.token||"")),Ys(ds),Bt(""),Js(N=>d?.record?[d.record,...N.filter(Q=>Q.id!==d.record.id)]:N)}catch{le({type:"error",message:"Failed to create token."})}finally{cs(null)}},Xt=async(t,a)=>{cs(`${a}:${t}`),le(null);try{const d=await $e(`/api/taskforce/settings/mcp/tokens/${encodeURIComponent(t)}/${a}`,{method:"POST",credentials:"include"}),N=await d.json().catch(()=>({}));if(!d.ok){le({type:"error",message:String(N?.error||`Failed to ${a} token.`)});return}a==="regenerate"?(At(String(N?.token||"")),le({type:"success",message:"Token regenerated. Copy the new value now."})):le({type:"success",message:"Token revoked."});const k=N?.record||null;k?.id?Js(Q=>Q.map(ee=>ee.id===k.id?k:ee)):await Jt()}catch{le({type:"error",message:`Failed to ${a} token.`})}finally{cs(null)}},Ua=async()=>{const t=Dt.trim();if(!t){be({type:"error",message:"Paste a token to test the MCP connection."});return}Et(!0),be(null);try{const a=await $e("/api/taskforce/settings/mcp/test-connection",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t,requiredScopes:qe})}),d=await a.json().catch(()=>({}));if(!a.ok){const k=d?.details&&typeof d.details=="object"?d.details:{},Q=Array.isArray(k?.missingScopes)?k.missingScopes.map(Je=>String(Je)):[],ee=typeof k?.tokenWorkspaceId=="string"?String(k.tokenWorkspaceId):void 0,Ne=d?.code==="MCP_TOKEN_MISSING_SCOPES"&&Q.length>0?`Token is missing required scopes: ${Q.join(", ")}.`:String(d?.error||"Failed to test MCP connection.");be({type:"error",message:Ne,workspaceName:ee});return}const N=d?.result&&typeof d.result=="object"?d.result:{};be({type:"success",message:"Connection looks good for this workspace.",scopes:Array.isArray(N?.scopes)?N.scopes.map(k=>String(k)):[],workspaceName:typeof N?.workspaceName=="string"?String(N.workspaceName):"",workspaceId:typeof N?.workspaceId=="string"?String(N.workspaceId):""})}catch{be({type:"error",message:"Failed to test MCP connection."})}finally{Et(!1)}},Va=async t=>{Ot(t),Pe(null);try{const a=await $e(`/api/taskforce/settings/mcp/connectors/${encodeURIComponent(t)}/disconnect`,{method:"POST",credentials:"include"}),d=await a.json().catch(()=>({}));if(!a.ok){Pe(String(d?.error||"Failed to disconnect connector."));return}const N=d?.record||null;N?.id?zt(k=>k.map(Q=>Q.id===N.id?N:Q)):await nt()}catch{Pe("Failed to disconnect connector.")}finally{Ot(null)}};l.useEffect(()=>{if(Ae){if(M==="mcp"&&st){Jt(),nt();return}M==="integrations"&&nt()}},[M,st,Ae]),l.useEffect(()=>{M==="initiatives"&&Le.length===0&&Es?.()},[M,Le.length,Es]);const Ka=r.availableEnvironments||[],qa=t=>{switch(t){case"Bot":return e.jsx(ia,{size:16});case"Terminal":return e.jsx(bn,{size:16});case"Sparkles":return e.jsx(ct,{size:16});case"Command":return e.jsx(gn,{size:16});case"Wind":return e.jsx(xa,{size:16});case"Github":return e.jsx(xn,{size:16});case"Zap":return e.jsx(ys,{size:16});case"Box":return e.jsx(Ye,{size:16});default:return e.jsx(hn,{size:16})}};l.useEffect(()=>{h&&(h==="categories"||h==="types"?te("taxonomy"):h==="documents"?te("general"):h==="appearance-application"?(Ve(!0),te("appearanceApplication")):h==="appearance-task-cards"?(Ve(!0),te("appearanceTaskCards")):h==="appearance-task-forms"?(Ve(!0),te("appearanceTaskForms")):te(h==="resources"||h==="commands"?"commands":h==="initiatives"?"initiatives":h==="agents"?"agents":h==="integrations"?"integrations":h))},[h]),l.useEffect(()=>{(M==="appearanceApplication"||M==="appearanceTaskCards"||M==="appearanceTaskForms")&&Ve(!0)},[M]);const Ja=t=>{Ge({type:"category",value:t}),Ns(""),Re(!0)},Yt=[{key:"general",label:"General",icon:e.jsx(un,{size:14}),section:"general"},{key:"taxonomy",label:"Taxonomy",icon:e.jsx(ha,{size:14}),section:"taxonomy"},{key:"integrations",label:"Integrations",icon:e.jsx(mn,{size:14}),section:"integrations"},{key:"mcp",label:"MCP",icon:e.jsx(Ye,{size:14}),section:"mcp"}],Xa=[{key:"appearanceApplication",label:"Application",section:"appearance-application"},{key:"appearanceTaskCards",label:"Task cards",section:"appearance-task-cards"},{key:"appearanceTaskForms",label:"Task forms",section:"appearance-task-forms"}],it=(t,a)=>{te(t),g?.(a)},Ya=()=>e.jsxs("div",{className:s.settingGroup,children:[e.jsx("h3",{className:`${s.settingTitle} tf-heading-section`,children:"Theme"}),e.jsx("div",{className:s.buttonGrid,children:sa.map(t=>kt(t,v,Da))})]}),Za=()=>e.jsxs("div",{className:s.settingGroup,children:[e.jsx("h3",{className:`${s.settingTitle} tf-heading-section`,children:"Theme Defaults"}),e.jsx("div",{className:s.buttonGrid,children:sa.map(t=>kt(t,w,async a=>{const d=await W(a);U({type:d?"success":"error",message:d?"Global theme saved.":"Failed to save global theme."})}))})]}),Qa=()=>e.jsxs("div",{className:s.settingGroup,children:[e.jsx("h3",{className:`${s.settingTitle} tf-heading-section`,children:"Task Form"}),e.jsxs("label",{className:s.archiveToggle,children:[e.jsx("input",{type:"checkbox",checked:H,onChange:async t=>{if(!p)return;const a=await p(t.target.checked);U({type:a?"success":"error",message:a?"Checklist dropdown setting saved.":"Failed to save checklist dropdown setting."})},disabled:!p}),e.jsx("span",{children:"Enable checklist dropdown in task form"})]})]});return e.jsx("div",{className:s.settingsTab,children:e.jsxs("div",{className:s.settingsLayout,children:[e.jsxs("aside",{className:s.settingsSidebar,children:[e.jsx("div",{className:s.settingsSidebarHeader,children:"Sections"}),e.jsxs("div",{className:`${s.settingsSidebarNav} tf-scrollbar tf-scrollbar--track-transparent tf-scrollbar--compact`,children:[Yt.filter(t=>t.key==="general").map(t=>e.jsxs("button",{className:`${s.settingsSidebarBtn} ${M===t.key?s.settingsSidebarBtnActive:""}`,onClick:()=>it(t.key,t.section),children:[t.icon,e.jsx("span",{children:t.label})]},t.key)),e.jsxs("div",{className:s.settingsSidebarGroup,children:[e.jsxs("button",{className:`${s.settingsSidebarBtn} ${s.settingsSidebarGroupBtn} ${M==="appearanceApplication"||M==="appearanceTaskCards"||M==="appearanceTaskForms"?s.settingsSidebarBtnActive:""}`,onClick:()=>Ve(t=>!t),"aria-expanded":Gs,"aria-controls":"settings-appearance-nav",children:[e.jsx(ct,{size:14}),e.jsx("span",{className:s.settingsSidebarGroupLabel,children:"Appearance"}),e.jsx("span",{className:s.settingsSidebarGroupChevron,children:Gs?e.jsx(bs,{size:14}):e.jsx(he,{size:14})})]}),Gs&&e.jsx("div",{id:"settings-appearance-nav",className:s.settingsSidebarSubnav,children:Xa.map(t=>e.jsx("button",{className:`${s.settingsSidebarSubBtn} ${M===t.key?s.settingsSidebarBtnActive:""}`,onClick:()=>it(t.key,t.section),children:e.jsx("span",{children:t.label})},t.key))})]}),Yt.filter(t=>t.key!=="general").map(t=>e.jsxs("button",{className:`${s.settingsSidebarBtn} ${M===t.key?s.settingsSidebarBtnActive:""}`,onClick:()=>it(t.key,t.section),children:[t.icon,e.jsx("span",{children:t.label})]},t.key))]})]}),e.jsxs("div",{className:s.settingsContent,children:[Be&&e.jsxs("div",{className:`${s.settingsToast} ${Be.type==="success"?s.settingsToastSuccess:s.settingsToastError}`,children:[Be.type==="success"?e.jsx(me,{size:14}):e.jsx(fe,{size:14}),e.jsx("span",{children:Be.message})]}),M==="general"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:s.settingGroup,children:[e.jsxs("div",{className:`${s.settingsTabs} tf-scrollbar tf-scrollbar--track-transparent tf-scrollbar--compact`,children:[e.jsx("button",{className:`${s.settingsTabBtn} ${re==="project"?s.settingsTabBtnActive:""}`,onClick:()=>as("project"),children:"Project"}),e.jsx("button",{className:`${s.settingsTabBtn} ${re==="global"?s.settingsTabBtnActive:""}`,onClick:()=>as("global"),children:"Global"})]}),re==="project"&&e.jsx("div",{className:s.pathInputGroup,style:{justifyContent:"flex-end"},children:e.jsx("button",{onClick:async()=>{if(!window.confirm("Reset project Theme and Backups to global defaults?"))return;const a=await m();U({type:a?"success":"error",message:a?"Project settings reset to global.":"Failed to reset project settings."})},className:s.copyBtn,children:"Reset to Global"})})]}),re==="project"&&e.jsxs("div",{className:s.settingGroup,children:[e.jsxs("div",{className:s.pathInputGroup,children:[e.jsxs("label",{className:s.label,style:{minWidth:"110px"},children:[ts==="operations"?"Mission":"Project"," name:"]}),e.jsx("input",{className:s.input,type:"text",value:mt,onChange:t=>ht(t.target.value),placeholder:ts==="operations"?"Mission name":"Project name"})]}),e.jsxs("div",{className:s.pathInputGroup,children:[e.jsx("label",{className:s.label,style:{minWidth:"110px"},children:"Description:"}),e.jsx("textarea",{className:s.textarea,value:xt,onChange:t=>gt(t.target.value),placeholder:ts==="operations"?"Mission description (optional)":"Project description (optional)",rows:3})]}),e.jsx("div",{className:s.pathInputGroup,style:{justifyContent:"flex-end"},children:e.jsx("button",{onClick:async()=>{if(!Ms)return;const t=await Ms({workspaceId:se?.workspaceId,name:mt,description:xt});U({type:t.success?"success":"error",message:t.success?`${ts==="operations"?"Mission":"Project"} profile saved.`:t.error||"Failed to save workspace profile."})},className:s.copyBtn,disabled:!Ms,children:"Save"})})]}),re==="project"&&e.jsx("div",{className:s.settingGroup,children:ut&&e.jsxs(e.Fragment,{children:[e.jsx("h3",{className:s.settingTitle,children:"Backup"}),e.jsxs("label",{className:s.archiveToggle,children:[e.jsx("input",{type:"checkbox",checked:B,onChange:async t=>{const a=await n(t.target.checked);U({type:a?"success":"error",message:a?"Project backup setting saved.":"Failed to save project backup setting."})}}),e.jsx("span",{children:"Enable automatic JSON backup (`.taskforce/tasks.json`)"})]})]})}),re==="global"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:s.settingGroup,children:ut&&e.jsxs(e.Fragment,{children:[e.jsx("h3",{className:s.settingTitle,children:"Backup"}),e.jsxs("label",{className:s.archiveToggle,children:[e.jsx("input",{type:"checkbox",checked:A,onChange:async t=>{const a=await c(t.target.checked);U({type:a?"success":"error",message:a?"Global backup default saved.":"Failed to save global backup default."})}}),e.jsx("span",{children:"Enable global JSON backup default"})]})]})}),e.jsxs("div",{className:s.settingGroup,children:[e.jsx("h3",{className:s.settingTitle,children:"Regional"}),e.jsxs("div",{className:s.pathInputGroup,children:[e.jsx("label",{className:s.label,style:{minWidth:"110px"},children:"Calendar start:"}),e.jsxs("select",{className:s.input,value:R,onChange:async t=>{const a=t.target.value,d=await I(a);U({type:d?"success":"error",message:d?`Week start saved (${a==="sunday"?"Sunday":"Monday"}).`:"Failed to save week start."})},style:{maxWidth:"220px"},children:[e.jsx("option",{value:"sunday",children:"Sunday"}),e.jsx("option",{value:"monday",children:"Monday"})]})]}),e.jsxs("div",{className:s.pathInputGroup,children:[e.jsx("label",{className:s.label,style:{minWidth:"110px"},children:"Language:"}),e.jsx("select",{className:s.input,value:O,onChange:async t=>{const a=t.target.value;if(!y)return;const d=await y(a);U({type:d?"success":"error",message:d?`Language saved (${a}).`:"Failed to save language."})},style:{maxWidth:"220px"},disabled:!y,children:j.map(t=>e.jsx("option",{value:t,children:t},t))})]})]}),e.jsxs("div",{className:s.settingGroup,children:[e.jsx("h3",{className:s.settingTitle,children:"Keyboard Shortcut"}),e.jsxs("div",{className:s.pathInputGroup,children:[e.jsxs("div",{className:s.shortcutInputWrapper,children:[e.jsx(pn,{size:16,className:s.inputIcon}),e.jsx("input",{type:"text",value:S,onChange:t=>$(t.target.value),placeholder:"e.g. Alt+T, Ctrl+Shift+K",className:`${s.input} ${s.shortcutInput}`})]}),e.jsx("button",{onClick:async()=>{const t=await K();U({type:t?"success":"error",message:t?"Global shortcut saved.":"Failed to save global shortcut."})},className:`${s.saveSettingsBtn} ${s.saveSettingsBtnWrapper}`,children:"Save"})]}),e.jsxs("p",{className:s.settingHelper,children:["Supported modifiers: Alt, Option, Ctrl, Shift, Meta (Cmd). Example: ",e.jsx("code",{children:"Alt+T"})," or ",e.jsx("code",{children:"Ctrl+Shift+L"}),"."]})]})]}),re==="project"&&ke==="cloud"&&e.jsxs("div",{className:s.settingGroup,children:[e.jsx("h3",{className:s.settingTitle,children:"Danger Zone"}),Na?Ds?Ca!=="owner"?e.jsx("p",{className:s.settingHelper,children:"Only workspace owners can delete a workspace."}):e.jsx("div",{className:s.pathInputGroup,children:e.jsxs("button",{className:s.destructiveBtn,onClick:async()=>{if(!Ps)return;const t=String(ie||"").trim();if(!t||t==="default"){U({type:"error",message:"A non-default workspace is required for deletion."});return}const a=String(_e||"").trim(),d=window.prompt(`Type "${a}" to permanently delete this workspace.`);if(d===null)return;if(d.trim()!==a){U({type:"error",message:"Workspace name confirmation did not match."});return}const N=await Ps(t);if(!N.success){U({type:"error",message:N.error||"Failed to delete workspace."});return}const k=Array.isArray(N.cleanupWarnings)?N.cleanupWarnings.length:0;U({type:k>0?"error":"success",message:k>0?`Workspace deleted with ${k} cleanup warning(s).`:"Workspace deleted."})},disabled:!Ps,children:[e.jsx(ze,{size:14,style:{marginRight:8}}),"Delete Workspace"]})}):e.jsx("p",{className:s.settingHelper,children:"Sign in to manage workspace deletion."}):e.jsx("p",{className:s.settingHelper,children:"Workspace deletion is available in cloud runtime only."})]})]}),M==="appearanceApplication"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:s.settingGroup,children:e.jsxs("div",{className:`${s.settingsTabs} tf-scrollbar tf-scrollbar--track-transparent tf-scrollbar--compact`,children:[e.jsx("button",{className:`${s.settingsTabBtn} ${re==="project"?s.settingsTabBtnActive:""}`,onClick:()=>as("project"),children:"Project"}),e.jsx("button",{className:`${s.settingsTabBtn} ${re==="global"?s.settingsTabBtnActive:""}`,onClick:()=>as("global"),children:"Global"})]})}),re==="project"?Ya():Za()]}),M==="appearanceTaskCards"&&e.jsxs("div",{className:s.settingGroup,children:[e.jsx("h3",{className:`${s.settingTitle} tf-heading-section`,children:"Task Cards"}),e.jsxs("label",{className:s.archiveToggle,children:[e.jsx("input",{type:"checkbox",checked:P,onChange:async t=>{if(!G)return;const a=await G(t.target.checked);U({type:a?"success":"error",message:a?"Task card status label setting saved.":"Failed to save task card status label setting."})},disabled:!G}),e.jsx("span",{children:"Show status label"})]})]}),M==="appearanceTaskForms"&&Qa(),M==="commands"&&e.jsx(e.Fragment,{children:e.jsxs("div",{className:s.settingGroup,children:[e.jsx("div",{className:s.settingTitleRow,children:e.jsx("h3",{className:s.settingTitle,children:"Command Workflows"})}),e.jsx("p",{className:`${s.settingsHint} ${s.marginBottom12}`,children:"Export standard workflows to your project to verify and commit them."}),e.jsxs("div",{className:`${s.exportRow} ${s.exportRowGrid}`,children:[e.jsxs("div",{className:s.settingGroup,children:[e.jsx("h4",{className:`${s.settingSubtitle} ${s.settingSubtitleCustom}`,children:"Target Environment"}),e.jsx("div",{className:s.buttonGrid,children:Ka.map(t=>e.jsxs("button",{onClick:()=>Ta(t.id),className:`${s.themeBtn} ${pt===t.id?s.activeTheme:""} ${s.capitalize}`,children:[qa(t.icon),t.name]},t.id))})]}),e.jsxs("div",{className:s.exportItem,children:[e.jsxs("div",{className:s.labelGroupFlex,children:[e.jsx("label",{className:s.label,children:"Workflows"}),e.jsxs("span",{className:s.settingDescription,children:["Destination: ",e.jsx("code",{className:s.code,children:x})]})]}),e.jsxs("div",{className:s.workflowList,children:[e.jsxs("div",{className:s.workflowActions,children:[e.jsx("button",{onClick:Ia,className:s.textBtn,children:"All"}),e.jsx("button",{onClick:La,className:s.textBtn,children:"None"})]}),e.jsx("div",{className:s.workflowGrid,children:Ie.length===0?e.jsxs("div",{className:s.emptyState,children:["No workflow templates found.",e.jsx("button",{onClick:()=>$a?.(!0),className:s.secondaryBtn,style:{marginTop:"8px"},children:"Retry Fetch"})]}):Ie.map(t=>e.jsxs("label",{className:s.checkboxLabel,children:[e.jsx("input",{type:"checkbox",checked:We.includes(t),onChange:()=>_a(t)}),t]},t))})]}),e.jsxs("button",{className:`${s.secondaryHeaderBtn} ${s.marginTop12}`,onClick:()=>Sa?.(pt,We),disabled:C==="workflows"||We.length===0,children:[C==="workflows"?e.jsx(we,{size:14,className:s.spinner}):e.jsx(ma,{size:14}),"Export Selected (",We.length,")"]})]})]}),D&&e.jsxs("div",{className:`${D.type==="success"?s.successMessage:s.errorMessage} ${s.marginTop12}`,children:[D.type==="success"?e.jsx(me,{size:14}):e.jsx(fe,{size:14}),D.message]})]})}),M==="initiatives"&&e.jsxs("div",{className:s.settingGroup,children:[e.jsxs("div",{className:s.settingTitleRow,children:[e.jsx("h3",{className:s.settingTitle,children:"Initiative Templates"}),e.jsx("button",{className:s.copyBtn,onClick:()=>{Es?.()},children:"Refresh"})]}),e.jsx("p",{className:`${s.settingsHint} ${s.marginBottom12}`,children:"Create launch, migration, or incident initiatives from reusable templates."}),e.jsxs("div",{className:s.exportItem,children:[e.jsx("label",{className:s.label,children:"Template"}),e.jsx("select",{className:s.input,value:Ue,onChange:t=>{const a=t.target.value;bt(a)},children:Le.map(t=>e.jsx("option",{value:t.id,children:t.name},t.id))})]}),e.jsxs("div",{className:`${s.exportItem} ${s.marginTop12}`,children:[e.jsx("label",{className:s.label,children:"Initiative Title"}),e.jsx("input",{className:s.input,placeholder:"e.g. Taskforce Private Beta Launch",value:Rs,onChange:t=>Aa(t.target.value)})]}),e.jsxs("button",{className:`${s.secondaryHeaderBtn} ${s.marginTop12}`,disabled:yt||!Ue||!Rs.trim()||!zs,onClick:async()=>{if(!zs)return;vt(!0);const t=await zs({templateId:Ue,title:Rs.trim()});vt(!1),U({type:t.success?"success":"error",message:t.success?"Initiative created from template.":t.error||"Failed to create initiative."})},children:[yt?e.jsx(we,{size:14,className:s.spinner}):e.jsx(ys,{size:14}),"Create Initiative"]})]}),M==="agents"&&e.jsx("div",{className:s.settingGroup,children:e.jsxs("div",{children:[e.jsx("h4",{className:s.settingSubTitle,children:"Registered AI Profiles"}),e.jsx("p",{className:`${s.settingsHint} ${s.marginBottom12}`,children:"AI agents register profiles when connecting via MCP. Merge duplicates created when a token was lost."}),Os&&e.jsxs("div",{className:s.settingsHint,children:[e.jsx(we,{size:13,className:s.spinner})," Loading profiles…"]}),!Os&&Fs.length===0&&e.jsx("div",{className:s.settingsHint,children:"No AI profiles registered yet."}),!Os&&Fs.length>0&&(()=>{const t=new Map;for(const a of Fs){const d=a.name.toLowerCase();t.has(d)||t.set(d,[]),t.get(d).push(a)}return e.jsx("div",{className:s.aiProfilesList,children:Array.from(t.entries()).map(([,a])=>e.jsxs("div",{className:`${s.aiProfileGroup} ${a.length>1?s.aiProfileGroupDuplicate:""}`,children:[e.jsxs("div",{className:s.aiProfileGroupHeader,children:[e.jsx(ia,{size:13,style:{color:a[0].color}}),e.jsx("span",{className:s.aiProfileName,children:a[0].name}),a.length>1&&e.jsxs("span",{className:s.aiProfileDuplicateBadge,children:[e.jsx(fe,{size:11})," ",a.length," duplicates"]})]}),e.jsxs("div",{className:s.settingsHint,style:{marginTop:6},children:["@",a[0].username,a[0].role?` · ${a[0].role}`:""]}),a[0].description&&e.jsx("div",{className:s.settingsHint,style:{marginTop:4},children:a[0].description}),(a[0].provider||a[0].model)&&e.jsx("div",{className:s.settingsHint,style:{marginTop:4},children:[a[0].provider,a[0].model].filter(Boolean).join(" · ")}),a.length>1&&e.jsxs("div",{className:s.aiProfileMergeSection,children:[a.map(d=>e.jsxs("div",{className:s.aiProfileMergeRow,children:[e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[e.jsx("span",{className:s.aiProfileIdChip,children:d.id}),e.jsxs("span",{className:s.settingsHint,children:["@",d.username]})]}),xe?.keepId!==d.id&&e.jsx("button",{className:s.secondaryHeaderBtn,title:"Keep this profile, merge others into it",onClick:()=>{const N=a.find(k=>k.id!==d.id)?.id;N&&Hs({keepId:d.id,mergeId:N})},children:"Keep this"}),xe?.keepId===d.id&&e.jsx("span",{className:s.aiProfileKeepBadge,children:"✓ keeping"})]},d.id)),xe&&a.some(d=>d.id===xe.keepId)&&e.jsxs("div",{className:s.aiProfileMergeActions,children:[e.jsxs("button",{className:s.dangerBtn,onClick:()=>Pa(xe.keepId,xe.mergeId),children:["Merge (keep ",xe.keepId.slice(-6),", delete ",xe.mergeId.slice(-6),")"]}),e.jsx("button",{className:s.secondaryHeaderBtn,onClick:()=>Hs(null),children:"Cancel"})]})]})]},a[0].id))})})(),ns&&e.jsxs("div",{className:`${ns.type==="success"?s.successMessage:s.errorMessage} ${s.marginTop12}`,children:[ns.type==="success"?e.jsx(me,{size:14}):e.jsx(fe,{size:14}),ns.message]})]})}),M==="taxonomy"&&e.jsxs("div",{className:`${s.settingGroup} ${s.flex1} ${s.flexCol}`,children:[e.jsx("h3",{className:s.settingTitle,children:"Taxonomy & Classification"}),e.jsx("p",{className:s.settingsHint,children:"Configure categories, task types, and custom classification systems."}),e.jsx(zl,{taxonomies:$s,onUpdateTaxonomies:_s,onApplySystemTaxonomyPack:fa,taxonomyDisplayLabels:Ts,onUpdateTaxonomyDisplayLabels:ja,categories:Cs,pathValidation:ws,onUpdateCategory:Te,onRemoveCategory:Ze,onSaveCategory:Qe,onAddPath:es,onRemovePath:Ss,onUpdateCategoryIcon:je,onUpdateCategoryColor:f,onBrowseFolders:Ja,types:q,onSaveType:Y,onRemoveType:Fe,onUpdateType:Oe,priorities:ba,onUpdatePriorities:ya,onAnalyzeSystemTaxonomyPack:va,manualComplexityEnabled:L,onManualComplexityEnabledChange:async t=>{const a=await F(t);U({type:a?"success":"error",message:a?"Project complexity setting saved.":"Failed to save project complexity setting."})},initialTab:h==="categories"||h==="types"||h==="priorities"?h:void 0})]}),M==="mcp"&&e.jsxs("div",{className:s.settingsGroup,children:[Ra&&e.jsxs("div",{className:s.settingsTabs,children:[e.jsx("button",{className:`${s.settingsTabBtn} ${os==="cloud"?s.settingsTabBtnActive:""}`,onClick:()=>Us("cloud"),children:"Cloud MCP"}),e.jsx("button",{className:`${s.settingsTabBtn} ${os==="local"?s.settingsTabBtnActive:""}`,onClick:()=>Us("local"),children:"Local MCP"})]}),st&&e.jsx(e.Fragment,{children:Ht?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:`${s.settingGroup} ${s.marginTop16}`,children:[e.jsxs("div",{className:s.settingLabelGroup,children:[e.jsx("h3",{className:s.settingTitle,children:"OAuth Connector Setup"}),e.jsx("span",{className:s.settingDescription,children:de==="chatgpt-desktop"?"ChatGPT Desktop uses the Taskforce OAuth connector flow instead of a personal MCP token.":"Claude Desktop uses the Taskforce OAuth connector flow instead of a personal MCP token."})]}),e.jsx("div",{className:`${xs?s.successMessage:s.settingHelper} ${s.marginTop12}`,children:xs?e.jsxs(e.Fragment,{children:[e.jsx(me,{size:14}),e.jsxs("div",{children:[e.jsx("div",{children:"Connector already authorized for this workspace."}),e.jsxs("div",{className:s.settingHelper,children:["Last used ",xs.lastUsedAt?new Date(xs.lastUsedAt).toLocaleString():"not yet"]})]})]}):"No active connector authorization for this workspace yet."}),e.jsx("div",{className:s.settingDescription,style:{marginTop:"12px"},children:"Use the server URL above in your client, then finish the OAuth authorization flow from the Integrations tab."}),e.jsx("div",{style:{display:"flex",justifyContent:"flex-end",width:"100%",marginTop:"12px"},children:e.jsx("button",{className:s.copyBtn,onClick:()=>te("integrations"),children:"Open Integrations"})})]}),e.jsxs("div",{className:`${s.settingGroup} ${s.marginTop16}`,children:[e.jsxs("div",{className:`${s.codeBlockWrapper} ${s.codeBlockWrapperCustom} ${s.marginTop12}`,style:{minHeight:"260px"},children:[e.jsxs("div",{className:s.codeHeader,children:[e.jsx("span",{className:s.codeLabel,children:"Cloud MCP Configuration"}),e.jsxs("div",{className:s.codeHeaderActions,children:[e.jsx("select",{className:s.settingInput,value:de,onChange:t=>Pt(t.target.value),"aria-label":"MCP client",style:{width:"auto",minWidth:"170px",padding:"6px 12px",fontSize:"12px",borderRadius:"8px"},children:la.map(t=>e.jsx("option",{value:t.id,disabled:t.disabled,children:t.label},t.id))}),e.jsx("button",{className:`${s.copyBtn} ${ge==="full"?s.copyBtnActive:""}`,onClick:Kt,title:"Copy full configuration file",children:ge==="full"?e.jsx(me,{size:14}):e.jsx(ot,{size:14})})]})]}),e.jsx("pre",{className:s.codeBlock,children:e.jsx("code",{children:hs?tt(De,hs,V.rootKey||"mcpServers",V.wrapperKeys||[]):Vt(V.renderedText||"")})})]}),e.jsxs("div",{className:`${s.codeBlockWrapper} ${s.marginTop12}`,children:[e.jsx("div",{className:s.codeHeader,children:e.jsx("span",{className:s.codeLabel,children:V.instructionLabel})}),e.jsx("div",{style:{padding:"16px 20px"},children:e.jsx("div",{className:s.settingDescription,children:V.instructionText})})]})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:`${s.settingGroup} ${s.marginTop16}`,children:[e.jsxs("div",{className:s.settingLabelGroup,children:[e.jsx("h3",{className:s.settingTitle,children:"Generate Token"}),e.jsx("span",{className:s.settingDescription,children:"Tokens are shown once. Default scopes allow task read/write. Add workspace read if you want config and skills metadata in the client."})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 2fr) minmax(220px, 1fr)",gap:"12px",alignItems:"end"},children:[e.jsxs("div",{className:s.settingsItem,children:[e.jsx("div",{className:s.settingLabelGroup,children:e.jsx("span",{className:s.settingDescription,children:"Token Name"})}),e.jsx("input",{type:"text",className:s.settingInput,placeholder:"Cursor on MacBook",value:Lt,onChange:t=>Ys(t.target.value)})]}),e.jsxs("div",{className:s.settingsItem,children:[e.jsx("div",{className:s.settingLabelGroup,children:e.jsx("span",{className:s.settingDescription,children:"Expiry (Optional)"})}),e.jsx("input",{type:"date",className:`${s.settingInput} ${s.taskFormDateInput}`,value:Zs,onChange:t=>Bt(t.target.value)})]})]}),e.jsxs("div",{className:`${s.settingsItem} ${s.marginTop12}`,children:[e.jsx("div",{className:s.settingLabelGroup,children:e.jsx("span",{className:s.settingDescription,children:"Scopes"})}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"96px repeat(3, minmax(110px, 1fr))",gap:"10px 16px",alignItems:"center"},children:[e.jsx("span",{}),e.jsx("span",{className:s.settingDescription,children:"Tasks"}),e.jsx("span",{className:s.settingDescription,children:"Workspace"}),e.jsx("span",{className:s.settingDescription,style:{opacity:.55},children:"Attachments"}),e.jsx("span",{className:s.settingDescription,children:"Read"}),e.jsx("label",{className:s.checkboxLabel,children:e.jsx("input",{type:"checkbox",className:s.checkboxSmall,checked:qe.includes("tasks:read"),onChange:()=>at("tasks:read")})}),e.jsx("label",{className:s.checkboxLabel,children:e.jsx("input",{type:"checkbox",className:s.checkboxSmall,checked:qe.includes("workspace:read"),onChange:()=>at("workspace:read")})}),e.jsx("label",{className:s.checkboxLabel,style:{opacity:.55},children:e.jsx("input",{type:"checkbox",className:s.checkboxSmall,checked:!1,disabled:!0})}),e.jsx("span",{className:s.settingDescription,children:"Write"}),e.jsx("label",{className:s.checkboxLabel,children:e.jsx("input",{type:"checkbox",className:s.checkboxSmall,checked:qe.includes("tasks:write"),onChange:()=>at("tasks:write")})}),e.jsx("label",{className:s.checkboxLabel,children:e.jsx("input",{type:"checkbox",className:s.checkboxSmall,checked:!1,disabled:!0})}),e.jsx("label",{className:s.checkboxLabel,style:{opacity:.55},children:e.jsx("input",{type:"checkbox",className:s.checkboxSmall,checked:!1,disabled:!0})})]})]})]}),e.jsxs("div",{className:`${s.settingGroup} ${s.marginTop16}`,children:[e.jsx("div",{className:s.settingHelper,children:"Generated tokens are only shown once. Copy the token before leaving this page."}),(()=>{const t=ps?.type==="error"?ps.message:null,a=t||(ge==="token"?"Copied to clipboard":J||"");return e.jsx("div",{style:{display:"flex",gap:"8px",alignItems:"stretch"},children:e.jsx("div",{className:s.codeBlockWrapper,style:{flex:1,cursor:J?"pointer":"default"},onClick:()=>J&&gs(J,"token"),role:J?"button":void 0,tabIndex:J?0:-1,onKeyDown:d=>{J&&(d.key==="Enter"||d.key===" ")&&(d.preventDefault(),gs(J,"token"))},title:J?ge==="token"?"Token copied":"Click to copy token":void 0,children:e.jsx("pre",{className:s.codeBlock,style:{textAlign:"center",color:t?"var(--status-danger-strong, #f87171)":void 0},children:e.jsx("code",{children:a})})})})})()]}),e.jsxs("div",{className:`${s.settingGroup} ${s.marginTop16}`,children:[e.jsxs("div",{className:`${s.codeBlockWrapper} ${s.codeBlockWrapperCustom} ${s.marginTop12}`,style:{minHeight:"260px"},children:[e.jsxs("div",{className:s.codeHeader,children:[e.jsx("span",{className:s.codeLabel,children:"Cloud MCP Configuration"}),e.jsxs("div",{className:s.codeHeaderActions,children:[e.jsx("select",{className:s.settingInput,value:de,onChange:t=>Pt(t.target.value),"aria-label":"MCP client",style:{width:"auto",minWidth:"170px",padding:"6px 12px",fontSize:"12px",borderRadius:"8px"},children:la.map(t=>e.jsx("option",{value:t.id,disabled:t.disabled,children:t.label},t.id))}),e.jsxs("button",{className:s.copyBtn,onClick:()=>{Wa()},disabled:rs==="create",title:"Generate Token","aria-label":"Generate Token",children:[rs==="create"?e.jsx(we,{size:14,className:s.spinIcon}):e.jsx(ys,{size:14}),e.jsx("span",{children:"GENERATE TOKEN"})]}),e.jsx("button",{className:`${s.copyBtn} ${ge==="full"?s.copyBtnActive:""}`,onClick:Kt,title:"Copy full configuration file",children:ge==="full"?e.jsx(me,{size:14}):e.jsx(ot,{size:14})})]})]}),e.jsx("pre",{className:s.codeBlock,children:e.jsx("code",{children:hs?tt(De,hs,V.rootKey||"mcpServers",V.wrapperKeys||[]):Vt(V.renderedText||"")})})]}),e.jsxs("div",{className:`${s.codeBlockWrapper} ${s.marginTop12}`,children:[e.jsx("div",{className:s.codeHeader,children:e.jsx("span",{className:s.codeLabel,children:V.instructionLabel})}),e.jsx("div",{style:{padding:"16px 20px"},children:e.jsx("div",{className:s.settingDescription,children:V.instructionText})})]})]}),e.jsxs("div",{className:`${s.settingGroup} ${s.marginTop16}`,children:[e.jsxs("div",{className:s.toggleHeading,onClick:()=>St(t=>!t),onKeyDown:t=>{(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),St(a=>!a))},role:"button",tabIndex:0,title:Vs?"Hide connection test":"Show connection test",children:[e.jsx("label",{className:s.label,children:"Test Connection"}),Vs?e.jsx(bs,{size:14}):e.jsx(he,{size:14})]}),Vs&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`${s.settingDescription} ${s.marginTop12}`,children:"Validate that a token works for this workspace before you paste it into your MCP client."}),e.jsxs("div",{className:`${s.settingsItem} ${s.marginTop12}`,children:[e.jsx("div",{className:s.settingLabelGroup,children:e.jsx("span",{className:s.settingDescription,children:"Token to Test"})}),e.jsx("input",{type:"text",className:s.settingInput,placeholder:"tfmcp_xxxxx_replace-me",value:Dt,onChange:t=>{Qs(t.target.value),be(null)}})]}),e.jsxs("div",{className:s.marginTop12,style:{display:"flex",gap:"8px",flexWrap:"wrap",justifyContent:"flex-end"},children:[J&&e.jsx("button",{className:s.copyBtn,onClick:()=>{Qs(J),be(null)},children:"Use Generated Token"}),e.jsxs("button",{className:s.copyBtn,onClick:()=>{Ua()},disabled:Mt,children:[Mt?e.jsx(we,{size:14,className:s.spinIcon}):e.jsx(ys,{size:14}),"Test Connection"]})]}),Z&&e.jsxs("div",{className:`${Z.type==="success"?s.successMessage:s.errorMessage} ${s.marginTop12}`,children:[Z.type==="success"?e.jsx(me,{size:14}):e.jsx(fe,{size:14}),e.jsxs("div",{children:[e.jsx("div",{children:Z.message}),Z.type==="success"&&(Z.workspaceName||Z.workspaceId)&&e.jsxs("div",{className:s.settingHelper,children:["Workspace: ",Z.workspaceName||Z.workspaceId,Z.workspaceId?` (${Z.workspaceId})`:""]}),Z.type==="success"&&Array.isArray(Z.scopes)&&Z.scopes.length>0&&e.jsxs("div",{className:s.settingHelper,children:["Granted scopes: ",Z.scopes.join(", ")]})]})]})]})]}),e.jsxs("div",{className:`${s.settingGroup} ${s.marginTop16}`,children:[e.jsxs("div",{className:s.toggleHeading,onClick:()=>$t(t=>!t),onKeyDown:t=>{(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),$t(a=>!a))},role:"button",tabIndex:0,title:Ks?"Hide workspace tokens":"Show workspace tokens",children:[e.jsx("label",{className:s.label,children:"Your Tokens"}),Ks?e.jsx(bs,{size:14}):e.jsx(he,{size:14})]}),Ks&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`${s.settingDescription} ${s.marginTop12}`,children:"Manage tokens created for this workspace."}),Ma?e.jsx("p",{className:s.settingHelper,children:"Loading tokens…"}):It?e.jsxs("div",{className:s.errorMessage,children:[e.jsx(fe,{size:14}),It]}):qs.length===0?e.jsx("p",{className:s.settingHelper,children:"No MCP tokens yet."}):e.jsx("div",{className:s.settingGroup,children:Fa.map(t=>e.jsxs("div",{className:`${s.settingsItem} ${s.marginTop12}`,style:{padding:"14px 16px",borderRadius:"12px",border:"1px solid var(--border-primary, rgba(255, 255, 255, 0.1))",background:"rgba(255, 255, 255, 0.03)"},children:[e.jsxs("div",{className:s.settingLabelGroup,children:[e.jsxs("div",{className:s.labelGroupFlex,children:[e.jsx("label",{className:s.settingLabel,children:t.name}),e.jsx("span",{className:`${s.configBadge} ${t.status==="revoked"?s.configBadgeRevoked:t.status==="expired"?s.configBadgeExpired:s.configBadgeActive}`,children:t.status})]}),e.jsx("span",{className:s.settingDescription,style:{fontFamily:'"JetBrains Mono", "Fira Code", monospace'},children:t.tokenPrefix}),e.jsxs("span",{className:s.settingDescription,children:["Scopes: ",t.scopes.join(", ")]}),e.jsxs("span",{className:s.settingDescription,children:["Created ",new Date(t.createdAt).toLocaleDateString(),t.lastUsedAt?` · Last used ${new Date(t.lastUsedAt).toLocaleString()}`:" · Never used"]})]}),e.jsxs("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap",justifyContent:"flex-end"},children:[t.status!=="revoked"&&e.jsx("button",{className:s.copyBtn,onClick:()=>{Xt(t.id,"regenerate")},disabled:rs===`regenerate:${t.id}`,children:"Regenerate"}),t.status==="active"&&e.jsx("button",{className:s.copyBtn,onClick:()=>{Xt(t.id,"revoke")},disabled:rs===`revoke:${t.id}`,children:"Revoke"})]})]},t.id))})]})]})]})}),Ga&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`${s.settingGroup} ${s.marginTop16}`,children:e.jsxs("div",{className:s.settingLabelGroup,children:[e.jsx("h3",{className:s.settingTitle,children:"Local MCP"}),e.jsx("span",{className:s.settingDescription,children:"Local MCP runs over stdio and does not require a cloud token. Use this for Codex, Claude Code CLI, Gemini CLI, and similar local MCP clients."})]})}),e.jsxs("div",{className:`${s.codeBlockWrapper} ${s.codeBlockWrapperCustom}`,children:[e.jsxs("div",{className:s.codeHeader,children:[e.jsx("span",{className:s.codeLabel,children:"Local MCP Configuration"}),e.jsx("div",{className:s.codeHeaderActions,children:e.jsx("button",{className:`${s.copyBtn} ${ge==="full"?s.copyBtnActive:""}`,onClick:()=>Ha("full"),title:"Copy full configuration file",children:ge==="full"?e.jsx(me,{size:14}):e.jsx(ot,{size:14})})})]}),e.jsx("pre",{className:s.codeBlock,children:e.jsx("code",{children:(()=>{const{serverId:t,serverConfig:a}=qt();return tt(t,a)})()})})]}),e.jsx("div",{className:`${s.settingGroup} ${s.marginTop12}`,children:e.jsxs("div",{className:s.toggleHeading,onClick:()=>Tt(t=>!t),onKeyDown:t=>{(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),Tt(a=>!a))},role:"button",tabIndex:0,title:"Show advanced MCP install options",children:[e.jsx("label",{className:s.label,children:"Advanced"}),wt?e.jsx(bs,{size:14}):e.jsx(he,{size:14})]})}),wt&&e.jsxs("div",{className:`${s.settingGroup} ${s.marginTop12}`,children:[e.jsxs("div",{className:s.settingLabelGroup,children:[e.jsx("h3",{className:s.settingTitle,children:"Advanced Installation Mode"}),e.jsx("span",{className:s.settingDescription,children:"Global mode is recommended. Local / npx is intended for Taskforce development workflows."})]}),e.jsxs("div",{className:s.buttonGrid,children:[e.jsx("button",{className:`${s.themeBtn} ${Ke?s.activeTheme:""}`,onClick:()=>Ct(!0),children:"Global"}),e.jsx("button",{className:`${s.themeBtn} ${Ke?"":s.activeTheme}`,onClick:()=>Ct(!1),children:"Local / npx (Dev)"})]}),e.jsxs("div",{className:`${s.settingsItem} ${s.marginTop16}`,children:[e.jsxs("div",{className:s.settingLabelGroup,children:[e.jsxs("div",{className:s.labelGroupFlex,children:[e.jsx("label",{className:s.settingLabel,children:"MCP Path Mapping (Host Root)"}),Ls&&!Is&&e.jsx("span",{className:s.configBadge,children:"Server Configured"})]}),e.jsx("span",{className:s.settingDescription,children:"If running in Docker, WSL, or Remote Dev, provide the absolute path to this project as seen by your host OS."})]}),e.jsx("div",{className:s.pathInputWrapper,children:e.jsx("input",{type:"text",className:s.settingInput,placeholder:Ls||"/Users/username/Projects/my-project or C:\\Projects\\my-project",value:Is||"",onChange:t=>wa?.(t.target.value)})})]})]})]})]}),M==="integrations"&&e.jsxs("div",{className:s.settingsGroup,children:[e.jsx("div",{className:s.settingGroup,children:e.jsxs("div",{className:s.settingLabelGroup,children:[e.jsx("h3",{className:s.settingTitle,children:"Integrations"}),e.jsx("span",{className:s.settingDescription,children:"Manage OAuth-based app connectors separately from MCP tokens and local client setup."})]})}),e.jsxs("div",{className:`${s.settingGroup} ${s.marginTop16}`,children:[[{key:"chatgpt",label:"ChatGPT Connector",description:"Use the dedicated MCP host in ChatGPT Apps & Connectors. Taskforce handles OAuth and binds each connector authorization to one workspace.",emptyMessage:"No active ChatGPT connector grant for this workspace yet.",connector:Wt},{key:"claude",label:"Claude Desktop Connector",description:"Use the dedicated MCP host in Claude Desktop Settings > Connectors. Taskforce handles OAuth and binds each connector authorization to one workspace.",emptyMessage:"No active Claude Desktop connector grant for this workspace yet.",connector:Ut}].map(t=>{const a=t.connector;return e.jsxs("div",{className:`${s.settingsItem} ${s.marginTop12}`,style:{padding:"16px",borderRadius:"14px",border:"1px solid var(--border-primary, rgba(255, 255, 255, 0.1))",background:"rgba(255, 255, 255, 0.03)"},children:[e.jsxs("div",{className:s.settingLabelGroup,children:[e.jsxs("div",{className:s.labelGroupFlex,children:[e.jsx("label",{className:s.settingLabel,children:t.label}),e.jsx("span",{className:`${s.configBadge} ${a?s.configBadgeActive:s.configBadgeRevoked}`,children:a?"connected":"not connected"})]}),e.jsx("span",{className:s.settingDescription,children:t.description}),e.jsx("span",{className:s.settingDescription,style:{fontFamily:'"JetBrains Mono", "Fira Code", monospace'},children:et}),a?e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:s.settingDescription,children:["Authorized workspace: ",_e||a.workspaceId]}),e.jsxs("span",{className:s.settingDescription,children:["Granted scopes: ",a.scopes.join(", ")]}),e.jsxs("span",{className:s.settingDescription,children:["Connected ",new Date(a.createdAt).toLocaleString(),a.lastUsedAt?` · Last used ${new Date(a.lastUsedAt).toLocaleString()}`:" · Never used"]})]}):e.jsx("span",{className:s.settingDescription,children:t.emptyMessage})]}),e.jsx("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",flexWrap:"wrap"},children:a&&e.jsxs("button",{className:s.copyBtn,onClick:()=>{Va(a.id)},disabled:Ft===a.id,children:[Ft===a.id?e.jsx(we,{size:14,className:s.spinIcon}):e.jsx(ze,{size:14}),"Disconnect"]})})]},t.key)}),za&&e.jsx("p",{className:`${s.settingHelper} ${s.marginTop12}`,children:"Loading connector grants…"}),Gt&&e.jsxs("div",{className:`${s.errorMessage} ${s.marginTop12}`,children:[e.jsx(fe,{size:14}),Gt]})]})]})]})]})})}export{Jl as TaskSettings};
@@ -1 +1 @@
1
- ._categoryManagerContainer_1ibti_1{display:flex;flex-direction:column;gap:0;height:100%;min-height:0}._pathInputGroupStretch_1ibti_9{align-items:stretch}._emptyStateItalic_1ibti_13{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:40px;text-align:center;border:1px dashed rgba(139,92,246,.2);border-radius:16px;font-style:italic;color:var(--text-secondary);min-height:300px}._emptyStateBox_1ibti_28{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:40px;text-align:center;background:#8b5cf60a;border:1px dashed rgba(139,92,246,.2);border-radius:16px;font-style:italic;color:var(--text-secondary);min-height:200px}._emptyStateBare_1ibti_44{border:none;background:transparent}._emptyStateIcon_1ibti_49{display:block;margin:0 auto 8px;opacity:.5}._taxonomyGrid_1ibti_55{display:grid;grid-template-columns:1fr 1fr;gap:20px}._checkboxRow_1ibti_61{display:flex;gap:24px;margin-top:16px}._checkboxLabel_1ibti_67{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px}._checkboxSmall_1ibti_75{width:16px;height:16px}._flexGap8_1ibti_80{display:flex;gap:8px}._optionOrderButtons_1ibti_85{display:flex;align-items:center;gap:6px;margin-left:12px}._addTaxonomyBtnSmall_1ibti_92{display:flex;align-items:center;gap:4px;padding:4px 12px;border-radius:6px;font-size:11px;font-weight:500;transition:all .2s;background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer}._addTaxonomyBtnSmall_1ibti_92:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--primary-color)}._taxonomyDrillDown_1oekr_1{display:flex;flex-direction:column;height:100%}._drillDownList_1oekr_7{display:flex;flex-direction:column;gap:24px}._librarySection_1oekr_13{display:flex;flex-direction:column}._libraryLauncher_1oekr_18{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:16px 18px;background:linear-gradient(180deg,var(--surface-panel),var(--bg-secondary));border:1px solid var(--border-subtle);border-radius:12px;color:var(--text-primary);cursor:pointer;text-align:left;transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}._libraryLauncher_1oekr_18:hover{border-color:var(--brand-primary-border);background:linear-gradient(180deg,rgba(139,92,246,.08),var(--bg-secondary));box-shadow:0 0 0 1px #8b5cf61f}._libraryLauncherInfo_1oekr_40{display:flex;align-items:flex-start;gap:12px;min-width:0}._libraryLauncherIcon_1oekr_47{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;color:var(--brand-primary);background:#8b5cf61f;border:1px solid rgba(139,92,246,.18);flex-shrink:0}._libraryLauncherText_1oekr_60{display:flex;flex-direction:column;gap:4px;min-width:0}._libraryLauncherLabel_1oekr_67{font-size:15px;font-weight:700;color:var(--text-primary)}._libraryLauncherSubtext_1oekr_73{font-size:12px;line-height:1.5;color:var(--text-secondary)}._libraryLauncherMeta_1oekr_79{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;font-size:12px;font-weight:600;color:var(--text-secondary)}._drillDownSection_1oekr_89{display:flex;flex-direction:column;gap:8px}._drillDownSectionHeader_1oekr_95{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}._drillDownSectionTitle_1oekr_102{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin:0}._drillDownItem_1oekr_111{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:8px;cursor:pointer;text-align:left;transition:all .2s;width:100%;color:var(--text-primary)}._drillDownItemAction_1oekr_126{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;background:transparent;border:none;color:inherit;cursor:pointer;padding:0;text-align:left}._drillDownItem_1oekr_111:hover{background:var(--bg-hover);border-color:var(--border-primary)}._drillDownItemDimmed_1oekr_145{opacity:.55}._drillDownItemDimmed_1oekr_145:hover{opacity:.75}._drillDownItemInfo_1oekr_153{display:flex;align-items:center;gap:12px}._drillDownItemText_1oekr_159{display:flex;flex-direction:column;gap:2px}._drillDownItemLabel_1oekr_165{font-weight:500;font-size:14px}._drillDownItemSubtext_1oekr_170{font-size:12px;color:var(--text-muted)}._systemIcon_1oekr_175{color:var(--text-secondary)}._chevron_1oekr_179{color:var(--text-muted);opacity:.5}._orderButtons_1oekr_184{display:flex;align-items:center;gap:6px;margin-left:12px}._drillDownItem_1oekr_111:hover ._chevron_1oekr_179{opacity:1}._createOverlay_1oekr_195{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}._createDialog_1oekr_209{background:var(--bg-secondary-alt);border:1px solid var(--border-primary);border-radius:12px;padding:24px;width:400px;box-shadow:0 20px 40px #0003}._createDialogTitle_1oekr_218{margin:0 0 20px;font-size:18px;font-weight:600}._inputGroup_1oekr_224{margin-bottom:20px}._dialogActions_1oekr_228{display:flex;justify-content:flex-end;gap:12px}._createSubmit_1oekr_234,._createCancel_1oekr_238{padding:8px 16px}._taxonomyDetailView_1oekr_242{display:flex;flex-direction:column;height:100%;gap:20px}._detailHeader_1oekr_249{display:flex;align-items:center;padding-bottom:20px;border-bottom:1px solid var(--border-subtle);margin-bottom:4px}._taxonomyBreadcrumbs_1oekr_257{display:flex;align-items:center;gap:10px}._breadcrumbPrev_1oekr_263{background:#ffffff0d;border:1px solid var(--border-subtle);color:var(--text-secondary);font-size:13px;font-weight:600;cursor:pointer;padding:4px 10px;border-radius:6px;display:flex;align-items:center;transition:all .2s}._breadcrumbPrev_1oekr_263:hover{color:var(--text-primary);background:#8b5cf61a;border-color:#8b5cf64d;transform:translate(-2px)}._breadcrumbIcon_1oekr_284{margin-right:6px}._breadcrumbDivider_1oekr_288{color:var(--text-muted);opacity:.5}._breadcrumbActive_1oekr_293{margin:0;font-size:18px;font-weight:700;color:var(--text-primary);letter-spacing:-.01em}._detailContent_1oekr_301{flex:1;overflow-y:auto}._libraryContainer_1dwmv_1{display:flex;flex-direction:column;gap:20px}._introCard_1dwmv_7{display:flex;flex-direction:column;gap:8px;padding:18px 20px;border-radius:12px;border:1px solid var(--border-subtle);background:linear-gradient(180deg,var(--surface-panel),var(--bg-secondary))}._eyebrow_1dwmv_17{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary)}._introTitle_1dwmv_28{margin:0;font-size:20px;font-weight:700;color:var(--text-primary)}._introCopy_1dwmv_35{margin:0;font-size:13px;line-height:1.55;color:var(--text-secondary);max-width:70ch}._prototypeNotice_1dwmv_43{margin:0;font-size:12px;color:var(--text-muted)}._libraryGrid_1dwmv_49{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.95fr);gap:20px;align-items:start}._packList_1dwmv_56{display:flex;flex-direction:column;gap:12px}._packCard_1dwmv_62{display:flex;flex-direction:column;gap:14px;padding:16px;border-radius:12px;border:1px solid var(--border-subtle);background:var(--bg-secondary);transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}._packCardActive_1dwmv_73{border-color:var(--brand-primary-border);background:linear-gradient(180deg,rgba(139,92,246,.08),var(--bg-secondary));box-shadow:0 0 0 1px #8b5cf61f}._packHeader_1dwmv_79{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}._packHeaderText_1dwmv_86{display:flex;flex-direction:column;gap:6px;min-width:0}._packTitleRow_1dwmv_93{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._packTitle_1dwmv_93{margin:0;font-size:16px;font-weight:700;color:var(--text-primary)}._packBadge_1dwmv_107{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;border:1px solid rgba(37,228,207,.25);background:#25e4cf1a;color:#7ff5e7;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}._packDescription_1dwmv_122{margin:0;font-size:13px;line-height:1.5;color:var(--text-secondary)}._packBestFor_1dwmv_129{margin:0;font-size:12px;line-height:1.5;color:var(--text-muted)}._packCounts_1dwmv_136,._packTaxonomyPreview_1dwmv_142{display:flex;gap:8px;flex-wrap:wrap}._packTaxonomyChip_1dwmv_148{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;background:#ffffff08;border:1px solid rgba(255,255,255,.05);color:var(--text-primary);font-size:11px;font-weight:600}._packTaxonomyMore_1dwmv_160{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;color:var(--text-muted);font-size:11px;font-weight:600}._packCountChip_1dwmv_170{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:#ffffff0a;border:1px solid var(--border-subtle);color:var(--text-secondary);font-size:11px;font-weight:600}._packActions_1dwmv_183{display:flex;gap:10px;flex-wrap:wrap}._previewPanel_1dwmv_189{display:flex;flex-direction:column;gap:16px;padding:18px;border-radius:14px;border:1px solid var(--border-subtle);background:linear-gradient(180deg,var(--surface-panel),var(--surface-page));position:sticky;top:0}._previewHeader_1dwmv_201{display:flex;flex-direction:column;gap:6px}._previewSummaryRow_1dwmv_207{display:flex;gap:8px;flex-wrap:wrap}._previewTitle_1dwmv_213{margin:0;font-size:18px;font-weight:700;color:var(--text-primary)}._previewBestFor_1dwmv_220{margin:0;font-size:12px;line-height:1.5;color:var(--text-secondary)}._previewSubtext_1dwmv_227{margin:0;font-size:12px;color:var(--text-muted)}._previewSection_1dwmv_233{display:flex;flex-direction:column;gap:10px}._previewSectionTitle_1dwmv_239{margin:0;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary)}._previewList_1dwmv_248{display:flex;flex-direction:column;gap:8px}._previewItem_1dwmv_254{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;background:#ffffff08;border:1px solid rgba(255,255,255,.04)}._previewItemLabel_1dwmv_265{display:inline-flex;align-items:center;gap:8px;min-width:0;font-size:13px;font-weight:600;color:var(--text-primary)}._previewItemMeta_1dwmv_275{flex-shrink:0;font-size:11px;color:var(--text-muted)}._customTaxonomyCard_1dwmv_281{display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:12px;border:1px solid var(--border-subtle);background:#ffffff05}._customTaxonomyHeader_1dwmv_291{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}._customTaxonomyDescription_1dwmv_298{margin:6px 0 0;font-size:13px;line-height:1.5;color:var(--text-secondary)}._customTaxonomyBadges_1dwmv_305{display:flex;flex-wrap:wrap;gap:8px}._customTaxonomyBadge_1dwmv_305{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;border:1px solid var(--border-subtle);background:#ffffff0d;color:var(--text-secondary);font-size:11px;font-weight:600}._applyPanel_1dwmv_324{display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:12px;border:1px solid rgba(37,110,228,.18);background:#256ee414}._applyTitle_1dwmv_334{margin:0;font-size:14px;font-weight:700;color:var(--text-primary)}._applyCopy_1dwmv_341{margin:0;font-size:12px;line-height:1.5;color:var(--text-secondary)}._analysisPanel_1dwmv_348{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:10px;border:1px solid rgba(255,255,255,.08);background:#ffffff0a}._analysisCopy_1dwmv_358{margin:0;font-size:12px;line-height:1.5;color:var(--text-secondary)}._analysisWarning_1dwmv_365{margin:0;font-size:12px;line-height:1.5;color:#ffd08a}._checkboxList_1dwmv_372{display:flex;flex-direction:column;gap:8px}._checkboxLabel_1dwmv_378{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text-primary)}._prototypeResult_1dwmv_386{margin:0;font-size:12px;color:#8ce6d7}._prototypeError_1dwmv_392{color:#ff9e9e}@media(max-width:1100px){._libraryGrid_1dwmv_49{grid-template-columns:1fr}._previewPanel_1dwmv_189{position:static}}
1
+ ._categoryManagerContainer_1ibti_1{display:flex;flex-direction:column;gap:0;height:100%;min-height:0}._pathInputGroupStretch_1ibti_9{align-items:stretch}._emptyStateItalic_1ibti_13{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:40px;text-align:center;border:1px dashed rgba(139,92,246,.2);border-radius:16px;font-style:italic;color:var(--text-secondary);min-height:300px}._emptyStateBox_1ibti_28{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:40px;text-align:center;background:#8b5cf60a;border:1px dashed rgba(139,92,246,.2);border-radius:16px;font-style:italic;color:var(--text-secondary);min-height:200px}._emptyStateBare_1ibti_44{border:none;background:transparent}._emptyStateIcon_1ibti_49{display:block;margin:0 auto 8px;opacity:.5}._taxonomyGrid_1ibti_55{display:grid;grid-template-columns:1fr 1fr;gap:20px}._checkboxRow_1ibti_61{display:flex;gap:24px;margin-top:16px}._checkboxLabel_1ibti_67{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px}._checkboxSmall_1ibti_75{width:16px;height:16px}._flexGap8_1ibti_80{display:flex;gap:8px}._optionOrderButtons_1ibti_85{display:flex;align-items:center;gap:6px;margin-left:12px}._addTaxonomyBtnSmall_1ibti_92{display:flex;align-items:center;gap:4px;padding:4px 12px;border-radius:6px;font-size:11px;font-weight:500;transition:all .2s;background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer}._addTaxonomyBtnSmall_1ibti_92:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--primary-color)}._taxonomyDrillDown_1oekr_1{display:flex;flex-direction:column;height:100%}._drillDownList_1oekr_7{display:flex;flex-direction:column;gap:24px}._librarySection_1oekr_13{display:flex;flex-direction:column}._libraryLauncher_1oekr_18{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:16px 18px;background:linear-gradient(180deg,var(--surface-panel),var(--bg-secondary));border:1px solid var(--border-subtle);border-radius:12px;color:var(--text-primary);cursor:pointer;text-align:left;transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}._libraryLauncher_1oekr_18:hover{border-color:var(--brand-primary-border);background:linear-gradient(180deg,rgba(139,92,246,.08),var(--bg-secondary));box-shadow:0 0 0 1px #8b5cf61f}._libraryLauncherInfo_1oekr_40{display:flex;align-items:flex-start;gap:12px;min-width:0}._libraryLauncherIcon_1oekr_47{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;color:var(--brand-primary);background:#8b5cf61f;border:1px solid rgba(139,92,246,.18);flex-shrink:0}._libraryLauncherText_1oekr_60{display:flex;flex-direction:column;gap:4px;min-width:0}._libraryLauncherLabel_1oekr_67{font-size:15px;font-weight:700;color:var(--text-primary)}._libraryLauncherSubtext_1oekr_73{font-size:12px;line-height:1.5;color:var(--text-secondary)}._libraryLauncherMeta_1oekr_79{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;font-size:12px;font-weight:600;color:var(--text-secondary)}._drillDownSection_1oekr_89{display:flex;flex-direction:column;gap:8px}._drillDownSectionHeader_1oekr_95{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}._drillDownSectionTitle_1oekr_102{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin:0}._drillDownItem_1oekr_111{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:8px;cursor:pointer;text-align:left;transition:all .2s;width:100%;color:var(--text-primary)}._drillDownItemAction_1oekr_126{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;background:transparent;border:none;color:inherit;cursor:pointer;padding:0;text-align:left}._drillDownItem_1oekr_111:hover{background:var(--bg-hover);border-color:var(--border-primary)}._drillDownItemDimmed_1oekr_145{opacity:.55}._drillDownItemDimmed_1oekr_145:hover{opacity:.75}._drillDownItemInfo_1oekr_153{display:flex;align-items:center;gap:12px}._drillDownItemText_1oekr_159{display:flex;flex-direction:column;gap:2px}._drillDownItemLabel_1oekr_165{font-weight:500;font-size:14px}._drillDownItemSubtext_1oekr_170{font-size:12px;color:var(--text-muted)}._systemIcon_1oekr_175{color:var(--text-secondary)}._chevron_1oekr_179{color:var(--text-muted);opacity:.5}._orderButtons_1oekr_184{display:flex;align-items:center;gap:6px;margin-left:12px}._drillDownItem_1oekr_111:hover ._chevron_1oekr_179{opacity:1}._createOverlay_1oekr_195{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}._createDialog_1oekr_209{background:var(--bg-secondary-alt);border:1px solid var(--border-primary);border-radius:12px;padding:24px;width:400px;box-shadow:0 20px 40px #0003}._createDialogTitle_1oekr_218{margin:0 0 20px;font-size:18px;font-weight:600}._inputGroup_1oekr_224{margin-bottom:20px}._dialogActions_1oekr_228{display:flex;justify-content:flex-end;gap:12px}._createSubmit_1oekr_234,._createCancel_1oekr_238{padding:8px 16px}._taxonomyDetailView_1oekr_242{display:flex;flex-direction:column;height:100%;gap:20px}._detailHeader_1oekr_249{display:flex;align-items:center;padding-bottom:20px;border-bottom:1px solid var(--border-subtle);margin-bottom:4px}._taxonomyBreadcrumbs_1oekr_257{display:flex;align-items:center;gap:10px}._breadcrumbPrev_1oekr_263{background:#ffffff0d;border:1px solid var(--border-subtle);color:var(--text-secondary);font-size:13px;font-weight:600;cursor:pointer;padding:4px 10px;border-radius:6px;display:flex;align-items:center;transition:all .2s}._breadcrumbPrev_1oekr_263:hover{color:var(--text-primary);background:#8b5cf61a;border-color:#8b5cf64d;transform:translate(-2px)}._breadcrumbIcon_1oekr_284{margin-right:6px}._breadcrumbDivider_1oekr_288{color:var(--text-muted);opacity:.5}._breadcrumbActive_1oekr_293{margin:0;font-size:18px;font-weight:700;color:var(--text-primary);letter-spacing:-.01em}._detailContent_1oekr_301{flex:1;overflow-y:auto}._libraryContainer_94zm2_1{display:flex;flex-direction:column;gap:20px}._introCard_94zm2_7{display:flex;flex-direction:column;gap:8px;padding:18px 20px;border-radius:12px;border:1px solid var(--border-subtle);background:linear-gradient(180deg,var(--surface-panel),var(--bg-secondary))}._eyebrow_94zm2_17{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary)}._introTitle_94zm2_28{margin:0;font-size:20px;font-weight:700;color:var(--text-primary)}._introCopy_94zm2_35{margin:0;font-size:13px;line-height:1.55;color:var(--text-secondary);max-width:70ch}._prototypeNotice_94zm2_43{margin:0;font-size:12px;color:var(--text-muted)}._libraryGrid_94zm2_49{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.95fr);gap:20px;align-items:start}._packList_94zm2_56{display:flex;flex-direction:column;gap:12px}._packCard_94zm2_62{display:flex;flex-direction:column;gap:14px;padding:16px;border-radius:12px;border:1px solid var(--border-subtle);background:var(--bg-secondary);transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}._packCardInteractive_94zm2_73{cursor:pointer}._packCardInteractive_94zm2_73:hover{border-color:color-mix(in srgb,var(--brand-primary-border) 45%,var(--border-subtle));background:linear-gradient(180deg,rgba(139,92,246,.05),var(--bg-secondary));box-shadow:0 0 0 1px #8b5cf614}._packCardInteractive_94zm2_73:focus-visible{outline:2px solid var(--brand-primary-border);outline-offset:2px}._packCardActive_94zm2_88{border-color:var(--brand-primary-border);background:linear-gradient(180deg,rgba(139,92,246,.08),var(--bg-secondary));box-shadow:0 0 0 1px #8b5cf61f}._packHeader_94zm2_94{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}._packHeaderText_94zm2_101{display:flex;flex-direction:column;gap:6px;min-width:0}._packTitleRow_94zm2_108{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._packTitle_94zm2_108{margin:0;font-size:16px;font-weight:700;color:var(--text-primary)}._packBadge_94zm2_122{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;border:1px solid rgba(37,228,207,.25);background:#25e4cf1a;color:#7ff5e7;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}._packDescription_94zm2_137{margin:0;font-size:13px;line-height:1.5;color:var(--text-secondary)}._packBestFor_94zm2_144{margin:0;font-size:12px;line-height:1.5;color:var(--text-muted)}._packCounts_94zm2_151,._packTaxonomyPreview_94zm2_157{display:flex;gap:8px;flex-wrap:wrap}._packTaxonomyChip_94zm2_163{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;background:#ffffff08;border:1px solid rgba(255,255,255,.05);color:var(--text-primary);font-size:11px;font-weight:600}._packTaxonomyMore_94zm2_175{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;color:var(--text-muted);font-size:11px;font-weight:600}._packCountChip_94zm2_185{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:#ffffff0a;border:1px solid var(--border-subtle);color:var(--text-secondary);font-size:11px;font-weight:600}._packActions_94zm2_198{display:flex;gap:10px;flex-wrap:wrap}._packActionHint_94zm2_204{display:inline-flex;align-items:center;color:var(--text-muted);font-size:12px;font-weight:600}._previewPanel_94zm2_212{display:flex;flex-direction:column;gap:16px;padding:18px;border-radius:14px;border:1px solid var(--border-subtle);background:linear-gradient(180deg,var(--surface-panel),var(--surface-page));position:sticky;top:0}._previewHeader_94zm2_224{display:flex;flex-direction:column;gap:6px}._previewSummaryRow_94zm2_230{display:flex;gap:8px;flex-wrap:wrap}._previewTitle_94zm2_236{margin:0;font-size:18px;font-weight:700;color:var(--text-primary)}._previewBestFor_94zm2_243{margin:0;font-size:12px;line-height:1.5;color:var(--text-secondary)}._previewSubtext_94zm2_250{margin:0;font-size:12px;color:var(--text-muted)}._previewSection_94zm2_256{display:flex;flex-direction:column;gap:10px}._previewSectionTitle_94zm2_262{margin:0;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary)}._previewList_94zm2_271{display:flex;flex-direction:column;gap:8px}._previewItem_94zm2_277{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;background:#ffffff08;border:1px solid rgba(255,255,255,.04)}._previewItemLabel_94zm2_288{display:inline-flex;align-items:center;gap:8px;min-width:0;font-size:13px;font-weight:600;color:var(--text-primary)}._previewItemMeta_94zm2_298{flex-shrink:0;font-size:11px;color:var(--text-muted)}._customTaxonomyCard_94zm2_304{display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:12px;border:1px solid var(--border-subtle);background:#ffffff05}._customTaxonomyHeader_94zm2_314{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}._customTaxonomyDescription_94zm2_321{margin:6px 0 0;font-size:13px;line-height:1.5;color:var(--text-secondary)}._customTaxonomyBadges_94zm2_328{display:flex;flex-wrap:wrap;gap:8px}._customTaxonomyBadge_94zm2_328{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;border:1px solid var(--border-subtle);background:#ffffff0d;color:var(--text-secondary);font-size:11px;font-weight:600}._applyPanel_94zm2_347{display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:12px;border:1px solid rgba(37,110,228,.18);background:#256ee414}._applyTitle_94zm2_357{margin:0;font-size:14px;font-weight:700;color:var(--text-primary)}._applyCopy_94zm2_364{margin:0;font-size:12px;line-height:1.5;color:var(--text-secondary)}._analysisPanel_94zm2_371{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:10px;border:1px solid rgba(255,255,255,.08);background:#ffffff0a}._analysisCopy_94zm2_381{margin:0;font-size:12px;line-height:1.5;color:var(--text-secondary)}._analysisWarning_94zm2_388{margin:0;font-size:12px;line-height:1.5;color:#ffd08a}._checkboxList_94zm2_395{display:flex;flex-direction:column;gap:8px}._checkboxLabel_94zm2_401{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text-primary)}._prototypeResult_94zm2_409{margin:0;font-size:12px;color:#8ce6d7}._prototypeError_94zm2_415{color:#ff9e9e}@media(max-width:1100px){._libraryGrid_94zm2_49{grid-template-columns:1fr}._previewPanel_94zm2_212{position:static}}
@@ -1,4 +1,4 @@
1
- import{r as i,j as e}from"./vendor-react-CKJs5o3c.js";import{t as s}from"./index-xBWLPOEb.js";import{h as R,R as ae,c as le,r as ie,b as ne,k as oe}from"./vendor-icons-QZyhEwgT.js";import"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";import"./vendor-router-BbWMxlnO.js";const re={do:["aliasesText","dispatchDefault","criticalToolsText","contentDefault"],execute:["aliasesText","dispatchDefault","criticalToolsText","contentDefault"]},V=["do","evaluate","collaborate","plan","review","execute"];function w(o){return{description:o.description||"",aliasesText:(o.dispatch?.aliases||[]).join(", "),dispatchDefault:o.dispatch?.default||"",criticalToolsText:(o.compat?.requiredToolsCritical||[]).join(`
1
+ import{r as i,j as e}from"./vendor-react-CKJs5o3c.js";import{t as s}from"./index-YJ4k5QNa.js";import{h as R,R as ae,c as le,r as ie,b as ne,k as oe}from"./vendor-icons-C8EED3Oh.js";import"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";import"./vendor-router-BbWMxlnO.js";const re={do:["aliasesText","dispatchDefault","criticalToolsText","contentDefault"],execute:["aliasesText","dispatchDefault","criticalToolsText","contentDefault"]},V=["do","evaluate","collaborate","plan","review","execute"];function w(o){return{description:o.description||"",aliasesText:(o.dispatch?.aliases||[]).join(", "),dispatchDefault:o.dispatch?.default||"",criticalToolsText:(o.compat?.requiredToolsCritical||[]).join(`
2
2
  `),optionalToolsText:(o.compat?.requiredToolsOptional||[]).join(`
3
3
  `),contentDefault:o.content?.default||""}}function g(o){return o.split(/\n|,/).map(f=>f.trim()).filter(Boolean)}function ce(o){return Array.from(new Set(o.map(f=>f.trim()).filter(Boolean)))}function de(o){const{availableWorkflows:f,onFetchWorkflowTemplate:j,onFetchWorkflowOverrideNames:T,onSaveWorkflowTemplateDraft:k,onResetWorkflowTemplateDraft:v}=o,[c,D]=i.useState(""),[A,b]=i.useState(!1),[C,y]=i.useState(null),[d,m]=i.useState(null),[a,h]=i.useState(null),[r,u]=i.useState(null),[S,W]=i.useState(!1),[P,E]=i.useState(!1),[X,L]=i.useState([]),[H,_]=i.useState(""),[O,K]=i.useState(""),[F,U]=i.useState(""),B=i.useMemo(()=>{const t=V.filter(n=>f.includes(n)),l=f.filter(n=>!V.includes(n)).sort((n,x)=>n.localeCompare(x));return[...t,...l]},[f]);i.useEffect(()=>{!c&&B.length>0&&D(B[0])},[B,c]),i.useEffect(()=>{let t=!1;return(async()=>{if(!T)return;const n=await T();t||L(n)})(),()=>{t=!0}},[T,f]),i.useEffect(()=>{let t=!1;return(async()=>{if(!c||!j)return;b(!0),y(null);const n=await j(c);if(t)return;if(!n){m(null),h(null),y("Unable to load workflow template. Reload Taskforce, and if needed restart the dev/server process."),b(!1);return}const x=n;m(x),h(w(x)),b(!1)})(),()=>{t=!0}},[c,j]);const $=i.useMemo(()=>{if(!a)return[];const t=[];return a.description.trim()||t.push("Description is required."),a.dispatchDefault.trim()||t.push("Dispatch default is required."),g(a.criticalToolsText).length===0&&t.push("At least one critical tool is required."),a.contentDefault.trim()||t.push("Default content cannot be empty."),t},[a]),I=i.useMemo(()=>re[c]||[],[c]),p=t=>I.includes(t),M=i.useMemo(()=>{if(!d||!a)return[];const t=w(d),l=[];return t.description!==a.description&&l.push("description"),t.aliasesText!==a.aliasesText&&l.push("aliases"),t.dispatchDefault!==a.dispatchDefault&&l.push("dispatch.default"),t.criticalToolsText!==a.criticalToolsText&&l.push("compat.requiredToolsCritical"),t.optionalToolsText!==a.optionalToolsText&&l.push("compat.requiredToolsOptional"),t.contentDefault!==a.contentDefault&&l.push("content.default"),l},[d,a]),G=i.useMemo(()=>!d||!a?"":[`# ${d.name} Preview`,"",`Description: ${a.description}`,`Aliases: ${a.aliasesText||"(none)"}`,`Dispatch default: ${a.dispatchDefault||"(none)"}`,"","## Critical Tools",...g(a.criticalToolsText).map(t=>`- ${t}`),"","## Optional Tools",...g(a.optionalToolsText).map(t=>`- ${t}`),"","## Prompt Content Preview",a.contentDefault].join(`
4
4
  `),[d,a]),N=i.useMemo(()=>d?w(d):null,[d]),Y=i.useMemo(()=>{if(!N||!a)return[];const t=[],l=(n,x,Q)=>{x!==Q&&t.push({field:n,before:x,after:Q})};return l("description",N.description,a.description),l("aliases",N.aliasesText,a.aliasesText),l("dispatch.default",N.dispatchDefault,a.dispatchDefault),l("compat.requiredToolsCritical",N.criticalToolsText,a.criticalToolsText),l("compat.requiredToolsOptional",N.optionalToolsText,a.optionalToolsText),l("content.default",N.contentDefault,a.contentDefault),t},[N,a]),Z=()=>{d&&h(w(d))},ee=async()=>{G&&await navigator.clipboard.writeText(G)},se=async()=>{if(!c||!a||$.length>0||!k)return;W(!0),u(null);const t=await k(c,a);if(!t.success){u({type:"error",message:t.error||"Failed to save workflow draft."}),W(!1);return}const l=j?await j(c):null;if(l&&(m(l),h(w(l))),u({type:"success",message:"Workflow draft saved and templates regenerated."}),T){const n=await T();L(n)}W(!1)},te=async()=>{if(!c||!v)return;E(!0),u(null);const t=await v(c);if(!t.success){u({type:"error",message:t.error||"Failed to reset workflow override."}),E(!1);return}const l=j?await j(c):null;if(l&&(m(l),h(w(l))),u({type:"success",message:"Workflow override reset and templates regenerated."}),T){const n=await T();L(n)}E(!1)},J=(t,l)=>{if(!a)return;const n=ce(l).join(`