@taskforcehq/taskforce 0.3.309 → 0.3.313

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 (470) hide show
  1. package/README.md +89 -127
  2. package/dist/TaskforceCore.js +1 -1
  3. package/dist/components/context/ContextAttachmentManager.js +4 -3
  4. package/dist/components/features/InitiativesModule.js +1 -1
  5. package/dist/components/features/TaskSettings.js +1 -1
  6. package/dist/components/ui/DisclosureSectionHeader.d.ts +12 -0
  7. package/dist/components/ui/DisclosureSectionHeader.js +8 -0
  8. package/dist/components/views/PlanComparisonPage.js +1 -1
  9. package/dist/components/views/StandaloneLayout.js +18 -4
  10. package/dist/components/views/panels/PlanningDrawer.js +2 -1
  11. package/dist/components/views/standalone/modals/AccountHubModal.js +1 -1
  12. package/dist/components/views/standalone/modals/HelpModal.d.ts +3 -1
  13. package/dist/components/views/standalone/modals/HelpModal.js +17 -2
  14. package/dist/core/PlanEntitlementService.d.ts +2 -0
  15. package/dist/core/PlanEntitlementService.js +57 -4
  16. package/dist/hooks/useFilterSort.js +1 -1
  17. package/dist/hooks/useTaskforce.js +2 -2
  18. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +5 -2
  19. package/dist/localization/locales/en-US.js +1 -1
  20. package/dist/localization/locales/es-419.js +1 -1
  21. package/dist/localization/locales/pt-BR.js +1 -1
  22. package/dist/mcp/runtime.js +49 -14
  23. package/dist/server/routes/billing.js +0 -1
  24. package/dist/ui/assets/AgentsModule-BULqIo8e.js +1 -0
  25. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-CCckzWYZ.js → AnnotatedAttachmentWorkspace-DHr4rHK9.js} +1 -1
  26. package/dist/ui/assets/ContextAttachmentManager-DoMe2OpY.js +3 -0
  27. package/dist/ui/assets/{DocumentWorkspace-BVaWPA25.js → DocumentWorkspace-DumBWhvb.js} +1 -1
  28. package/dist/ui/assets/{EntityActivityTimeline-DSj0ThaK.js → EntityActivityTimeline-sHk8Nzbq.js} +1 -1
  29. package/dist/ui/assets/{InitiativesModule-AxMkWtxH.js → InitiativesModule-3X9UNzHh.js} +1 -1
  30. package/dist/ui/assets/PlansPage-C3A3EYaV.js +1 -0
  31. package/dist/ui/assets/PlansPage-DeAzWYTb.css +1 -0
  32. package/dist/ui/assets/{TaskContextUpload-Dw4rTF4i.js → TaskContextUpload-C8G7pWkX.js} +1 -1
  33. package/dist/ui/assets/{TaskSettings-f2ga42_V.js → TaskSettings-DM1o9Wla.js} +2 -2
  34. package/dist/ui/assets/{WorkflowsModule-E4UL3mov.js → WorkflowsModule-CW0crzvD.js} +1 -1
  35. package/dist/ui/assets/documentReferences-BZB3nMRb.js +1 -0
  36. package/dist/ui/assets/index-BWFQ9mGn.js +5 -0
  37. package/dist/ui/assets/{index-BvAbqx5Q.css → index-DcK_8tuE.css} +1 -1
  38. package/dist/ui/assets/{vendor-icons-B32hGuF2.js → vendor-icons-CLnehDTw.js} +1 -1
  39. package/dist/ui/index.html +3 -3
  40. package/dist/utils/supportContact.d.ts +9 -0
  41. package/dist/utils/supportContact.js +32 -0
  42. package/package.json +12 -4
  43. package/scripts/postinstall.js +4 -3
  44. package/dist/TaskforceCore.CategoryFallback.test.d.ts +0 -1
  45. package/dist/TaskforceCore.CategoryFallback.test.js +0 -101
  46. package/dist/TaskforceCore.filter-persistence.test.d.ts +0 -1
  47. package/dist/TaskforceCore.filter-persistence.test.js +0 -402
  48. package/dist/TaskforceCore.routing.test.d.ts +0 -1
  49. package/dist/TaskforceCore.routing.test.js +0 -311
  50. package/dist/TaskforceCore.test.d.ts +0 -1
  51. package/dist/TaskforceCore.test.js +0 -7910
  52. package/dist/TaskforceWidget.test.d.ts +0 -1
  53. package/dist/TaskforceWidget.test.js +0 -92
  54. package/dist/UnsavedChangesRelaxed.test.d.ts +0 -1
  55. package/dist/UnsavedChangesRelaxed.test.js +0 -16
  56. package/dist/__tests__/localizationCatalogs.test.d.ts +0 -1
  57. package/dist/__tests__/localizationCatalogs.test.js +0 -54
  58. package/dist/__tests__/workflowSimulation.test.d.ts +0 -1
  59. package/dist/__tests__/workflowSimulation.test.js +0 -113
  60. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.d.ts +0 -1
  61. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.js +0 -278
  62. package/dist/annotatedAttachments/payload.test.d.ts +0 -1
  63. package/dist/annotatedAttachments/payload.test.js +0 -67
  64. package/dist/compat/workspaceSyncCompat.test.d.ts +0 -1
  65. package/dist/compat/workspaceSyncCompat.test.js +0 -124
  66. package/dist/components/features/AgentsModule.test.d.ts +0 -1
  67. package/dist/components/features/AgentsModule.test.js +0 -601
  68. package/dist/components/features/AnnotatedAttachmentWorkspace.test.d.ts +0 -1
  69. package/dist/components/features/AnnotatedAttachmentWorkspace.test.js +0 -2883
  70. package/dist/components/features/DocumentWorkspace.test.d.ts +0 -1
  71. package/dist/components/features/DocumentWorkspace.test.js +0 -1439
  72. package/dist/components/features/TaskSettings.test.d.ts +0 -1
  73. package/dist/components/features/TaskSettings.test.js +0 -1674
  74. package/dist/components/features/settings/TaxonomyLibraryManager.test.d.ts +0 -1
  75. package/dist/components/features/settings/TaxonomyLibraryManager.test.js +0 -141
  76. package/dist/components/task/TaskActionHeader.test.d.ts +0 -1
  77. package/dist/components/task/TaskActionHeader.test.js +0 -91
  78. package/dist/components/task/TaskCard.test.d.ts +0 -1
  79. package/dist/components/task/TaskCard.test.js +0 -513
  80. package/dist/components/task/TaskContextUpload.test.d.ts +0 -1
  81. package/dist/components/task/TaskContextUpload.test.js +0 -506
  82. package/dist/components/task/TaskForm.test.d.ts +0 -1
  83. package/dist/components/task/TaskForm.test.js +0 -946
  84. package/dist/components/task/TaskKanban.empty-column-drop.test.d.ts +0 -1
  85. package/dist/components/task/TaskKanban.empty-column-drop.test.js +0 -66
  86. package/dist/components/task/TaskKanban.planning-drop.test.d.ts +0 -1
  87. package/dist/components/task/TaskKanban.planning-drop.test.js +0 -93
  88. package/dist/components/task/TaskKanban.test.d.ts +0 -1
  89. package/dist/components/task/TaskKanban.test.js +0 -99
  90. package/dist/components/task/TaskList.test.d.ts +0 -1
  91. package/dist/components/task/TaskList.test.js +0 -473
  92. package/dist/components/task/TaskStatusActions.test.d.ts +0 -1
  93. package/dist/components/task/TaskStatusActions.test.js +0 -54
  94. package/dist/components/task/taskKanbanDropRules.test.d.ts +0 -1
  95. package/dist/components/task/taskKanbanDropRules.test.js +0 -114
  96. package/dist/components/ui/LevelSelector.test.d.ts +0 -1
  97. package/dist/components/ui/LevelSelector.test.js +0 -55
  98. package/dist/components/ui/Markdown.test.d.ts +0 -1
  99. package/dist/components/ui/Markdown.test.js +0 -38
  100. package/dist/components/ui/MultiSelectFilter.test.d.ts +0 -1
  101. package/dist/components/ui/MultiSelectFilter.test.js +0 -74
  102. package/dist/components/ui/TaxonomyDropdown.test.d.ts +0 -1
  103. package/dist/components/ui/TaxonomyDropdown.test.js +0 -130
  104. package/dist/components/ui/TopNoticeLayer.test.d.ts +0 -1
  105. package/dist/components/ui/TopNoticeLayer.test.js +0 -25
  106. package/dist/components/views/AppShellHeader.test.d.ts +0 -1
  107. package/dist/components/views/AppShellHeader.test.js +0 -42
  108. package/dist/components/views/PlanComparisonPage.test.d.ts +0 -1
  109. package/dist/components/views/PlanComparisonPage.test.js +0 -757
  110. package/dist/components/views/PlansPage.test.d.ts +0 -1
  111. package/dist/components/views/PlansPage.test.js +0 -710
  112. package/dist/components/views/chrome/WorkspaceChromeSections.test.d.ts +0 -1
  113. package/dist/components/views/chrome/WorkspaceChromeSections.test.js +0 -54
  114. package/dist/components/views/chrome/workspaceChrome.test.d.ts +0 -1
  115. package/dist/components/views/chrome/workspaceChrome.test.js +0 -52
  116. package/dist/components/views/panels/DocumentFilterToolbar.test.d.ts +0 -1
  117. package/dist/components/views/panels/DocumentFilterToolbar.test.js +0 -19
  118. package/dist/components/views/panels/FilterToolbar.test.d.ts +0 -1
  119. package/dist/components/views/panels/FilterToolbar.test.js +0 -47
  120. package/dist/components/views/panels/PlanningDrawer.test.d.ts +0 -1
  121. package/dist/components/views/panels/PlanningDrawer.test.js +0 -529
  122. package/dist/components/views/planningScope.test.d.ts +0 -1
  123. package/dist/components/views/planningScope.test.js +0 -60
  124. package/dist/components/views/standalone/modals/AccountHubModal.test.d.ts +0 -1
  125. package/dist/components/views/standalone/modals/AccountHubModal.test.js +0 -66
  126. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.d.ts +0 -1
  127. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.js +0 -24
  128. package/dist/components/views/teamManagementAccess.test.d.ts +0 -1
  129. package/dist/components/views/teamManagementAccess.test.js +0 -44
  130. package/dist/config/deployment.test.d.ts +0 -1
  131. package/dist/config/deployment.test.js +0 -90
  132. package/dist/config/envSchema.test.d.ts +0 -1
  133. package/dist/config/envSchema.test.js +0 -125
  134. package/dist/core/AiProfileService.test.d.ts +0 -1
  135. package/dist/core/AiProfileService.test.js +0 -184
  136. package/dist/core/AiProfiles.test.d.ts +0 -1
  137. package/dist/core/AiProfiles.test.js +0 -1873
  138. package/dist/core/AuthTokenService.test.d.ts +0 -1
  139. package/dist/core/AuthTokenService.test.js +0 -78
  140. package/dist/core/BulkUpdateFieldsPreview.test.d.ts +0 -1
  141. package/dist/core/BulkUpdateFieldsPreview.test.js +0 -62
  142. package/dist/core/CompletedAt.test.d.ts +0 -1
  143. package/dist/core/CompletedAt.test.js +0 -44
  144. package/dist/core/CreatedBy.test.d.ts +0 -1
  145. package/dist/core/CreatedBy.test.js +0 -188
  146. package/dist/core/DeletedTaskTrash.test.d.ts +0 -1
  147. package/dist/core/DeletedTaskTrash.test.js +0 -104
  148. package/dist/core/EntitlementsPolicy.test.d.ts +0 -1
  149. package/dist/core/EntitlementsPolicy.test.js +0 -280
  150. package/dist/core/GlobalSettingsService.test.d.ts +0 -1
  151. package/dist/core/GlobalSettingsService.test.js +0 -45
  152. package/dist/core/JsonBackupRuntime.test.d.ts +0 -1
  153. package/dist/core/JsonBackupRuntime.test.js +0 -155
  154. package/dist/core/PlanFeatureCatalog.test.d.ts +0 -1
  155. package/dist/core/PlanFeatureCatalog.test.js +0 -139
  156. package/dist/core/PlanVersionPolicy.test.d.ts +0 -1
  157. package/dist/core/PlanVersionPolicy.test.js +0 -204
  158. package/dist/core/PlanningEntities.test.d.ts +0 -1
  159. package/dist/core/PlanningEntities.test.js +0 -509
  160. package/dist/core/ScheduleFields.test.d.ts +0 -1
  161. package/dist/core/ScheduleFields.test.js +0 -193
  162. package/dist/core/SetupState.test.d.ts +0 -1
  163. package/dist/core/SetupState.test.js +0 -113
  164. package/dist/core/SignupMonetizationSettings.test.d.ts +0 -1
  165. package/dist/core/SignupMonetizationSettings.test.js +0 -515
  166. package/dist/core/Stats.test.d.ts +0 -1
  167. package/dist/core/Stats.test.js +0 -36
  168. package/dist/core/SystemAdmin.test.d.ts +0 -1
  169. package/dist/core/SystemAdmin.test.js +0 -1106
  170. package/dist/core/TaskActivitySync.test.d.ts +0 -1
  171. package/dist/core/TaskActivitySync.test.js +0 -90
  172. package/dist/core/TaskAttachmentsCanonical.test.d.ts +0 -1
  173. package/dist/core/TaskAttachmentsCanonical.test.js +0 -356
  174. package/dist/core/TaskAuditTimeline.test.d.ts +0 -1
  175. package/dist/core/TaskAuditTimeline.test.js +0 -319
  176. package/dist/core/TaskTaxonomyValidation.test.d.ts +0 -1
  177. package/dist/core/TaskTaxonomyValidation.test.js +0 -440
  178. package/dist/core/Taskforce.ids.test.d.ts +0 -1
  179. package/dist/core/Taskforce.ids.test.js +0 -611
  180. package/dist/core/Taskforce.listTasksSlim.test.d.ts +0 -1
  181. package/dist/core/Taskforce.listTasksSlim.test.js +0 -91
  182. package/dist/core/Taskforce.mcpAuth.test.d.ts +0 -1
  183. package/dist/core/Taskforce.mcpAuth.test.js +0 -450
  184. package/dist/core/Taskforce.realtimeMutation.test.d.ts +0 -1
  185. package/dist/core/Taskforce.realtimeMutation.test.js +0 -131
  186. package/dist/core/UserProfileAvatarDrafts.test.d.ts +0 -1
  187. package/dist/core/UserProfileAvatarDrafts.test.js +0 -138
  188. package/dist/core/WorkspaceDelete.test.d.ts +0 -1
  189. package/dist/core/WorkspaceDelete.test.js +0 -159
  190. package/dist/core/WorkspacePermissions.test.d.ts +0 -1
  191. package/dist/core/WorkspacePermissions.test.js +0 -270
  192. package/dist/core/WorkspacePlanMode.test.d.ts +0 -1
  193. package/dist/core/WorkspacePlanMode.test.js +0 -383
  194. package/dist/core/WorkspaceSyncSettings.test.d.ts +0 -1
  195. package/dist/core/WorkspaceSyncSettings.test.js +0 -65
  196. package/dist/core/__tests__/TaskAttachmentsCanonical.test.d.ts +0 -1
  197. package/dist/core/__tests__/TaskAttachmentsCanonical.test.js +0 -212
  198. package/dist/documentReviews/DocumentReviewSessionStore.test.d.ts +0 -1
  199. package/dist/documentReviews/DocumentReviewSessionStore.test.js +0 -127
  200. package/dist/hooks/authGuardPolicy.test.d.ts +0 -1
  201. package/dist/hooks/authGuardPolicy.test.js +0 -76
  202. package/dist/hooks/bootstrapTimeouts.test.d.ts +0 -1
  203. package/dist/hooks/bootstrapTimeouts.test.js +0 -12
  204. package/dist/hooks/sync/controlPlane.test.d.ts +0 -1
  205. package/dist/hooks/sync/controlPlane.test.js +0 -121
  206. package/dist/hooks/sync/lifecyclePolicy.test.d.ts +0 -1
  207. package/dist/hooks/sync/lifecyclePolicy.test.js +0 -124
  208. package/dist/hooks/sync/orchestratorShared.test.d.ts +0 -1
  209. package/dist/hooks/sync/orchestratorShared.test.js +0 -98
  210. package/dist/hooks/sync/pullLifecycle.test.d.ts +0 -1
  211. package/dist/hooks/sync/pullLifecycle.test.js +0 -80
  212. package/dist/hooks/sync/recovery.test.d.ts +0 -1
  213. package/dist/hooks/sync/recovery.test.js +0 -292
  214. package/dist/hooks/sync/transfers.test.d.ts +0 -1
  215. package/dist/hooks/sync/transfers.test.js +0 -928
  216. package/dist/hooks/sync/useRecentSyncEvents.test.d.ts +0 -1
  217. package/dist/hooks/sync/useRecentSyncEvents.test.js +0 -124
  218. package/dist/hooks/sync/useSyncStatusActions.test.d.ts +0 -1
  219. package/dist/hooks/sync/useSyncStatusActions.test.js +0 -133
  220. package/dist/hooks/sync/useSyncStatusControls.test.d.ts +0 -1
  221. package/dist/hooks/sync/useSyncStatusControls.test.js +0 -88
  222. package/dist/hooks/useFilterSort.test.d.ts +0 -1
  223. package/dist/hooks/useFilterSort.test.js +0 -419
  224. package/dist/hooks/useRealtimeSync.test.d.ts +0 -1
  225. package/dist/hooks/useRealtimeSync.test.js +0 -311
  226. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.d.ts +0 -1
  227. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.js +0 -54
  228. package/dist/hooks/useSyncOrchestrator.context-assets.test.d.ts +0 -1
  229. package/dist/hooks/useSyncOrchestrator.context-assets.test.js +0 -228
  230. package/dist/hooks/useSyncOrchestrator.retry-closure.test.d.ts +0 -1
  231. package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +0 -2027
  232. package/dist/hooks/useTaskData.test.d.ts +0 -1
  233. package/dist/hooks/useTaskData.test.js +0 -291
  234. package/dist/hooks/useTaskMutations.test.d.ts +0 -1
  235. package/dist/hooks/useTaskMutations.test.js +0 -256
  236. package/dist/hooks/useTaskforce.contract.test.d.ts +0 -1
  237. package/dist/hooks/useTaskforce.contract.test.js +0 -7
  238. package/dist/hooks/useTaskforce.priority-filters.test.d.ts +0 -1
  239. package/dist/hooks/useTaskforce.priority-filters.test.js +0 -28
  240. package/dist/hooks/useTaskforce.runtime-routing.test.d.ts +0 -1
  241. package/dist/hooks/useTaskforce.runtime-routing.test.js +0 -246
  242. package/dist/hooks/useTaskforce.sync-behavior.test.d.ts +0 -1
  243. package/dist/hooks/useTaskforce.sync-behavior.test.js +0 -3644
  244. package/dist/hooks/useWorkspaceSyncController.test.d.ts +0 -1
  245. package/dist/hooks/useWorkspaceSyncController.test.js +0 -192
  246. package/dist/hooks/workspace/useTaskforceApiRouting.test.d.ts +0 -1
  247. package/dist/hooks/workspace/useTaskforceApiRouting.test.js +0 -77
  248. package/dist/hooks/workspace/workspaceLocalState.test.d.ts +0 -1
  249. package/dist/hooks/workspace/workspaceLocalState.test.js +0 -59
  250. package/dist/localization/localizationCatalogs.test.d.ts +0 -1
  251. package/dist/localization/localizationCatalogs.test.js +0 -37
  252. package/dist/mcp/aiProfileBootstrap.test.d.ts +0 -1
  253. package/dist/mcp/aiProfileBootstrap.test.js +0 -68
  254. package/dist/mcp/canonicalAssetHelpers.test.d.ts +0 -1
  255. package/dist/mcp/canonicalAssetHelpers.test.js +0 -67
  256. package/dist/mcp/clientIntegrations.test.d.ts +0 -1
  257. package/dist/mcp/clientIntegrations.test.js +0 -219
  258. package/dist/mcp/optionResolution.test.d.ts +0 -1
  259. package/dist/mcp/optionResolution.test.js +0 -43
  260. package/dist/mcp/runtime.test.d.ts +0 -1
  261. package/dist/mcp/runtime.test.js +0 -5120
  262. package/dist/mcp/structuredCommentValidation.test.d.ts +0 -1
  263. package/dist/mcp/structuredCommentValidation.test.js +0 -31
  264. package/dist/mcp/structuredDocValidation.test.d.ts +0 -1
  265. package/dist/mcp/structuredDocValidation.test.js +0 -35
  266. package/dist/mcp/toolRegistry.test.d.ts +0 -1
  267. package/dist/mcp/toolRegistry.test.js +0 -34
  268. package/dist/migrations/billingSchemaParity.test.d.ts +0 -1
  269. package/dist/migrations/billingSchemaParity.test.js +0 -160
  270. package/dist/migrations/taskSchemaMigrations.test.d.ts +0 -1
  271. package/dist/migrations/taskSchemaMigrations.test.js +0 -225
  272. package/dist/qaOpen.test.d.ts +0 -1
  273. package/dist/qaOpen.test.js +0 -56
  274. package/dist/releaseVersion.test.d.ts +0 -1
  275. package/dist/releaseVersion.test.js +0 -32
  276. package/dist/runtime/appGates.test.d.ts +0 -1
  277. package/dist/runtime/appGates.test.js +0 -42
  278. package/dist/server/aiProfileAvatarAssets.test.d.ts +0 -1
  279. package/dist/server/aiProfileAvatarAssets.test.js +0 -213
  280. package/dist/server/annotatedAttachmentsRoutes.test.d.ts +0 -1
  281. package/dist/server/annotatedAttachmentsRoutes.test.js +0 -532
  282. package/dist/server/auth.test.d.ts +0 -1
  283. package/dist/server/auth.test.js +0 -131
  284. package/dist/server/buildInfo.test.d.ts +0 -1
  285. package/dist/server/buildInfo.test.js +0 -29
  286. package/dist/server/cors.test.d.ts +0 -1
  287. package/dist/server/cors.test.js +0 -77
  288. package/dist/server/documentReviewRoutes.test.d.ts +0 -1
  289. package/dist/server/documentReviewRoutes.test.js +0 -190
  290. package/dist/server/email.test.d.ts +0 -1
  291. package/dist/server/email.test.js +0 -113
  292. package/dist/server/index.cookieProxy.test.d.ts +0 -1
  293. package/dist/server/index.cookieProxy.test.js +0 -67
  294. package/dist/server/index.rateLimit.test.d.ts +0 -1
  295. package/dist/server/index.rateLimit.test.js +0 -22
  296. package/dist/server/index.test.d.ts +0 -1
  297. package/dist/server/index.test.js +0 -283
  298. package/dist/server/rateLimit.test.d.ts +0 -1
  299. package/dist/server/rateLimit.test.js +0 -107
  300. package/dist/server/realtimeSync.auth.test.d.ts +0 -1
  301. package/dist/server/realtimeSync.auth.test.js +0 -62
  302. package/dist/server/realtimeSync.replay.test.d.ts +0 -1
  303. package/dist/server/realtimeSync.replay.test.js +0 -192
  304. package/dist/server/realtimeSync.workspaceIsolation.test.d.ts +0 -1
  305. package/dist/server/realtimeSync.workspaceIsolation.test.js +0 -101
  306. package/dist/server/routes/billing.test.d.ts +0 -1
  307. package/dist/server/routes/billing.test.js +0 -3455
  308. package/dist/server/routes/shared.test.d.ts +0 -1
  309. package/dist/server/routes/shared.test.js +0 -32
  310. package/dist/server/routes/sync.integration.test.d.ts +0 -1
  311. package/dist/server/routes/sync.integration.test.js +0 -2932
  312. package/dist/server/routes/syncAuxRoutes.test.d.ts +0 -1
  313. package/dist/server/routes/syncAuxRoutes.test.js +0 -158
  314. package/dist/server/routes/syncRouteGuards.test.d.ts +0 -1
  315. package/dist/server/routes/syncRouteGuards.test.js +0 -94
  316. package/dist/server/routes.test.d.ts +0 -1
  317. package/dist/server/routes.test.js +0 -15612
  318. package/dist/server/runtimeMode.test.d.ts +0 -1
  319. package/dist/server/runtimeMode.test.js +0 -26
  320. package/dist/server/securityHeaders.test.d.ts +0 -1
  321. package/dist/server/securityHeaders.test.js +0 -70
  322. package/dist/services/templateEngine.test.d.ts +0 -1
  323. package/dist/services/templateEngine.test.js +0 -150
  324. package/dist/services/templates.test.d.ts +0 -1
  325. package/dist/services/templates.test.js +0 -45
  326. package/dist/services/workflowDocumentFixtures.test.d.ts +0 -1
  327. package/dist/services/workflowDocumentFixtures.test.js +0 -78
  328. package/dist/services/workflowExportMatrix.test.d.ts +0 -1
  329. package/dist/services/workflowExportMatrix.test.js +0 -113
  330. package/dist/services/workflowExportSnapshots.test.d.ts +0 -1
  331. package/dist/services/workflowExportSnapshots.test.js +0 -30
  332. package/dist/services/workflowGeneration.test.d.ts +0 -1
  333. package/dist/services/workflowGeneration.test.js +0 -12
  334. package/dist/services/workflowSimulation.test.d.ts +0 -1
  335. package/dist/services/workflowSimulation.test.js +0 -113
  336. package/dist/services/workflowV2Policy.test.d.ts +0 -1
  337. package/dist/services/workflowV2Policy.test.js +0 -80
  338. package/dist/shared/customTaxonomyLibrary.test.d.ts +0 -1
  339. package/dist/shared/customTaxonomyLibrary.test.js +0 -20
  340. package/dist/shared/passwordPolicy.test.d.ts +0 -1
  341. package/dist/shared/passwordPolicy.test.js +0 -34
  342. package/dist/shared/runtimeContract.test.d.ts +0 -1
  343. package/dist/shared/runtimeContract.test.js +0 -23
  344. package/dist/shared/taxonomyLibrary.test.d.ts +0 -1
  345. package/dist/shared/taxonomyLibrary.test.js +0 -26
  346. package/dist/shared/taxonomyState.test.d.ts +0 -1
  347. package/dist/shared/taxonomyState.test.js +0 -71
  348. package/dist/soak/preflight.cli.d.ts +0 -1
  349. package/dist/soak/preflight.cli.js +0 -28
  350. package/dist/soak/preflight.d.ts +0 -26
  351. package/dist/soak/preflight.js +0 -113
  352. package/dist/soak/preflight.test.d.ts +0 -1
  353. package/dist/soak/preflight.test.js +0 -39
  354. package/dist/storage/objectStorageClient.test.d.ts +0 -1
  355. package/dist/storage/objectStorageClient.test.js +0 -82
  356. package/dist/storage/objectStorageConfig.test.d.ts +0 -1
  357. package/dist/storage/objectStorageConfig.test.js +0 -50
  358. package/dist/storage/postgresAdapter.test.d.ts +0 -1
  359. package/dist/storage/postgresAdapter.test.js +0 -29
  360. package/dist/storage/workspaceAssetStore.test.d.ts +0 -1
  361. package/dist/storage/workspaceAssetStore.test.js +0 -588
  362. package/dist/sync/cloudSyncApi.test.d.ts +0 -1
  363. package/dist/sync/cloudSyncApi.test.js +0 -111
  364. package/dist/sync/collaborationSyncPayload.test.d.ts +0 -1
  365. package/dist/sync/collaborationSyncPayload.test.js +0 -125
  366. package/dist/sync/contentSyncPayload.test.d.ts +0 -1
  367. package/dist/sync/contentSyncPayload.test.js +0 -143
  368. package/dist/sync/encryptionService.test.d.ts +0 -1
  369. package/dist/sync/encryptionService.test.js +0 -52
  370. package/dist/sync/planningSyncPayload.test.d.ts +0 -1
  371. package/dist/sync/planningSyncPayload.test.js +0 -92
  372. package/dist/sync/realtimeFeature.test.d.ts +0 -1
  373. package/dist/sync/realtimeFeature.test.js +0 -30
  374. package/dist/sync/realtimeReconcile.test.d.ts +0 -1
  375. package/dist/sync/realtimeReconcile.test.js +0 -43
  376. package/dist/sync/syncApplyHandlers.test.d.ts +0 -1
  377. package/dist/sync/syncApplyHandlers.test.js +0 -626
  378. package/dist/sync/syncService.test.d.ts +0 -1
  379. package/dist/sync/syncService.test.js +0 -903
  380. package/dist/sync/taskSyncPayload.test.d.ts +0 -1
  381. package/dist/sync/taskSyncPayload.test.js +0 -54
  382. package/dist/sync/workspacePullFeed.test.d.ts +0 -1
  383. package/dist/sync/workspacePullFeed.test.js +0 -438
  384. package/dist/sync/workspaceSyncModel.test.d.ts +0 -1
  385. package/dist/sync/workspaceSyncModel.test.js +0 -1442
  386. package/dist/test/setup.d.ts +0 -1
  387. package/dist/test/setup.js +0 -15
  388. package/dist/ui/assets/AgentsModule-BS4Pi_nC.js +0 -1
  389. package/dist/ui/assets/ContextAttachmentManager-CfG_ER7C.js +0 -3
  390. package/dist/ui/assets/PlansPage-B_z-D6Nh.css +0 -1
  391. package/dist/ui/assets/PlansPage-Ndt7mYfo.js +0 -1
  392. package/dist/ui/assets/documentReferences-BOUcJm6-.js +0 -1
  393. package/dist/ui/assets/index-MAHKvFqp.js +0 -4
  394. package/dist/utils/accountProfileSummaryCache.test.d.ts +0 -1
  395. package/dist/utils/accountProfileSummaryCache.test.js +0 -63
  396. package/dist/utils/annotatedAttachments.test.d.ts +0 -1
  397. package/dist/utils/annotatedAttachments.test.js +0 -108
  398. package/dist/utils/assignees.test.d.ts +0 -1
  399. package/dist/utils/assignees.test.js +0 -25
  400. package/dist/utils/avatarUpload.test.d.ts +0 -1
  401. package/dist/utils/avatarUpload.test.js +0 -40
  402. package/dist/utils/canonicalAssetKind.test.d.ts +0 -1
  403. package/dist/utils/canonicalAssetKind.test.js +0 -24
  404. package/dist/utils/coalescedRefresh.test.d.ts +0 -1
  405. package/dist/utils/coalescedRefresh.test.js +0 -30
  406. package/dist/utils/constants.icons.test.d.ts +0 -1
  407. package/dist/utils/constants.icons.test.js +0 -41
  408. package/dist/utils/planParser.test.d.ts +0 -1
  409. package/dist/utils/planParser.test.js +0 -183
  410. package/dist/utils/planningReferences.test.d.ts +0 -1
  411. package/dist/utils/planningReferences.test.js +0 -17
  412. package/dist/utils/syncEventDetails.test.d.ts +0 -1
  413. package/dist/utils/syncEventDetails.test.js +0 -23
  414. package/dist/utils/syncEventPresentation.test.d.ts +0 -1
  415. package/dist/utils/syncEventPresentation.test.js +0 -64
  416. package/dist/utils/syncStatusPresentation.test.d.ts +0 -1
  417. package/dist/utils/syncStatusPresentation.test.js +0 -164
  418. package/dist/utils/taskActivity.test.d.ts +0 -1
  419. package/dist/utils/taskActivity.test.js +0 -218
  420. package/dist/utils/taskDraftDefaults.test.d.ts +0 -1
  421. package/dist/utils/taskDraftDefaults.test.js +0 -34
  422. package/dist/utils/taskDragZones.test.d.ts +0 -1
  423. package/dist/utils/taskDragZones.test.js +0 -14
  424. package/dist/utils/taskNormalization.test.d.ts +0 -1
  425. package/dist/utils/taskNormalization.test.js +0 -158
  426. package/dist/utils/taskSearch.test.d.ts +0 -1
  427. package/dist/utils/taskSearch.test.js +0 -69
  428. package/dist/utils/taskUtils.test.d.ts +0 -1
  429. package/dist/utils/taskUtils.test.js +0 -19
  430. package/dist/utils/taskforceApiClient.test.d.ts +0 -1
  431. package/dist/utils/taskforceApiClient.test.js +0 -44
  432. package/dist/utils/taxonomyFormDefaults.test.d.ts +0 -1
  433. package/dist/utils/taxonomyFormDefaults.test.js +0 -63
  434. package/dist/utils/uiNotice.test.d.ts +0 -1
  435. package/dist/utils/uiNotice.test.js +0 -18
  436. package/dist/utils/workspaceIdentity.test.d.ts +0 -1
  437. package/dist/utils/workspaceIdentity.test.js +0 -61
  438. package/dist/utils/workspaceLifecycle.test.d.ts +0 -1
  439. package/dist/utils/workspaceLifecycle.test.js +0 -64
  440. package/dist/utils/workspaceSyncPresentation.test.d.ts +0 -1
  441. package/dist/utils/workspaceSyncPresentation.test.js +0 -71
  442. package/scripts/bootstrap-playwright-auth.mjs +0 -155
  443. package/scripts/check-cloud-mcp.mjs +0 -83
  444. package/scripts/check-compat-boundaries.mjs +0 -41
  445. package/scripts/check-env.ts +0 -31
  446. package/scripts/check-localization-strings.mjs +0 -49
  447. package/scripts/check-runtime-boundaries.mjs +0 -44
  448. package/scripts/debug-global.mjs +0 -34
  449. package/scripts/debug-login.mjs +0 -32
  450. package/scripts/debug-server.mjs +0 -36
  451. package/scripts/deploy-prod.sh +0 -41
  452. package/scripts/deploy-staging.sh +0 -23
  453. package/scripts/export-sqlite-to-postgres.mjs +0 -123
  454. package/scripts/generate-env-example.ts +0 -8
  455. package/scripts/mcp-stdio-adapter.mjs +0 -160
  456. package/scripts/migrate-task-data-assets.mjs +0 -408
  457. package/scripts/playwright-auth.sh +0 -19
  458. package/scripts/qa-open-lib.mjs +0 -175
  459. package/scripts/qa-open-lib.mjs.d.ts +0 -49
  460. package/scripts/qa-open.mjs +0 -352
  461. package/scripts/release-version-lib.mjs +0 -88
  462. package/scripts/release-version.mjs +0 -72
  463. package/scripts/run-billing-performance-smoke.sh +0 -24
  464. package/scripts/run-dev-proxy.sh +0 -51
  465. package/scripts/run-e2e-realtime.sh +0 -30
  466. package/scripts/run-smoke.sh +0 -35
  467. package/scripts/run-soak.sh +0 -41
  468. package/scripts/test-global.js +0 -143
  469. package/scripts/update-homebrew-formula.sh +0 -108
  470. package/scripts/with-esbuild.sh +0 -11
@@ -1,4 +1,4 @@
1
- import{j as e,r as i,s as an,R as ve}from"./vendor-react-CKJs5o3c.js";import{h as $e,f as P,t as L,i as yt,j as gt,k as sn,R as rn,m as M,M as on,n as xt,o as cn,q as ln}from"./index-MAHKvFqp.js";import{q as dn,w as un,v as mn,au as hn,av as pn,x as qe,i as fn,Z as Qe,X as Rt,aw as _t,e as Ye,ax as At,ay as vn,az as wn,a as kn,j as yn,aA as gn,aB as xn,aC as _n,t as Ee,aD as bn,r as Sn,p as jn,aE as bt,at as Ve,aF as Cn,aG as Nn,T as Tn,R as En,aH as Rn,B as An,U as In,S as $n}from"./vendor-icons-B32hGuF2.js";import{g as Ln}from"./documentReferences-BOUcJm6-.js";import{s as Dn,M as Re,r as Ae}from"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";import"./vendor-router-BbWMxlnO.js";const Bn="_index_1sp0v_1",Mn="_header_1sp0v_8",Pn="_title_1sp0v_23",zn="_search_1sp0v_35",Fn="_searchIcon_1sp0v_41",On="_searchInput_1sp0v_50",Hn="_list_1sp0v_67",Wn="_state_1sp0v_79",Gn="_stateError_1sp0v_87",Kn="_item_1sp0v_94",Un="_itemActive_1sp0v_116",Jn="_itemIcon_1sp0v_126",Vn="_itemBody_1sp0v_136",qn="_itemTitle_1sp0v_144",Qn="_itemTask_1sp0v_156",Yn="_itemBadge_1sp0v_167",Xn="_itemMeta_1sp0v_180",Zn="_itemMetaDetails_1sp0v_191",ea="_itemMetaReference_1sp0v_198",A={index:Bn,header:Mn,title:Pn,search:zn,searchIcon:Fn,searchInput:On,list:Hn,state:Wn,stateError:Gn,item:Kn,itemActive:Un,itemIcon:Jn,itemBody:Vn,itemTitle:qn,itemTask:Qn,itemBadge:Yn,itemMeta:Xn,itemMetaDetails:Zn,itemMetaReference:ea};function Xe(t){let l=t;try{l=decodeURIComponent(t)}catch{l=t}return l.trim().replace(/\\/g,"/").replace(/^\/+/,"").replace(/^\.\//,"").replace(/^\.taskforce\//,"")}function ta(t,l){return!!(t===l||t.endsWith(`/${l}`)||l.endsWith(`/${t}`))}function St(t){const l=Xe(String(t||""));if(!l)return null;const m=l.match(/(^|\/)(asset-[a-f0-9]{32})(?=[^/]*$)/i);return m?.[2]?m[2].toLowerCase():null}function et(t){return t.attachmentState==="attached"||t.attachmentState==="unattached"?t.attachmentState:(typeof t.attachmentCount=="number"&&Number.isFinite(t.attachmentCount)?t.attachmentCount:0)>0||t.taskId?"attached":"unattached"}function na(t,l,m,s){const c=l.trim().toLowerCase();return t.filter(u=>{const y=`${$e(u)} ${u.originalFilename||""}`.toLowerCase(),v=c.length===0||y.includes(c),b=m.length===0||m.includes(u.docType),h=et(u),g=s.length===0||s.includes(h);return v&&b&&g})}function aa({docType:t}){switch(t){case"implementation-plan":return e.jsx(fn,{size:13});case"review":return e.jsx(qe,{size:13});case"walkthrough":return e.jsx(pn,{size:13});default:return e.jsx(hn,{size:13})}}function sa(t){return t<1024?`${t}B`:t<1024*1024?`${(t/1024).toFixed(1)}KB`:`${(t/(1024*1024)).toFixed(1)}MB`}function ra(t){if(!t)return"";const l=new Date(t),s=new Date().getTime()-l.getTime(),c=Math.floor(s/(1e3*60*60*24));return c===0?"Today":c===1?"Yesterday":c<7?`${c}d ago`:c<30?`${Math.floor(c/7)}w ago`:l.toLocaleDateString()}function ia(t,l){t.key!=="Enter"&&t.key!==" "||(t.preventDefault(),l())}function oa({documents:t,selectedDocId:l,loading:m,error:s,searchQuery:c,taskById:u,onSearchChange:w,onSelect:y,onCloseTray:v,hasActiveFilters:b}){return e.jsxs("div",{className:A.index,children:[e.jsxs("div",{className:A.header,children:[e.jsxs("span",{className:A.title,children:[e.jsx(dn,{size:14}),"Documents"]}),v?e.jsx("button",{type:"button",className:"tf-control-icon",onClick:v,title:"Collapse document tray","aria-label":"Collapse document tray",children:e.jsx(un,{size:16})}):null]}),e.jsxs("div",{className:A.search,children:[e.jsx(mn,{size:12,className:A.searchIcon}),e.jsx("input",{type:"text",placeholder:"Search documents…",value:c,onChange:h=>w(h.target.value),className:A.searchInput})]}),e.jsxs("div",{className:`${A.list} tf-scrollbar`,children:[m&&e.jsx("div",{className:A.state,children:"Loading documents…"}),!m&&s&&e.jsx("div",{className:A.stateError,children:s}),!m&&!s&&t.length===0&&e.jsx("div",{className:A.state,children:b?"No documents match your filters.":"No documents found. Documents added as task attachments will appear here."}),!m&&t.map(h=>{const g=h.taskId?u.get(h.taskId):null,O=h.id===l,T=$e(h),C=et(h),D=typeof h.attachmentCount=="number"&&Number.isFinite(h.attachmentCount)?h.attachmentCount:h.taskId?1:0,E=D>1?`${D} tasks linked`:D===1?g?.title||"1 task linked":null;return e.jsxs("div",{role:"button",tabIndex:0,className:`${A.item} ${O?A.itemActive:""}`,onClick:()=>y(h),onKeyDown:I=>ia(I,()=>y(h)),children:[e.jsx("div",{className:A.itemIcon,children:e.jsx(aa,{docType:h.docType})}),e.jsxs("div",{className:A.itemBody,children:[e.jsx("span",{className:A.itemTitle,title:T,children:T}),C==="unattached"&&e.jsx("span",{className:A.itemBadge,children:"Unattached"}),E&&e.jsx("span",{className:A.itemTask,title:E,children:E}),e.jsxs("span",{className:A.itemMeta,children:[e.jsxs("span",{className:A.itemMetaDetails,children:[sa(h.sizeBytes),h.updatedAt&&e.jsxs(e.Fragment,{children:[" · ",ra(h.updatedAt)]})]}),h.referenceLabel&&e.jsx("span",{className:A.itemMetaReference,children:h.referenceLabel})]})]})]},h.id)})]})]})}function Ie(t){return function(l){return Dn(l,t)}}const ca="_viewer_v1pk0_1",la="_viewerMonochrome_v1pk0_10",da="_metaDocumentName_v1pk0_10",ua="_viewerEditMode_v1pk0_14",ma="_meta_v1pk0_10",ha="_metaLeft_v1pk0_30",pa="_metaRenameRow_v1pk0_49",fa="_typeBadge_v1pk0_56",va="_typeBadgeImplementationPlan_v1pk0_71",wa="_typeBadgeReview_v1pk0_77",ka="_typeBadgeWalkthrough_v1pk0_83",ya="_metaTaskName_v1pk0_89",ga="_statusBadge_v1pk0_98",xa="_metaDate_v1pk0_113",_a="_metaSize_v1pk0_114",ba="_actions_v1pk0_122",Sa="_actionBtn_v1pk0_129",ja="_dangerBtn_v1pk0_156",Ca="_generateBtn_v1pk0_167",Na="_editBtn_v1pk0_178",Ta="_saveBtn_v1pk0_189",Ea="_layoutToggle_v1pk0_205",Ra="_layoutBtn_v1pk0_213",Aa="_layoutBtnActive_v1pk0_229",Ia="_saveStatus_v1pk0_234",$a="_saveStatusSaved_v1pk0_241",La="_saveStatusError_v1pk0_245",Da="_unsaved_v1pk0_250",Ba="_viewerContent_v1pk0_256",Ma="_viewerBody_v1pk0_265",Pa="_viewerBodyFullWidth_v1pk0_273",za="_viewerMain_v1pk0_277",Fa="_reviewRail_v1pk0_285",Oa="_printHint_v1pk0_291",Ha="_reviewSection_v1pk0_298",Wa="_reviewHeader_v1pk0_307",Ga="_reviewTitle_v1pk0_315",Ka="_reviewSubtitle_v1pk0_324",Ua="_reviewControls_v1pk0_331",Ja="_reviewSelect_v1pk0_338",Va="_reviewSessionMeta_v1pk0_342",qa="_reviewStatusResolved_v1pk0_350",Qa="_reviewSessionLabel_v1pk0_356",Ya="_reviewTitleEditRow_v1pk0_361",Xa="_reviewSessionTimestamp_v1pk0_368",Za="_reviewAnchorLabel_v1pk0_372",es="_reviewComposer_v1pk0_378",ts="_reviewAnchorChip_v1pk0_385",ns="_reviewAnchorSnippet_v1pk0_398",as="_reviewAnchorClear_v1pk0_403",ss="_reviewCommentActions_v1pk0_416",rs="_reviewCommentAction_v1pk0_416",is="_reviewCommentEditor_v1pk0_437",os="_viewerState_v1pk0_443",cs="_viewerStateError_v1pk0_450",ls="_editorArea_v1pk0_457",ds="_editorPane_v1pk0_464",us="_editorLayoutSplit_v1pk0_472",ms="_previewPane_v1pk0_473",hs="_editorLayoutEditor_v1pk0_477",ps="_editorLayoutPreview_v1pk0_478",fs="_editorPaneLabel_v1pk0_482",vs="_editorTextarea_v1pk0_494",ws="_markdownSurface_v1pk0_536",ks="_attachModalBody_v1pk0_745",ys="_attachModalCopy_v1pk0_752",gs="_attachModalError_v1pk0_759",xs="_attachTaskList_v1pk0_772",_s="_attachTaskRow_v1pk0_781",bs="_attachTaskTitle_v1pk0_808",Ss="_attachTaskInfo_v1pk0_814",js="_attachTaskReference_v1pk0_822",Cs="_attachTaskMeta_v1pk0_829",Ns="_attachEmptyState_v1pk0_836",r={viewer:ca,viewerMonochrome:la,metaDocumentName:da,viewerEditMode:ua,meta:ma,metaLeft:ha,metaRenameRow:pa,typeBadge:fa,typeBadgeImplementationPlan:va,typeBadgeReview:wa,typeBadgeWalkthrough:ka,metaTaskName:ya,statusBadge:ga,metaDate:xa,metaSize:_a,actions:ba,actionBtn:Sa,dangerBtn:ja,generateBtn:Ca,editBtn:Na,saveBtn:Ta,layoutToggle:Ea,layoutBtn:Ra,layoutBtnActive:Aa,saveStatus:Ia,saveStatusSaved:$a,saveStatusError:La,unsaved:Da,viewerContent:Ba,viewerBody:Ma,viewerBodyFullWidth:Pa,viewerMain:za,reviewRail:Fa,printHint:Oa,reviewSection:Ha,reviewHeader:Wa,reviewTitle:Ga,reviewSubtitle:Ka,reviewControls:Ua,reviewSelect:Ja,reviewSessionMeta:Va,reviewStatusResolved:qa,reviewSessionLabel:Qa,reviewTitleEditRow:Ya,reviewSessionTimestamp:Xa,reviewAnchorLabel:Za,reviewComposer:es,reviewAnchorChip:ts,reviewAnchorSnippet:ns,reviewAnchorClear:as,reviewCommentActions:ss,reviewCommentAction:rs,reviewCommentEditor:is,viewerState:os,viewerStateError:cs,editorArea:ls,editorPane:ds,editorLayoutSplit:us,previewPane:ms,editorLayoutEditor:hs,editorLayoutPreview:ps,editorPaneLabel:fs,editorTextarea:vs,markdownSurface:ws,attachModalBody:ks,attachModalCopy:ys,attachModalError:gs,attachTaskList:xs,attachTaskRow:_s,attachTaskTitle:bs,attachTaskInfo:Ss,attachTaskReference:js,attachTaskMeta:Cs,attachEmptyState:Ns},Ts="_overlay_1unik_1",Es="_modal_1unik_12",Rs="_header_1unik_16",As="_title_1unik_20",Is="_docName_1unik_24",$s="_body_1unik_34",Ls="_state_1unik_41",Ds="_stateError_1unik_52",Bs="_stateDone_1unik_63",Ms="_toolbar_1unik_84",Ps="_toolbarCount_1unik_95",zs="_toolbarActions_1unik_100",Fs="_tree_1unik_105",Os="_taskRow_1unik_113",Hs="_taskRowDimmed_1unik_126",Ws="_taskCheck_1unik_130",Gs="_taskExpandBtn_1unik_139",Ks="_taskExpandSpacer_1unik_155",Us="_taskTitle_1unik_160",Js="_taskBadge_1unik_169",Vs="_footer_1unik_179",S={overlay:Ts,modal:Es,header:Rs,title:As,docName:Is,body:$s,state:Ls,stateError:Ds,stateDone:Bs,toolbar:Ms,toolbarCount:Ps,toolbarActions:zs,tree:Fs,taskRow:Os,taskRowDimmed:Hs,taskCheck:Ws,taskExpandBtn:Gs,taskExpandSpacer:Ks,taskTitle:Us,taskBadge:Js,footer:Vs},qs={1:"Low",2:"Medium",3:"High"};function we(t,l){return t.map(m=>({...m,selected:l,children:we(m.children,l)}))}function It(t,l,m){return t.map(s=>s.idempotencyKey===l?{...s,selected:m,children:we(s.children,m)}:{...s,children:It(s.children,l,m)})}function Ze(t){let l=0;for(const m of t)m.selected&&l++,l+=Ze(m.children);return l}function $t({node:t,depth:l,onToggle:m}){const[s,c]=i.useState(!0),u=t.children.length>0,w=l*20;return e.jsxs("div",{children:[e.jsxs("div",{className:`${S.taskRow} ${t.selected?"":S.taskRowDimmed}`,style:{paddingLeft:`${12+w}px`},children:[e.jsx("button",{className:S.taskCheck,onClick:()=>m(t.idempotencyKey,!t.selected),title:t.selected?"Deselect":"Select",children:t.selected?e.jsx(vn,{size:14,style:{color:"var(--brand-primary-strong)"}}):e.jsx(wn,{size:14,style:{color:"var(--text-muted)"}})}),u?e.jsx("button",{className:S.taskExpandBtn,onClick:()=>c(y=>!y),children:s?e.jsx(kn,{size:12}):e.jsx(yn,{size:12})}):e.jsx("span",{className:S.taskExpandSpacer}),e.jsx("span",{className:S.taskTitle,title:t.description||void 0,children:t.title}),e.jsx("span",{className:S.taskBadge,style:{color:yt(t.type),borderColor:yt(t.type)},children:t.type}),e.jsx("span",{className:S.taskBadge,style:{color:gt(t.priority),borderColor:gt(t.priority)},children:qs[t.priority]})]}),u&&s&&e.jsx("div",{children:t.children.map(y=>e.jsx($t,{node:y,depth:l+1,onToggle:m},y.idempotencyKey))})]})}function Qs({content:t,docTitle:l,apiBaseUrl:m="",onClose:s,onGenerated:c}){const[u,w]=i.useState("preview"),[y,v]=i.useState(null),[b,h]=i.useState([]),[g,O]=i.useState(!0),[T,C]=i.useState(0),[D,E]=i.useState(null);i.useEffect(()=>{let x=!1;return O(!0),v(null),P("/api/taskforce/documents/generate-tasks/preview",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:t})},m).then(j=>j.json()).then(j=>{if(!x){if(j.error)throw new Error(j.error);h(j.tasks||[]),w("preview")}}).catch(j=>{x||(v(j?.message||"Failed to parse plan"),w("error"))}).finally(()=>{x||O(!1)}),()=>{x=!0}},[t,m]);const I=i.useCallback((x,j)=>{h(F=>It(F,x,j))},[]),z=()=>h(x=>we(x,!0)),H=()=>h(x=>we(x,!1)),q=Ze(b),Q=async()=>{w("generating"),E(null);try{const x=await P("/api/taskforce/documents/generate-tasks/commit",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({tasks:b})},m),j=await x.json().catch(()=>({}));if(!x.ok)throw new Error(j.error||`Generation failed (${x.status})`);C(j.created??0),w("done"),c(j.created??0)}catch(x){E(x?.message||"Generation failed"),w("error")}};return e.jsx("div",{className:S.overlay,onClick:x=>{x.target===x.currentTarget&&s()},children:e.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${S.modal}`,children:[e.jsxs("div",{className:`tf-modal-header ${S.header}`,children:[e.jsxs("div",{className:`tf-modal-title ${S.title}`,children:[e.jsx(Qe,{size:16,style:{color:"var(--brand-primary-strong)"}}),"Generate Tasks from Plan"]}),e.jsx("span",{className:S.docName,children:l}),e.jsx("button",{className:"tf-control-icon",onClick:s,title:"Close",children:e.jsx(Rt,{size:16})})]}),e.jsxs("div",{className:S.body,children:[g&&e.jsxs("div",{className:S.state,children:[e.jsx(_t,{size:20,className:L.docSpinning}),"Parsing plan…"]}),!g&&u==="error"&&e.jsxs("div",{className:S.stateError,children:[e.jsx(Ye,{size:16}),y||D||"An error occurred"]}),!g&&u==="done"&&e.jsxs("div",{className:S.stateDone,children:[e.jsx(At,{size:24,style:{color:"var(--status-success)"}}),e.jsxs("strong",{children:[T," task",T!==1?"s":""," created"]}),e.jsx("p",{children:"Tasks are now in your board. Switch to the Kanban or Hierarchy view to see them."})]}),!g&&(u==="preview"||u==="confirm"||u==="generating")&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:S.toolbar,children:[e.jsxs("span",{className:S.toolbarCount,children:[q," of ",Ze(we(b,!0))," tasks selected"]}),e.jsxs("div",{className:S.toolbarActions,children:[e.jsx("button",{className:"tf-control-icon",onClick:z,children:"Select all"}),e.jsx("button",{className:"tf-control-icon",onClick:H,children:"Deselect all"})]})]}),b.length===0?e.jsx("div",{className:S.state,children:"No tasks could be parsed from this document. Make sure the document uses ## H2 headings for phases and bullet points for tasks."}):e.jsx("div",{className:`${S.tree} tf-scrollbar`,children:b.map(x=>e.jsx($t,{node:x,depth:0,onToggle:I},x.idempotencyKey))})]})]}),!g&&u!=="done"&&u!=="error"&&e.jsxs("div",{className:S.footer,children:[e.jsx("button",{className:"tf-button-secondary",onClick:s,children:"Cancel"}),e.jsx("button",{className:"tf-button-primary",onClick:Q,disabled:q===0||u==="generating",children:u==="generating"?e.jsxs(e.Fragment,{children:[e.jsx(_t,{size:13,className:L.docSpinning})," Generating…"]}):e.jsxs(e.Fragment,{children:[e.jsx(Qe,{size:13})," Generate ",q," task",q!==1?"s":""]})})]}),!g&&u==="done"&&e.jsx("div",{className:S.footer,children:e.jsx("button",{className:"tf-button-primary",onClick:s,children:"Done"})})]})})}const Ys={"implementation-plan":"Implementation Plan",review:"Review",walkthrough:"Walkthrough",planning:"Planning",other:"Document"},Xs={"implementation-plan":r.typeBadgeImplementationPlan,review:r.typeBadgeReview,walkthrough:r.typeBadgeWalkthrough,planning:void 0,other:void 0},Zs={editor:r.editorLayoutEditor,split:r.editorLayoutSplit,preview:r.editorLayoutPreview},er=1500,tr=`
1
+ import{j as e,r as i,s as an,R as ve}from"./vendor-react-CKJs5o3c.js";import{h as $e,f as P,t as L,i as yt,j as gt,k as sn,R as rn,m as M,M as on,n as xt,o as cn,q as ln}from"./index-BWFQ9mGn.js";import{q as dn,x as un,w as mn,ax as hn,ay as pn,y as qe,i as fn,Z as Qe,X as Rt,az as _t,e as Ye,aA as At,aB as vn,aC as wn,a as kn,j as yn,aD as gn,aE as xn,aF as _n,t as Ee,aG as bn,r as Sn,p as jn,aH as bt,aw as Ve,aI as Cn,aJ as Nn,T as Tn,R as En,aK as Rn,B as An,U as In,S as $n}from"./vendor-icons-CLnehDTw.js";import{g as Ln}from"./documentReferences-BZB3nMRb.js";import{s as Dn,M as Re,r as Ae}from"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";import"./vendor-router-BbWMxlnO.js";const Bn="_index_1sp0v_1",Mn="_header_1sp0v_8",Pn="_title_1sp0v_23",zn="_search_1sp0v_35",Fn="_searchIcon_1sp0v_41",On="_searchInput_1sp0v_50",Hn="_list_1sp0v_67",Wn="_state_1sp0v_79",Gn="_stateError_1sp0v_87",Kn="_item_1sp0v_94",Un="_itemActive_1sp0v_116",Jn="_itemIcon_1sp0v_126",Vn="_itemBody_1sp0v_136",qn="_itemTitle_1sp0v_144",Qn="_itemTask_1sp0v_156",Yn="_itemBadge_1sp0v_167",Xn="_itemMeta_1sp0v_180",Zn="_itemMetaDetails_1sp0v_191",ea="_itemMetaReference_1sp0v_198",A={index:Bn,header:Mn,title:Pn,search:zn,searchIcon:Fn,searchInput:On,list:Hn,state:Wn,stateError:Gn,item:Kn,itemActive:Un,itemIcon:Jn,itemBody:Vn,itemTitle:qn,itemTask:Qn,itemBadge:Yn,itemMeta:Xn,itemMetaDetails:Zn,itemMetaReference:ea};function Xe(t){let l=t;try{l=decodeURIComponent(t)}catch{l=t}return l.trim().replace(/\\/g,"/").replace(/^\/+/,"").replace(/^\.\//,"").replace(/^\.taskforce\//,"")}function ta(t,l){return!!(t===l||t.endsWith(`/${l}`)||l.endsWith(`/${t}`))}function St(t){const l=Xe(String(t||""));if(!l)return null;const m=l.match(/(^|\/)(asset-[a-f0-9]{32})(?=[^/]*$)/i);return m?.[2]?m[2].toLowerCase():null}function et(t){return t.attachmentState==="attached"||t.attachmentState==="unattached"?t.attachmentState:(typeof t.attachmentCount=="number"&&Number.isFinite(t.attachmentCount)?t.attachmentCount:0)>0||t.taskId?"attached":"unattached"}function na(t,l,m,s){const c=l.trim().toLowerCase();return t.filter(u=>{const y=`${$e(u)} ${u.originalFilename||""}`.toLowerCase(),v=c.length===0||y.includes(c),b=m.length===0||m.includes(u.docType),h=et(u),g=s.length===0||s.includes(h);return v&&b&&g})}function aa({docType:t}){switch(t){case"implementation-plan":return e.jsx(fn,{size:13});case"review":return e.jsx(qe,{size:13});case"walkthrough":return e.jsx(pn,{size:13});default:return e.jsx(hn,{size:13})}}function sa(t){return t<1024?`${t}B`:t<1024*1024?`${(t/1024).toFixed(1)}KB`:`${(t/(1024*1024)).toFixed(1)}MB`}function ra(t){if(!t)return"";const l=new Date(t),s=new Date().getTime()-l.getTime(),c=Math.floor(s/(1e3*60*60*24));return c===0?"Today":c===1?"Yesterday":c<7?`${c}d ago`:c<30?`${Math.floor(c/7)}w ago`:l.toLocaleDateString()}function ia(t,l){t.key!=="Enter"&&t.key!==" "||(t.preventDefault(),l())}function oa({documents:t,selectedDocId:l,loading:m,error:s,searchQuery:c,taskById:u,onSearchChange:w,onSelect:y,onCloseTray:v,hasActiveFilters:b}){return e.jsxs("div",{className:A.index,children:[e.jsxs("div",{className:A.header,children:[e.jsxs("span",{className:A.title,children:[e.jsx(dn,{size:14}),"Documents"]}),v?e.jsx("button",{type:"button",className:"tf-control-icon",onClick:v,title:"Collapse document tray","aria-label":"Collapse document tray",children:e.jsx(un,{size:16})}):null]}),e.jsxs("div",{className:A.search,children:[e.jsx(mn,{size:12,className:A.searchIcon}),e.jsx("input",{type:"text",placeholder:"Search documents…",value:c,onChange:h=>w(h.target.value),className:A.searchInput})]}),e.jsxs("div",{className:`${A.list} tf-scrollbar`,children:[m&&e.jsx("div",{className:A.state,children:"Loading documents…"}),!m&&s&&e.jsx("div",{className:A.stateError,children:s}),!m&&!s&&t.length===0&&e.jsx("div",{className:A.state,children:b?"No documents match your filters.":"No documents found. Documents added as task attachments will appear here."}),!m&&t.map(h=>{const g=h.taskId?u.get(h.taskId):null,O=h.id===l,T=$e(h),C=et(h),D=typeof h.attachmentCount=="number"&&Number.isFinite(h.attachmentCount)?h.attachmentCount:h.taskId?1:0,E=D>1?`${D} tasks linked`:D===1?g?.title||"1 task linked":null;return e.jsxs("div",{role:"button",tabIndex:0,className:`${A.item} ${O?A.itemActive:""}`,onClick:()=>y(h),onKeyDown:I=>ia(I,()=>y(h)),children:[e.jsx("div",{className:A.itemIcon,children:e.jsx(aa,{docType:h.docType})}),e.jsxs("div",{className:A.itemBody,children:[e.jsx("span",{className:A.itemTitle,title:T,children:T}),C==="unattached"&&e.jsx("span",{className:A.itemBadge,children:"Unattached"}),E&&e.jsx("span",{className:A.itemTask,title:E,children:E}),e.jsxs("span",{className:A.itemMeta,children:[e.jsxs("span",{className:A.itemMetaDetails,children:[sa(h.sizeBytes),h.updatedAt&&e.jsxs(e.Fragment,{children:[" · ",ra(h.updatedAt)]})]}),h.referenceLabel&&e.jsx("span",{className:A.itemMetaReference,children:h.referenceLabel})]})]})]},h.id)})]})]})}function Ie(t){return function(l){return Dn(l,t)}}const ca="_viewer_v1pk0_1",la="_viewerMonochrome_v1pk0_10",da="_metaDocumentName_v1pk0_10",ua="_viewerEditMode_v1pk0_14",ma="_meta_v1pk0_10",ha="_metaLeft_v1pk0_30",pa="_metaRenameRow_v1pk0_49",fa="_typeBadge_v1pk0_56",va="_typeBadgeImplementationPlan_v1pk0_71",wa="_typeBadgeReview_v1pk0_77",ka="_typeBadgeWalkthrough_v1pk0_83",ya="_metaTaskName_v1pk0_89",ga="_statusBadge_v1pk0_98",xa="_metaDate_v1pk0_113",_a="_metaSize_v1pk0_114",ba="_actions_v1pk0_122",Sa="_actionBtn_v1pk0_129",ja="_dangerBtn_v1pk0_156",Ca="_generateBtn_v1pk0_167",Na="_editBtn_v1pk0_178",Ta="_saveBtn_v1pk0_189",Ea="_layoutToggle_v1pk0_205",Ra="_layoutBtn_v1pk0_213",Aa="_layoutBtnActive_v1pk0_229",Ia="_saveStatus_v1pk0_234",$a="_saveStatusSaved_v1pk0_241",La="_saveStatusError_v1pk0_245",Da="_unsaved_v1pk0_250",Ba="_viewerContent_v1pk0_256",Ma="_viewerBody_v1pk0_265",Pa="_viewerBodyFullWidth_v1pk0_273",za="_viewerMain_v1pk0_277",Fa="_reviewRail_v1pk0_285",Oa="_printHint_v1pk0_291",Ha="_reviewSection_v1pk0_298",Wa="_reviewHeader_v1pk0_307",Ga="_reviewTitle_v1pk0_315",Ka="_reviewSubtitle_v1pk0_324",Ua="_reviewControls_v1pk0_331",Ja="_reviewSelect_v1pk0_338",Va="_reviewSessionMeta_v1pk0_342",qa="_reviewStatusResolved_v1pk0_350",Qa="_reviewSessionLabel_v1pk0_356",Ya="_reviewTitleEditRow_v1pk0_361",Xa="_reviewSessionTimestamp_v1pk0_368",Za="_reviewAnchorLabel_v1pk0_372",es="_reviewComposer_v1pk0_378",ts="_reviewAnchorChip_v1pk0_385",ns="_reviewAnchorSnippet_v1pk0_398",as="_reviewAnchorClear_v1pk0_403",ss="_reviewCommentActions_v1pk0_416",rs="_reviewCommentAction_v1pk0_416",is="_reviewCommentEditor_v1pk0_437",os="_viewerState_v1pk0_443",cs="_viewerStateError_v1pk0_450",ls="_editorArea_v1pk0_457",ds="_editorPane_v1pk0_464",us="_editorLayoutSplit_v1pk0_472",ms="_previewPane_v1pk0_473",hs="_editorLayoutEditor_v1pk0_477",ps="_editorLayoutPreview_v1pk0_478",fs="_editorPaneLabel_v1pk0_482",vs="_editorTextarea_v1pk0_494",ws="_markdownSurface_v1pk0_536",ks="_attachModalBody_v1pk0_745",ys="_attachModalCopy_v1pk0_752",gs="_attachModalError_v1pk0_759",xs="_attachTaskList_v1pk0_772",_s="_attachTaskRow_v1pk0_781",bs="_attachTaskTitle_v1pk0_808",Ss="_attachTaskInfo_v1pk0_814",js="_attachTaskReference_v1pk0_822",Cs="_attachTaskMeta_v1pk0_829",Ns="_attachEmptyState_v1pk0_836",r={viewer:ca,viewerMonochrome:la,metaDocumentName:da,viewerEditMode:ua,meta:ma,metaLeft:ha,metaRenameRow:pa,typeBadge:fa,typeBadgeImplementationPlan:va,typeBadgeReview:wa,typeBadgeWalkthrough:ka,metaTaskName:ya,statusBadge:ga,metaDate:xa,metaSize:_a,actions:ba,actionBtn:Sa,dangerBtn:ja,generateBtn:Ca,editBtn:Na,saveBtn:Ta,layoutToggle:Ea,layoutBtn:Ra,layoutBtnActive:Aa,saveStatus:Ia,saveStatusSaved:$a,saveStatusError:La,unsaved:Da,viewerContent:Ba,viewerBody:Ma,viewerBodyFullWidth:Pa,viewerMain:za,reviewRail:Fa,printHint:Oa,reviewSection:Ha,reviewHeader:Wa,reviewTitle:Ga,reviewSubtitle:Ka,reviewControls:Ua,reviewSelect:Ja,reviewSessionMeta:Va,reviewStatusResolved:qa,reviewSessionLabel:Qa,reviewTitleEditRow:Ya,reviewSessionTimestamp:Xa,reviewAnchorLabel:Za,reviewComposer:es,reviewAnchorChip:ts,reviewAnchorSnippet:ns,reviewAnchorClear:as,reviewCommentActions:ss,reviewCommentAction:rs,reviewCommentEditor:is,viewerState:os,viewerStateError:cs,editorArea:ls,editorPane:ds,editorLayoutSplit:us,previewPane:ms,editorLayoutEditor:hs,editorLayoutPreview:ps,editorPaneLabel:fs,editorTextarea:vs,markdownSurface:ws,attachModalBody:ks,attachModalCopy:ys,attachModalError:gs,attachTaskList:xs,attachTaskRow:_s,attachTaskTitle:bs,attachTaskInfo:Ss,attachTaskReference:js,attachTaskMeta:Cs,attachEmptyState:Ns},Ts="_overlay_1unik_1",Es="_modal_1unik_12",Rs="_header_1unik_16",As="_title_1unik_20",Is="_docName_1unik_24",$s="_body_1unik_34",Ls="_state_1unik_41",Ds="_stateError_1unik_52",Bs="_stateDone_1unik_63",Ms="_toolbar_1unik_84",Ps="_toolbarCount_1unik_95",zs="_toolbarActions_1unik_100",Fs="_tree_1unik_105",Os="_taskRow_1unik_113",Hs="_taskRowDimmed_1unik_126",Ws="_taskCheck_1unik_130",Gs="_taskExpandBtn_1unik_139",Ks="_taskExpandSpacer_1unik_155",Us="_taskTitle_1unik_160",Js="_taskBadge_1unik_169",Vs="_footer_1unik_179",S={overlay:Ts,modal:Es,header:Rs,title:As,docName:Is,body:$s,state:Ls,stateError:Ds,stateDone:Bs,toolbar:Ms,toolbarCount:Ps,toolbarActions:zs,tree:Fs,taskRow:Os,taskRowDimmed:Hs,taskCheck:Ws,taskExpandBtn:Gs,taskExpandSpacer:Ks,taskTitle:Us,taskBadge:Js,footer:Vs},qs={1:"Low",2:"Medium",3:"High"};function we(t,l){return t.map(m=>({...m,selected:l,children:we(m.children,l)}))}function It(t,l,m){return t.map(s=>s.idempotencyKey===l?{...s,selected:m,children:we(s.children,m)}:{...s,children:It(s.children,l,m)})}function Ze(t){let l=0;for(const m of t)m.selected&&l++,l+=Ze(m.children);return l}function $t({node:t,depth:l,onToggle:m}){const[s,c]=i.useState(!0),u=t.children.length>0,w=l*20;return e.jsxs("div",{children:[e.jsxs("div",{className:`${S.taskRow} ${t.selected?"":S.taskRowDimmed}`,style:{paddingLeft:`${12+w}px`},children:[e.jsx("button",{className:S.taskCheck,onClick:()=>m(t.idempotencyKey,!t.selected),title:t.selected?"Deselect":"Select",children:t.selected?e.jsx(vn,{size:14,style:{color:"var(--brand-primary-strong)"}}):e.jsx(wn,{size:14,style:{color:"var(--text-muted)"}})}),u?e.jsx("button",{className:S.taskExpandBtn,onClick:()=>c(y=>!y),children:s?e.jsx(kn,{size:12}):e.jsx(yn,{size:12})}):e.jsx("span",{className:S.taskExpandSpacer}),e.jsx("span",{className:S.taskTitle,title:t.description||void 0,children:t.title}),e.jsx("span",{className:S.taskBadge,style:{color:yt(t.type),borderColor:yt(t.type)},children:t.type}),e.jsx("span",{className:S.taskBadge,style:{color:gt(t.priority),borderColor:gt(t.priority)},children:qs[t.priority]})]}),u&&s&&e.jsx("div",{children:t.children.map(y=>e.jsx($t,{node:y,depth:l+1,onToggle:m},y.idempotencyKey))})]})}function Qs({content:t,docTitle:l,apiBaseUrl:m="",onClose:s,onGenerated:c}){const[u,w]=i.useState("preview"),[y,v]=i.useState(null),[b,h]=i.useState([]),[g,O]=i.useState(!0),[T,C]=i.useState(0),[D,E]=i.useState(null);i.useEffect(()=>{let x=!1;return O(!0),v(null),P("/api/taskforce/documents/generate-tasks/preview",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:t})},m).then(j=>j.json()).then(j=>{if(!x){if(j.error)throw new Error(j.error);h(j.tasks||[]),w("preview")}}).catch(j=>{x||(v(j?.message||"Failed to parse plan"),w("error"))}).finally(()=>{x||O(!1)}),()=>{x=!0}},[t,m]);const I=i.useCallback((x,j)=>{h(F=>It(F,x,j))},[]),z=()=>h(x=>we(x,!0)),H=()=>h(x=>we(x,!1)),q=Ze(b),Q=async()=>{w("generating"),E(null);try{const x=await P("/api/taskforce/documents/generate-tasks/commit",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({tasks:b})},m),j=await x.json().catch(()=>({}));if(!x.ok)throw new Error(j.error||`Generation failed (${x.status})`);C(j.created??0),w("done"),c(j.created??0)}catch(x){E(x?.message||"Generation failed"),w("error")}};return e.jsx("div",{className:S.overlay,onClick:x=>{x.target===x.currentTarget&&s()},children:e.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${S.modal}`,children:[e.jsxs("div",{className:`tf-modal-header ${S.header}`,children:[e.jsxs("div",{className:`tf-modal-title ${S.title}`,children:[e.jsx(Qe,{size:16,style:{color:"var(--brand-primary-strong)"}}),"Generate Tasks from Plan"]}),e.jsx("span",{className:S.docName,children:l}),e.jsx("button",{className:"tf-control-icon",onClick:s,title:"Close",children:e.jsx(Rt,{size:16})})]}),e.jsxs("div",{className:S.body,children:[g&&e.jsxs("div",{className:S.state,children:[e.jsx(_t,{size:20,className:L.docSpinning}),"Parsing plan…"]}),!g&&u==="error"&&e.jsxs("div",{className:S.stateError,children:[e.jsx(Ye,{size:16}),y||D||"An error occurred"]}),!g&&u==="done"&&e.jsxs("div",{className:S.stateDone,children:[e.jsx(At,{size:24,style:{color:"var(--status-success)"}}),e.jsxs("strong",{children:[T," task",T!==1?"s":""," created"]}),e.jsx("p",{children:"Tasks are now in your board. Switch to the Kanban or Hierarchy view to see them."})]}),!g&&(u==="preview"||u==="confirm"||u==="generating")&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:S.toolbar,children:[e.jsxs("span",{className:S.toolbarCount,children:[q," of ",Ze(we(b,!0))," tasks selected"]}),e.jsxs("div",{className:S.toolbarActions,children:[e.jsx("button",{className:"tf-control-icon",onClick:z,children:"Select all"}),e.jsx("button",{className:"tf-control-icon",onClick:H,children:"Deselect all"})]})]}),b.length===0?e.jsx("div",{className:S.state,children:"No tasks could be parsed from this document. Make sure the document uses ## H2 headings for phases and bullet points for tasks."}):e.jsx("div",{className:`${S.tree} tf-scrollbar`,children:b.map(x=>e.jsx($t,{node:x,depth:0,onToggle:I},x.idempotencyKey))})]})]}),!g&&u!=="done"&&u!=="error"&&e.jsxs("div",{className:S.footer,children:[e.jsx("button",{className:"tf-button-secondary",onClick:s,children:"Cancel"}),e.jsx("button",{className:"tf-button-primary",onClick:Q,disabled:q===0||u==="generating",children:u==="generating"?e.jsxs(e.Fragment,{children:[e.jsx(_t,{size:13,className:L.docSpinning})," Generating…"]}):e.jsxs(e.Fragment,{children:[e.jsx(Qe,{size:13})," Generate ",q," task",q!==1?"s":""]})})]}),!g&&u==="done"&&e.jsx("div",{className:S.footer,children:e.jsx("button",{className:"tf-button-primary",onClick:s,children:"Done"})})]})})}const Ys={"implementation-plan":"Implementation Plan",review:"Review",walkthrough:"Walkthrough",planning:"Planning",other:"Document"},Xs={"implementation-plan":r.typeBadgeImplementationPlan,review:r.typeBadgeReview,walkthrough:r.typeBadgeWalkthrough,planning:void 0,other:void 0},Zs={editor:r.editorLayoutEditor,split:r.editorLayoutSplit,preview:r.editorLayoutPreview},er=1500,tr=`
2
2
  @page {
3
3
  margin: 0.94in 1.02in 1in;
4
4
  }
@@ -1 +1 @@
1
- import{R as k,j as t}from"./vendor-react-CKJs5o3c.js";import{S as A,U as N,V as E,W as I,X as S,Y as M}from"./index-MAHKvFqp.js";import"./vendor-icons-B32hGuF2.js";import"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";import"./vendor-router-BbWMxlnO.js";const $="_thread_1mrb3_1",z="_empty_1mrb3_7",P="_item_1mrb3_17",H="_comment_1mrb3_24",R="_commentAgent_1mrb3_28",B="_commentMember_1mrb3_32",W="_event_1mrb3_36",K="_eventSystem_1mrb3_43",w="_header_1mrb3_47",D="_eventHeader_1mrb3_64",F="_author_1mrb3_71",O="_time_1mrb3_79",U="_commentText_1mrb3_83",X="_eventText_1mrb3_123",Y="_eventChanges_1mrb3_129",q="_eventChange_1mrb3_129",e={thread:$,empty:z,item:P,comment:H,commentAgent:R,commentMember:B,event:W,eventSystem:K,header:w,eventHeader:D,author:F,time:O,commentText:U,eventText:X,eventChanges:Y,eventChange:q};function v(c,m){const r=c.replace("#","").trim();if(r.length!==3&&r.length!==6)return"";const i=r.length===3?r.split("").map(l=>l+l).join(""):r,a=Number.parseInt(i,16);if(Number.isNaN(a))return"";const _=a>>16&255,g=a>>8&255,u=a&255;return`rgba(${_}, ${g}, ${u}, ${m})`}function ee({activity:c,comments:m,formatFieldValue:r,resolveActorPresentation:i,onOpenTaskById:a,emptyMessage:_="No activity yet.",listClassName:g,emptyClassName:u,endRef:l}){const b=k.useMemo(()=>A({activity:c,comments:m}),[c,m]);return t.jsxs("div",{className:[e.thread,g].filter(Boolean).join(" "),children:[b.length===0?t.jsx("div",{className:[e.empty,u].filter(Boolean).join(" "),children:_}):null,b.map(n=>{if(n.type==="comment"){const o=i({actorId:n.comment.author,actorType:n.comment.actor?.kind==="ai"?"ai":n.comment.actor?.kind==="human"?"human":null,actorProfile:n.comment.actor||null}),x=o.kind==="agent"?"agent":"member",{ActorIcon:f}=o,s=o.color,T=s&&v(s,.35)?{background:`linear-gradient(135deg, ${v(s,.18)} 0%, ${v(s,.1)} 100%)`,borderColor:v(s,.35)}:void 0;return t.jsxs("div",{className:[e.item,e.comment,x==="agent"?e.commentAgent:e.commentMember].join(" "),children:[t.jsxs("div",{className:e.header,children:[t.jsxs("span",{className:e.author,style:s?{color:s}:void 0,children:[t.jsx(f,{size:12,strokeWidth:1.5}),o.label]}),t.jsx("span",{className:e.time,children:N(n.comment.timestamp,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),t.jsx("div",{className:e.commentText,style:T,children:t.jsx(E,{onTaskIdClick:a,children:n.comment.text})})]},n.id)}const d=i({actorId:n.event.actor,actorType:n.event.actorType,actorProfile:n.event.actorProfile||null,fallbackKind:"system"}),{ActorIcon:C}=d,y=d.color,h=Object.entries(n.event.details?.changes||{}),p=I(n.event),j=h.length>1&&p?h.filter(([o])=>o!==p):h.length>1?h:[];return t.jsxs("div",{className:[e.item,e.event,d.kind==="system"?e.eventSystem:""].filter(Boolean).join(" "),children:[t.jsxs("div",{className:[e.header,e.eventHeader].join(" "),children:[t.jsxs("span",{className:e.author,style:y?{color:y}:void 0,children:[t.jsx(C,{size:12,strokeWidth:1.5}),d.label]}),t.jsx("span",{className:e.time,children:N(n.event.createdAt,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),t.jsxs("div",{className:e.eventText,children:[t.jsx("div",{children:S(n.event,r)}),j.length>0?t.jsx("div",{className:e.eventChanges,children:j.map(([o,x])=>t.jsx("div",{className:e.eventChange,children:M(o,x,r)},o))}):null]})]},n.id)}),t.jsx("div",{ref:l})]})}export{ee as EntityActivityTimeline};
1
+ import{R as k,j as t}from"./vendor-react-CKJs5o3c.js";import{S as A,U as N,V as E,W as I,X as S,Y as M}from"./index-BWFQ9mGn.js";import"./vendor-icons-CLnehDTw.js";import"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";import"./vendor-router-BbWMxlnO.js";const $="_thread_1mrb3_1",z="_empty_1mrb3_7",P="_item_1mrb3_17",H="_comment_1mrb3_24",R="_commentAgent_1mrb3_28",B="_commentMember_1mrb3_32",W="_event_1mrb3_36",K="_eventSystem_1mrb3_43",w="_header_1mrb3_47",D="_eventHeader_1mrb3_64",F="_author_1mrb3_71",O="_time_1mrb3_79",U="_commentText_1mrb3_83",X="_eventText_1mrb3_123",Y="_eventChanges_1mrb3_129",q="_eventChange_1mrb3_129",e={thread:$,empty:z,item:P,comment:H,commentAgent:R,commentMember:B,event:W,eventSystem:K,header:w,eventHeader:D,author:F,time:O,commentText:U,eventText:X,eventChanges:Y,eventChange:q};function v(c,m){const r=c.replace("#","").trim();if(r.length!==3&&r.length!==6)return"";const i=r.length===3?r.split("").map(l=>l+l).join(""):r,a=Number.parseInt(i,16);if(Number.isNaN(a))return"";const _=a>>16&255,g=a>>8&255,u=a&255;return`rgba(${_}, ${g}, ${u}, ${m})`}function ee({activity:c,comments:m,formatFieldValue:r,resolveActorPresentation:i,onOpenTaskById:a,emptyMessage:_="No activity yet.",listClassName:g,emptyClassName:u,endRef:l}){const b=k.useMemo(()=>A({activity:c,comments:m}),[c,m]);return t.jsxs("div",{className:[e.thread,g].filter(Boolean).join(" "),children:[b.length===0?t.jsx("div",{className:[e.empty,u].filter(Boolean).join(" "),children:_}):null,b.map(n=>{if(n.type==="comment"){const o=i({actorId:n.comment.author,actorType:n.comment.actor?.kind==="ai"?"ai":n.comment.actor?.kind==="human"?"human":null,actorProfile:n.comment.actor||null}),x=o.kind==="agent"?"agent":"member",{ActorIcon:f}=o,s=o.color,T=s&&v(s,.35)?{background:`linear-gradient(135deg, ${v(s,.18)} 0%, ${v(s,.1)} 100%)`,borderColor:v(s,.35)}:void 0;return t.jsxs("div",{className:[e.item,e.comment,x==="agent"?e.commentAgent:e.commentMember].join(" "),children:[t.jsxs("div",{className:e.header,children:[t.jsxs("span",{className:e.author,style:s?{color:s}:void 0,children:[t.jsx(f,{size:12,strokeWidth:1.5}),o.label]}),t.jsx("span",{className:e.time,children:N(n.comment.timestamp,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),t.jsx("div",{className:e.commentText,style:T,children:t.jsx(E,{onTaskIdClick:a,children:n.comment.text})})]},n.id)}const d=i({actorId:n.event.actor,actorType:n.event.actorType,actorProfile:n.event.actorProfile||null,fallbackKind:"system"}),{ActorIcon:C}=d,y=d.color,h=Object.entries(n.event.details?.changes||{}),p=I(n.event),j=h.length>1&&p?h.filter(([o])=>o!==p):h.length>1?h:[];return t.jsxs("div",{className:[e.item,e.event,d.kind==="system"?e.eventSystem:""].filter(Boolean).join(" "),children:[t.jsxs("div",{className:[e.header,e.eventHeader].join(" "),children:[t.jsxs("span",{className:e.author,style:y?{color:y}:void 0,children:[t.jsx(C,{size:12,strokeWidth:1.5}),d.label]}),t.jsx("span",{className:e.time,children:N(n.event.createdAt,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),t.jsxs("div",{className:e.eventText,children:[t.jsx("div",{children:S(n.event,r)}),j.length>0?t.jsx("div",{className:e.eventChanges,children:j.map(([o,x])=>t.jsx("div",{className:e.eventChange,children:M(o,x,r)},o))}):null]})]},n.id)}),t.jsx("div",{ref:l})]})}export{ee as EntityActivityTimeline};
@@ -1 +1 @@
1
- import{r as i,j as s}from"./vendor-react-CKJs5o3c.js";import{t as e}from"./index-MAHKvFqp.js";import{h as g,Z as v,b as j,m as f}from"./vendor-icons-B32hGuF2.js";import"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";import"./vendor-router-BbWMxlnO.js";function T({initiativeTemplates:n,onRefreshInitiativeTemplates:u,onCreateInitiativeFromTemplate:l}){const[a,o]=i.useState(""),[c,x]=i.useState(""),[d,m]=i.useState(!1),[r,p]=i.useState(null);return i.useEffect(()=>{if(!a&&n.length>0){const t=n[0];o(t.id)}},[n,a]),s.jsx("div",{className:`${e.standalonePage} ${e.standaloneContent}`,style:{overflow:"auto"},children:s.jsx("div",{className:e.settingsContent,style:{maxWidth:900,margin:"0 auto",width:"100%"},children:s.jsxs("div",{className:e.settingGroup,children:[s.jsxs("div",{className:e.settingTitleRow,children:[s.jsx("h2",{className:e.settingTitle,children:"Initiatives"}),s.jsx("button",{className:e.copyBtn,onClick:()=>{u?.()},children:"Refresh"})]}),s.jsx("p",{className:`${e.settingsHint} ${e.marginBottom12}`,children:"Create initiative-ready planning structures from reusable templates."}),s.jsxs("div",{className:e.exportItem,children:[s.jsx("label",{className:e.label,children:"Template"}),s.jsx("select",{className:e.input,value:a,onChange:t=>{const h=t.target.value;o(h)},children:n.map(t=>s.jsx("option",{value:t.id,children:t.name},t.id))})]}),s.jsxs("div",{className:`${e.exportItem} ${e.marginTop12}`,children:[s.jsx("label",{className:e.label,children:"Initiative Title"}),s.jsx("input",{className:e.input,placeholder:"e.g. Taskforce Private Beta Launch",value:c,onChange:t=>x(t.target.value)})]}),s.jsxs("button",{className:`${e.secondaryHeaderBtn} ${e.marginTop12}`,disabled:d||!a||!c.trim()||!l,onClick:async()=>{if(!l)return;m(!0);const t=await l({templateId:a,title:c.trim()});m(!1),p({type:t.success?"success":"error",message:t.success?"Initiative created from template.":t.error||"Failed to create initiative."})},children:[d?s.jsx(g,{size:14,className:e.spinner}):s.jsx(v,{size:14}),"Create Initiative"]}),r&&s.jsxs("div",{className:`${r.type==="success"?e.successMessage:e.errorMessage} ${e.marginTop12}`,children:[r.type==="success"?s.jsx(j,{size:14}):s.jsx(f,{size:14}),r.message]})]})})})}export{T as InitiativesModule};
1
+ import{r as i,j as s}from"./vendor-react-CKJs5o3c.js";import{t as e}from"./index-BWFQ9mGn.js";import{h as g,Z as j,b as v,m as f}from"./vendor-icons-CLnehDTw.js";import"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";import"./vendor-router-BbWMxlnO.js";function T({initiativeTemplates:n,onRefreshInitiativeTemplates:u,onCreateInitiativeFromTemplate:r}){const[a,o]=i.useState(""),[c,x]=i.useState(""),[d,m]=i.useState(!1),[l,p]=i.useState(null);return i.useEffect(()=>{if(!a&&n.length>0){const t=n[0];o(t.id)}},[n,a]),s.jsx("div",{className:`${e.standalonePage} ${e.standaloneContent}`,style:{overflow:"auto"},children:s.jsx("div",{className:e.settingsContent,style:{maxWidth:900,margin:"0 auto",width:"100%"},children:s.jsxs("div",{className:e.settingGroup,children:[s.jsxs("div",{className:e.settingTitleRow,children:[s.jsx("h2",{className:e.settingTitle,children:"Initiatives"}),s.jsx("button",{className:e.copyBtn,onClick:()=>{u?.()},children:"Refresh"})]}),s.jsx("p",{className:`${e.settingsHint} ${e.marginBottom12}`,children:"Create initiative-ready planning structures from reusable templates."}),s.jsxs("div",{className:e.exportItem,children:[s.jsx("label",{className:e.label,children:"Template"}),s.jsx("select",{className:e.input,value:a,onChange:t=>{const h=t.target.value;o(h)},children:n.map(t=>s.jsx("option",{value:t.id,children:t.name},t.id))})]}),s.jsxs("div",{className:`${e.exportItem} ${e.marginTop12}`,children:[s.jsx("label",{className:e.label,children:"Initiative Title"}),s.jsx("input",{className:e.input,placeholder:"e.g. Taskforce Public Beta Launch",value:c,onChange:t=>x(t.target.value)})]}),s.jsxs("button",{className:`${e.secondaryHeaderBtn} ${e.marginTop12}`,disabled:d||!a||!c.trim()||!r,onClick:async()=>{if(!r)return;m(!0);const t=await r({templateId:a,title:c.trim()});m(!1),p({type:t.success?"success":"error",message:t.success?"Initiative created from template.":t.error||"Failed to create initiative."})},children:[d?s.jsx(g,{size:14,className:e.spinner}):s.jsx(j,{size:14}),"Create Initiative"]}),l&&s.jsxs("div",{className:`${l.type==="success"?e.successMessage:e.errorMessage} ${e.marginTop12}`,children:[l.type==="success"?s.jsx(v,{size:14}):s.jsx(f,{size:14}),l.message]})]})})})}export{T as InitiativesModule};
@@ -0,0 +1 @@
1
+ import{r as s,j as e}from"./vendor-react-CKJs5o3c.js";import{H as he,t as Oe,J as Ve,K as Pe,L as fe,N as be,O as Ke,Q as He}from"./index-BWFQ9mGn.js";import{aL as qe,h as ze,U as Ye}from"./vendor-icons-CLnehDTw.js";import{u as We,a as Ge}from"./vendor-router-BbWMxlnO.js";import"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";const Qe="_plansWrapper_nb8ab_1",Je="_contentFrame_nb8ab_24",Xe="_shellOwnsScroll_nb8ab_32",Ze="_withChrome_nb8ab_38",en="_siteVariant_nb8ab_42",nn="_title_nb8ab_56",tn="_subtitle_nb8ab_70",rn="_header_nb8ab_77",an="_planCard_nb8ab_92",sn="_grid_nb8ab_105",cn="_pricingNotes_nb8ab_113",on="_planName_nb8ab_122",ln="_featureText_nb8ab_129",un="_currentBadge_nb8ab_133",dn="_navAction_nb8ab_137",mn="_backBtn_nb8ab_138",pn="_priceRows_nb8ab_149",gn="_foundingBeta_nb8ab_153",fn="_cloudCapacityNote_nb8ab_172",bn="_headerBar_nb8ab_239",hn="_headerActions_nb8ab_248",yn="_debugMeta_nb8ab_299",_n="_planNoticeCard_nb8ab_362",Cn="_planDescription_nb8ab_373",Sn="_teamComingSoonCard_nb8ab_378",wn="_clickablePlanCard_nb8ab_397",vn="_activePlanCard_nb8ab_412",xn="_callToAction_nb8ab_476",Nn="_primaryCta_nb8ab_488",kn="_secondaryCta_nb8ab_499",Pn="_currentCta_nb8ab_511",In="_featuresList_nb8ab_525",An="_priceRow_nb8ab_149",jn="_regularPriceLine_nb8ab_549",Tn="_campaignPriceLine_nb8ab_550",Ln="_priceRowWithCampaign_nb8ab_557",Rn="_priceRowAmount_nb8ab_561",En="_regularPriceDiscounted_nb8ab_567",Bn="_priceRowInterval_nb8ab_573",$n="_campaignPriceLabel_nb8ab_582",Mn="_campaignPriceAmount_nb8ab_587",Un="_campaignPriceInterval_nb8ab_593",Dn="_ctaRow_nb8ab_598",Fn="_featureItem_nb8ab_604",On="_featureIcon_nb8ab_610",Vn="_featureLimitAccent_nb8ab_624",Kn="_featureLimitUnit_nb8ab_635",Hn="_featureTextBlock_nb8ab_641",qn="_featureDescription_nb8ab_647",zn="_emptyState_nb8ab_653",Yn="_marketingEmptyState_nb8ab_662",Wn="_emptyBadge_nb8ab_690",Gn="_emptyHighlights_nb8ab_705",Qn="_loader_nb8ab_727",Jn="_spinner_nb8ab_737",Xn="_statusBanner_nb8ab_790",Zn="_successBanner_nb8ab_798",et="_infoBanner_nb8ab_804",nt="_errorBanner_nb8ab_810",r={plansWrapper:Qe,contentFrame:Je,shellOwnsScroll:Xe,withChrome:Ze,siteVariant:en,title:nn,subtitle:tn,header:rn,planCard:an,grid:sn,pricingNotes:cn,planName:on,featureText:ln,currentBadge:un,navAction:dn,backBtn:mn,priceRows:pn,foundingBeta:gn,cloudCapacityNote:fn,headerBar:bn,headerActions:hn,debugMeta:yn,planNoticeCard:_n,planDescription:Cn,teamComingSoonCard:Sn,clickablePlanCard:wn,activePlanCard:vn,callToAction:xn,primaryCta:Nn,secondaryCta:kn,currentCta:Pn,featuresList:In,priceRow:An,regularPriceLine:jn,campaignPriceLine:Tn,priceRowWithCampaign:Ln,priceRowAmount:Rn,regularPriceDiscounted:En,priceRowInterval:Bn,campaignPriceLabel:$n,campaignPriceAmount:Mn,campaignPriceInterval:Un,ctaRow:Dn,featureItem:Fn,featureIcon:On,featureLimitAccent:Vn,featureLimitUnit:Kn,featureTextBlock:Hn,featureDescription:qn,emptyState:zn,marketingEmptyState:Yn,emptyBadge:Wn,emptyHighlights:Gn,loader:Qn,spinner:Jn,statusBanner:Xn,successBanner:Zn,infoBanner:et,errorBanner:nt};function tt(){const n=globalThis.__DEBUG_MODE__;return typeof n=="boolean"?n:!1}function rt(n){const a=String(n?.environment||"").trim(),o=String(n?.runtimeMode||"").trim();return!a&&!o?null:a&&o?`${a} (${o})`:a||o||null}const at=new Set(["a","b","br","em","i","li","ol","p","strong","u","ul"]);function it(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function st(n){const a=String(n||"").trim();if(!a)return"";if(typeof document>"u")return it(a);const o=document.createElement("template");o.innerHTML=a;const p=document.createElement("div"),l=_=>{if(_.nodeType===Node.TEXT_NODE)return document.createTextNode(_.textContent||"");if(_.nodeType!==Node.ELEMENT_NODE)return null;const E=_,I=E.tagName.toLowerCase();if(I==="script"||I==="style")return null;const $=Array.from(E.childNodes).map(l).filter(b=>!!b);if(!at.has(I)){const b=document.createDocumentFragment();for(const W of $)b.appendChild(W);return b}const x=document.createElement(I);if(I==="a"){const b=String(E.getAttribute("href")||"").trim();/^(https?:|mailto:|\/|#)/i.test(b)&&(x.setAttribute("href",b),x.setAttribute("rel","noopener noreferrer"))}for(const b of $)x.appendChild(b);return x};for(const _ of Array.from(o.content.childNodes)){const E=l(_);E&&p.appendChild(E)}return p.innerHTML}function ct(n,a){if(n==null||!a)return"Contact Sales";try{return new Intl.NumberFormat("en-US",{style:"currency",currency:a.toUpperCase(),minimumFractionDigits:0}).format(n/100)}catch{return`${a.toUpperCase()} ${n/100}`}}function ot(){return"$0"}function V(n){return n?n.pricingType==="free"?!0:n.unitAmount!=null&&n.currency!=null:!1}function Te(n){return n?n.pricingType==="free"?ot():ct(n.unitAmount,n.currency):"Unavailable"}function Le(n,a){return V(a)?{price:a,pricingAudience:"campaign"}:{price:n,pricingAudience:"public"}}function lt(n,a,o,p){const l=V(n)||V(o),_=V(a)||V(p);if(!l&&!_)return null;const E=(I,$,x)=>{if(!V(I)&&!V($))return null;const b=V($),W=x==="year"?"year":"month";return e.jsxs("div",{className:`${r.priceRow} ${b?r.priceRowWithCampaign:""}`,children:[V(I)?e.jsxs("div",{className:r.regularPriceLine,children:[e.jsx("span",{className:`${r.priceRowAmount} ${b?r.regularPriceDiscounted:""}`,children:Te(I)}),e.jsxs("span",{className:r.priceRowInterval,children:["/ ",W]})]}):null,b?e.jsxs("div",{className:r.campaignPriceLine,children:[e.jsx("span",{className:r.campaignPriceLabel,children:"Founding Offer:"}),e.jsx("span",{className:r.campaignPriceAmount,children:Te($)}),e.jsxs("span",{className:r.campaignPriceInterval,children:["/ ",W]})]}):null]},x)};return e.jsxs("div",{className:r.priceRows,children:[E(n,o,"month"),E(a,p,"year")]})}function Re(n){const a=[n.pricing.month,n.pricing.year].filter(Boolean);if(a.some(p=>p.pricingType==="free"))return 0;const o=a.map(p=>p.pricingType==="stripe"&&typeof p.unitAmount=="number"?p.unitAmount:null).filter(p=>p!=null);return o.length>0?Math.min(...o):Number.POSITIVE_INFINITY}function ut(n){return String(n||"").replace(/[_\-.]+/g," ").replace(/\b\w/g,a=>a.toUpperCase())}function Ie(n,a){const o=n?.[a],p=Number(o);return Number.isFinite(p)?Math.max(1,Math.floor(p)):null}function ve(n,a){return a!==1?n:n.replace(/\b([A-Za-z]+)ies\b$/,"$1y").replace(/\b([A-Za-z]+[^s\s])s\b$/,"$1")}function dt(n){return n<=1e3?{value:String(n),unit:"MB"}:{value:String(Math.round(n/1e3)),unit:"GB"}}function mt(n,a){const o=String(n.publicLabel||n.label||"").trim()||ut(n.featureKey),p=n.config&&typeof n.config=="object"?n.config:{};if(n.featureKey==="context.uploads"){const l=Ie(p,"storageLimitMb");if(l!==null){const _=dt(l);return{limitValue:_.value,limitUnit:_.unit,baseLabel:ve(o,l)}}}if(n.featureKey==="workspace.workspaces"){const l=Ie(p,"maxWorkspaces");if(l!==null)return{limitValue:String(l),limitUnit:null,baseLabel:ve(o,l)}}if(n.featureKey==="collaboration.ai_profiles"){const l=Ie(p,"maxAiProfiles");if(l!==null)return{limitValue:String(l),limitUnit:null,baseLabel:ve(o,l)}}if(n.featureKey==="collaboration.team_management"){const l=Number(a);if(Number.isFinite(l)&&l>0){const _=Math.floor(l);return{limitValue:String(_),limitUnit:null,baseLabel:ve(o,_)}}}return{limitValue:null,limitUnit:null,baseLabel:o}}function pt({heading:n,subtitle:a,variant:o="app",theme:p="dark",chrome:l,footer:_,isAuthenticated:E,authSessionResolved:I=!0,currentPlanId:$,currentPlanVersionId:x,currentEntitlementState:b,markCurrentPlan:W,canManageCurrentPlan:G=!0,pricingEndpoint:A,statusBanner:H,onBack:j,backLabel:T,backDisabled:M=!1,topActions:se,shellOwnsScroll:ye=!1,showPageBackButton:X=!0,showHeaderBarWithChrome:re=!1,preferPricingPageTitle:_e=!0,currentPlanCardActionMode:Ce="manage",fallbackPricingSource:f=null,onSelectPlan:q}){const[Z,Q]=s.useState([]),[ce,F]=s.useState(null),[N,L]=s.useState({pageTitle:null,pageDescription:null}),[oe,z]=s.useState(!0),[le,ue]=s.useState(null),[Se,ee]=s.useState(0);s.useEffect(()=>{let i=!0;return(async()=>{const D=String(A||"/api/taskforce/public/pricing").trim()||"/api/taskforce/public/pricing";i&&(z(!0),ue(null));try{const v=await fetch(D,{method:"GET",credentials:"include"}),u=await v.json().catch(()=>({}));if(v.ok){i&&(Q(Array.isArray(u?.plans)?u.plans:[]),F(u?.pricingSource&&typeof u.pricingSource=="object"?u.pricingSource:null),L({pageTitle:typeof u?.pageTitle=="string"&&u.pageTitle.trim()||null,pageDescription:typeof u?.pageDescription=="string"&&u.pageDescription.trim()||null}));return}throw new Error(String(u?.error||`Failed to load pricing (${v.status})`))}catch(v){if(i){const u=v instanceof Error?v.message:"Failed to load pricing";ue(u||"Failed to load pricing"),F(null),L({pageTitle:null,pageDescription:null})}}finally{i&&z(!1)}})(),()=>{i=!1}},[A,Se]);const J=s.useMemo(()=>[...Z].sort((i,U)=>{const D=Re(i),v=Re(U);if(D!==v)return D-v;const u=i.defaultVersion?.versionNumber||0,O=U.defaultVersion?.versionNumber||0;return u!==O?u-O:String(i.displayName||i.planId).localeCompare(String(U.displayName||U.planId))}),[Z]),de=s.useMemo(()=>rt(ce||f),[f,ce]),xe=String((_e?N.pageTitle:null)||n).trim()||n,me=String(N.pageDescription||a||"").trim(),w=s.useMemo(()=>st(me),[me]),ne=I,pe=`${r.plansWrapper} ${ye?r.shellOwnsScroll:"tf-scrollbar"} ${o==="site"?r.siteVariant:""} ${l?r.withChrome:""}`.trim(),B=i=>ye?e.jsxs(e.Fragment,{children:[l,i,_]}):e.jsxs("div",{className:Oe.standaloneWrapper,"data-theme":p,children:[l,i,_]});return B(oe?e.jsx(e.Fragment,{children:e.jsx("div",{className:pe,children:e.jsx("div",{className:r.contentFrame,children:e.jsxs("div",{className:r.loader,children:[e.jsx(ze,{size:48,className:r.spinner}),e.jsx("p",{children:"Loading plans..."})]})})})}):le?e.jsx(e.Fragment,{children:e.jsx("div",{className:pe,children:e.jsx("div",{className:r.contentFrame,children:e.jsxs("div",{className:r.emptyState,children:[e.jsx("h2",{children:"Connecting to plan pricing..."}),e.jsx("p",{children:le}),e.jsx("button",{className:r.backBtn,onClick:()=>ee(i=>i+1),children:"Retry"})]})})})}):e.jsx(e.Fragment,{children:e.jsx("div",{className:pe,children:e.jsxs("div",{className:r.contentFrame,children:[e.jsxs("div",{className:r.header,children:[(!l||re)&&(X||se)&&e.jsxs("div",{className:r.headerBar,children:[e.jsx("div",{children:X?e.jsx("button",{className:r.backBtn,onClick:j,disabled:M,children:T}):null}),e.jsx("div",{className:r.headerActions,children:se})]}),e.jsx("h1",{className:r.title,children:xe}),w&&e.jsx("div",{className:r.subtitle,dangerouslySetInnerHTML:{__html:w}}),tt()&&de?e.jsxs("p",{className:r.debugMeta,children:["Pricing source: ",de]}):null,H&&e.jsx("div",{className:`${r.statusBanner} ${H.type==="success"?r.successBanner:H.type==="info"?r.infoBanner:r.errorBanner}`,children:H.message})]}),e.jsxs("section",{className:r.foundingBeta,"aria-labelledby":"founding-beta-heading",children:[e.jsx("h2",{id:"founding-beta-heading",children:"Founding beta"}),e.jsx("p",{children:"Taskforce is in founding beta. You may run into rough edges while we improve cloud workspaces and agent workflows. Early members get access while the product is still forming, plus a direct role in shaping what comes next."})]}),J.length===0?e.jsxs("div",{className:`${r.emptyState} ${r.marketingEmptyState}`,children:[e.jsx("span",{className:r.emptyBadge,children:"Coming Soon"}),e.jsx("h2",{children:"Paid plans are getting their final polish."}),e.jsx("p",{children:"Taskforce pricing is on the way with flexible options for solo operators, teams, and larger rollouts. Check back soon for launch tiers, feature bundles, and early access details."}),e.jsxs("div",{className:r.emptyHighlights,"aria-label":"Upcoming pricing highlights",children:[e.jsx("span",{children:"Launch-ready tiers"}),e.jsx("span",{children:"Team billing controls"}),e.jsx("span",{children:"Feature-based packaging"})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:r.grid,children:J.map(i=>{const U=i.pricing.month,D=i.pricing.year,v=i.campaignPricing?.month||null,u=i.campaignPricing?.year||null,O=Le(U,v),K=Le(D,u),Y=V(O.price),ae=V(K.price),ie=Y&&ae,k=String(i.defaultVersion?.planVersionId||"").trim(),Ne=he(b),ge=W??Ne,ke=!!(k&&x&&x===k)||!!(!x&&($&&$===i.planId)),te=ge&&ke&&b!=="canceled",t=Y?"month":ae?"year":null,c=t==="year"?K:O,y=Ce==="manage",g=Ce==="indicator",h=ne&&!!k&&(te?y&&G:!!t),m=()=>{if(k){if(te){if(!y||!G)return;q({planId:i.planId,planVersionId:k,interval:t||"month",pricingType:c.price?.pricingType||"stripe",pricingAudience:c.pricingAudience,isCurrentPlan:!0});return}t&&q({planId:i.planId,planVersionId:k,interval:t,pricingType:c.price?.pricingType||"stripe",pricingAudience:c.pricingAudience,isCurrentPlan:!1})}};return e.jsxs("div",{className:`${r.planCard} ${te?r.activePlanCard:""} ${h?r.clickablePlanCard:""}`,"data-testid":`plan-card-${i.planId}`,role:h?"button":void 0,tabIndex:h?0:void 0,onClick:h?m:void 0,onKeyDown:h?d=>{(d.key==="Enter"||d.key===" ")&&(d.preventDefault(),m())}:void 0,children:[te&&e.jsx("span",{className:r.currentBadge,children:"Current Plan"}),e.jsx("h3",{className:r.planName,children:i.displayName}),lt(U,D,v,u),String(i.description||"").trim()&&e.jsx("p",{className:r.planDescription,children:String(i.description||"").trim()}),e.jsx("div",{className:r.featuresList,children:Array.isArray(i.features)&&i.features.length>0?i.features.map((d,S)=>e.jsxs("div",{className:r.featureItem,children:[e.jsx(qe,{className:r.featureIcon}),e.jsxs("div",{className:r.featureTextBlock,children:[(()=>{const{limitValue:P,limitUnit:C,baseLabel:R}=mt(d,i.defaultVersion?.seatLimit);return e.jsxs("span",{className:r.featureText,children:[P&&e.jsxs("span",{className:r.featureLimitAccent,children:[e.jsx("span",{children:P}),C?e.jsx("span",{className:r.featureLimitUnit,children:C}):null]}),e.jsx("span",{children:P?` ${R}`:R})]})})(),d.publicDescriptionVisible!==!1&&String(d.publicDescription||d.description||"").trim()&&e.jsx("span",{className:r.featureDescription,children:String(d.publicDescription||d.description||"").trim()})]})]},`${d.featureKey}-${S}`)):e.jsx("span",{className:r.featureText,children:"No additional features included"})}),te?y?e.jsx("button",{className:`${r.callToAction} ${r.currentCta}`,"data-testid":`plan-manage-${i.planId}`,onClick:d=>{d.stopPropagation(),G&&q({planId:i.planId,planVersionId:k,interval:t||"month",pricingType:c.price?.pricingType||"stripe",pricingAudience:c.pricingAudience,isCurrentPlan:!0})},disabled:!k||!G||!ne,children:E&&G?"Manage Plan":"Current Plan"}):g?e.jsx("button",{className:`${r.callToAction} ${r.currentCta}`,"data-testid":`plan-current-${i.planId}`,disabled:!0,children:"Current Plan"}):null:e.jsxs("div",{className:r.ctaRow,children:[Y?e.jsx("button",{className:`${r.callToAction} ${r.secondaryCta}`,"data-testid":`plan-select-${i.planId}-month`,onClick:d=>{d.stopPropagation(),q({planId:i.planId,planVersionId:k,interval:"month",pricingType:O.price?.pricingType||"stripe",pricingAudience:O.pricingAudience,isCurrentPlan:!1})},disabled:!k||!ne,children:ie?"Start Monthly":"Get Started"}):null,ae?e.jsx("button",{className:`${r.callToAction} ${r.primaryCta}`,"data-testid":`plan-select-${i.planId}-year`,onClick:d=>{d.stopPropagation(),q({planId:i.planId,planVersionId:k,interval:"year",pricingType:K.price?.pricingType||"stripe",pricingAudience:K.pricingAudience,isCurrentPlan:!1})},disabled:!k||!ne,children:ie?"Start Yearly":"Get Started"}):null]})]},i.planId)})}),e.jsxs("div",{className:r.pricingNotes,children:[e.jsx("p",{children:"Prices are listed in USD. Taxes may apply."}),e.jsx("p",{children:"Local install is free on every plan. Cloud limits apply only to hosted workspaces."})]}),e.jsxs("section",{className:`${r.foundingBeta} ${r.cloudCapacityNote}`,"aria-labelledby":"cloud-capacity-heading",children:[e.jsx("h2",{id:"cloud-capacity-heading",children:"Need more cloud capacity?"}),e.jsx("p",{children:"Pro users can request expanded limits for cloud workspaces, AI agents, and storage."}),e.jsxs("p",{children:["Contact ",e.jsx("a",{href:"mailto:support@taskforcehq.ai",children:"support@taskforcehq.ai"})," to discuss capacity needs."]})]}),e.jsxs("div",{className:`${r.planCard} ${r.planNoticeCard} ${r.teamComingSoonCard}`,children:[e.jsx("h2",{className:r.planName,children:"Team workspaces are coming soon."}),e.jsx("p",{className:r.planDescription,children:"Shared workspaces, collaborators, team agent rosters, admin controls, and larger cloud limits are in development."})]})]})]})})}))}const gt=1600,Ee=[0,500,1e3,2e3],ft=5e3,bt=45e3,ht="Choose a plan to continue.";function yt(n,a){if(n===401)return!0;const o=String(a||"").trim().toUpperCase();return o==="CHECKOUT_SESSION_INCOMPLETE"||o==="CHECKOUT_PLAN_VERSION_UNRESOLVED"}function _t(n){return n==="year"?"year":"month"}function Ct(n){return n==="campaign"?"campaign":"public"}function Ae(n){const a=String(n||"").trim().toLowerCase();return a==="year"?"year":a==="month"?"month":null}function Be(n){const a=String(n||"").trim();return a?a.replace(/\/+$/,""):""}function je(n={}){const a=new URLSearchParams;a.set("screen","plans");for(const[o,p]of Object.entries(n)){const l=String(p||"").trim();l&&a.set(o,l)}return`/?${a.toString()}`}function jt({isAuthenticated:n,authUserId:a,runtimeMode:o,authSessionResolved:p,currentTheme:l="dark",projectName:_,currentWorkspaceId:E,apiBaseUrl:I,connectedEnvironmentSource:$,resolveCloudAuthUrl:x,embedded:b=!1,shellOwnsScroll:W=!1,onAccountProfileSummaryChange:G,onContinueToTaskforce:A,continueBusy:H=!1}){const j=We(),T=Ge(),[M,se]=s.useState(null),[ye,X]=s.useState(!1),[re,_e]=s.useState(!1),[Ce,f]=s.useState(null),q=s.useRef(!1),Z=s.useRef(null),Q=s.useRef(null),ce=s.useRef(A),F=s.useMemo(()=>new URLSearchParams(T.search),[T.search]),N=String(F.get("checkout")||"").trim().toLowerCase(),L=String(F.get("gate")||"").trim().toLowerCase(),oe=String(F.get("planId")||"").trim(),z=String(F.get("planVersionId")||"").trim(),le=_t(F.get("interval")),ue=Ct(F.get("pricingAudience")),Se=Ae(F.get("interval")),ee=String(F.get("session_id")||"").trim(),J=s.useMemo(()=>Be(I),[I]),de=s.useMemo(()=>Be($),[$]),xe=s.useMemo(()=>({environment:Ve(de||J),runtimeMode:o==="cloud"?"cloud":"local"}),[J,de,o]),me=s.useCallback(t=>{const c=String(t||"").trim();return J?`${J}${c.startsWith("/")?c:`/${c}`}`:c},[J]),w=s.useCallback(t=>x?x(t):me(t),[me,x]),ne=s.useCallback(()=>{const t=new URLSearchParams(T.search);t.delete("screen"),t.delete("gate"),t.delete("checkout"),t.delete("planId"),t.delete("planVersionId"),t.delete("interval"),t.delete("pricingAudience");const c=t.toString();j(`/${c?`?${c}`:""}${T.hash||""}`)},[T.hash,T.search,j]),pe=s.useMemo(()=>w("/api/taskforce/public/pricing"),[w]),B=s.useMemo(()=>Pe(M,L),[M,L]),i=s.useMemo(()=>B.allowReturnToApp,[B.allowReturnToApp]),U=s.useMemo(()=>{const t=String(B.message||"").trim();return!t||t===ht?null:t},[B.message]),D=s.useCallback(()=>{const t=new URLSearchParams(T.search);t.delete("checkout"),t.delete("session_id"),t.delete("gate"),t.delete("planId"),t.delete("planVersionId"),t.delete("interval");const c=t.toString();j(`${T.pathname}${c?`?${c}`:""}${T.hash||""}`,{replace:!0})},[T.hash,T.pathname,T.search,j]),v=s.useCallback(()=>{Q.current!=null&&window.clearTimeout(Q.current),Q.current=window.setTimeout(()=>{D(),Q.current=null},gt)},[D]);s.useEffect(()=>{ce.current=A},[A]);const u=s.useCallback(async t=>{const c=w(fe);if(!n)return se(null),be(c,{identityKey:a}),null;try{const y=await Ke(c,{identityKey:a,force:t?.force===!0});return se(y),G?.(y),y}catch{return null}},[a,w,n,G]),O=s.useCallback((t,c,y)=>{const g=String(c||"").trim();if(y?.preferFallback&&g)return g;const h=Pe(t,L).message;return h||g||"Unable to confirm checkout completion."},[L]),K=s.useCallback((t,c)=>!Pe(t,c).allowReturnToApp,[]),Y=s.useCallback(async(t,c,y="public",g)=>{if(!t){f({type:"error",message:"Selected plan is missing a default plan version."});return}X(!0),f(null);try{const h=await fetch(w("/api/taskforce/billing/checkout-session"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({planVersionId:t,interval:c,pricingAudience:y})}),m=await h.json().catch(()=>({}));if(!h.ok){f({type:"error",message:String(m?.error||"Unable to start checkout for selected plan.")});return}const d=String(m?.checkoutState||"").trim().toLowerCase();if(d==="free"){f({type:"success",message:"Plan selected. Your access is ready."}),be(w(fe),{identityKey:a});const C=await u({force:!0}),R=String(C?.entitlementState||"").trim().toLowerCase();g?.autoContinueOnActivation===!0&&he(R)&&await A?.();return}if(d==="updated"){f({type:"success",message:String(m?.message||"Your subscription was updated successfully.")}),be(w(fe),{identityKey:a});const C=await u({force:!0}),R=String(C?.entitlementState||"").trim().toLowerCase();g?.autoContinueOnActivation===!0&&he(R)&&await A?.();return}if(d==="already_current_plan"){f({type:"success",message:String(m?.message||"You are already on this plan.")}),be(w(fe),{identityKey:a}),await u();return}const S=String(m?.returnBaseUrl||"").trim();if(o==="local"&&S)try{const C=window.location.origin,R=new URL(S,C).origin;if(R!==C){f({type:"error",message:`Checkout return is misconfigured for this runtime. Expected ${C} but got ${R}.`});return}}catch{f({type:"error",message:"Checkout return URL is invalid for this runtime."});return}const P=String(m?.url||"").trim();if(!P){f({type:"error",message:"Checkout did not return a redirect URL."});return}window.location.assign(P)}catch{f({type:"error",message:"Unable to start checkout for selected plan."})}finally{X(!1)}},[a,w,u,A,o]),ae=s.useCallback(async(t,c)=>{if(!t)return{confirmed:!1,errorMessage:"Checkout session is missing.",retryable:!1};const y=async()=>{be(w(fe),{identityKey:a});const g=await u({force:!0}),h=String(g?.entitlementState||"").trim().toLowerCase();if(!he(h))return!1;const m=oe,d=z,S=Se,P=String(g?.planId||"").trim(),C=String(g?.planVersionId||"").trim(),R=Ae(g?.billingInterval??null),we=c?.preConfirmationSummary??null,$e=String(we?.entitlementState||"").trim().toLowerCase(),Me=he($e),Ue=String(we?.planId||"").trim(),De=String(we?.planVersionId||"").trim(),Fe=Ae(we?.billingInterval??null);return m&&P&&P!==m||d&&C&&C!==d||S&&R&&R!==S||Me&&!(!!m&&P===m&&Ue!==P)&&!(!!d&&C===d&&De!==C)&&!(!!S&&R===S&&Fe!==R)?!1:(c?.autoContinueOnActivation===!0&&await ce.current?.(),!0)};try{const g=await fetch(w("/api/taskforce/billing/checkout-session/confirm"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:t})}),h=await g.json().catch(()=>({}));if(!g.ok){const m=String(h?.code||"").trim(),d=yt(g.status,m);return d&&await y()?{confirmed:!0}:{confirmed:!1,errorMessage:String(h?.error||"Unable to confirm checkout completion."),retryable:d}}return await y()?{confirmed:!0}:{confirmed:!0}}catch{return{confirmed:!1,errorMessage:"Unable to confirm checkout completion.",retryable:!0}}},[a,w,u,Se,oe,z]),ie=s.useCallback(async()=>{if(!n){j(`/login?mode=login&next=${encodeURIComponent(je())}`);return}X(!0),f({type:"info",message:"Opening billing portal..."});try{const t=await fetch(w("/api/taskforce/billing/portal-session"),{method:"POST",credentials:"include"}),c=await t.json().catch(()=>({}));if(!t.ok){f({type:"error",message:String(c?.error||"Failed to open billing portal.")});return}const y=String(c?.url||"").trim();if(!y){f({type:"error",message:"Portal session did not return a redirect URL."});return}window.location.assign(y)}catch{f({type:"error",message:"Failed to open billing portal."})}finally{X(!1)}},[w,n,j]),k=s.useCallback(async()=>{if(!(!A||re||H)){_e(!0);try{await A()}finally{_e(!1)}}},[re,H,A]);s.useEffect(()=>{u()},[u]),s.useEffect(()=>{i&&L==="missing_entitlement"&&D()},[D,L,i]),s.useEffect(()=>()=>{Q.current!=null&&window.clearTimeout(Q.current)},[]),s.useEffect(()=>{N!=="success"&&(Z.current=null)},[N]),s.useEffect(()=>{let t=!1;const c=new Set,y=async g=>{g<=0||await new Promise(h=>{const m=window.setTimeout(()=>{c.delete(m),h()},g);c.add(m)})};if(N==="success"){if(q.current=!0,f({type:"success",message:"Checkout completed successfully. Finalizing your plan..."}),!n&&!p)return()=>{t=!0,c.forEach(m=>window.clearTimeout(m)),c.clear()};if(!n)return f({type:"error",message:"Sign in to finish activating your plan."}),()=>{t=!0,c.forEach(m=>window.clearTimeout(m)),c.clear()};const h=ee||"__missing_session__";return Z.current===h?()=>{t=!0,c.forEach(m=>window.clearTimeout(m)),c.clear()}:((async()=>{const m=Date.now(),d=await u({force:!0});if(t)return;let S=ee?{confirmed:!1,errorMessage:"Unable to confirm checkout completion.",retryable:!0}:{confirmed:!1,errorMessage:"Checkout session is missing.",retryable:!1},P=0;for(;;){const C=P<Ee.length?Ee[P]:ft;if(P+=1,await y(C),t||(S=ee?await ae(ee,{autoContinueOnActivation:K(d,L),preConfirmationSummary:d}):{confirmed:!1,errorMessage:"Checkout session is missing.",retryable:!1},t))return;if(S.confirmed){Z.current=h,f({type:"success",message:"Checkout completed successfully."}),v();return}if(!S.retryable||Date.now()-m>=bt)break}if(!t&&!S.confirmed){const C=await u({force:!0});if(t)return;S.retryable||(Z.current=h),f({type:"error",message:O(C,S.errorMessage,{preferFallback:!S.retryable})}),S.retryable||v();return}})(),()=>{t=!0,c.forEach(m=>window.clearTimeout(m)),c.clear()})}if(N==="cancel"){(async()=>{const g=await u({force:!0});f({type:"error",message:O(g,"Checkout was canceled. No charge was made.")}),v()})();return}if((N==="start"||N==="free")&&n&&z&&!q.current){q.current=!0,(async()=>{const g=await u({force:!0});await Y(z,le,ue,{autoContinueOnActivation:K(g,L)})})();return}},[p,N,ae,L,n,u,le,z,ue,ee,O,v,K,Y]),s.useEffect(()=>{if(!(N==="success"||N==="cancel"||N==="start"||N==="free")){if(U){f({type:B.statusTone,message:U});return}f(t=>!t||t.type!=="error"?t:t.message===B.message?null:t)}},[N,U,B.message,B.statusTone]);const Ne=s.useCallback(async t=>{if(!n){const y=t.pricingType==="free"?"free":"start",g=je({checkout:y,planId:t.planId,planVersionId:t.planVersionId,interval:t.interval,pricingAudience:t.pricingAudience});j(`/login?mode=register&planId=${encodeURIComponent(t.planId)}&planVersionId=${encodeURIComponent(t.planVersionId)}&interval=${encodeURIComponent(t.interval)}&pricingAudience=${encodeURIComponent(t.pricingAudience)}&next=${encodeURIComponent(g)}`);return}if(t.isCurrentPlan){if(!M?.stripeCustomerId){f({type:"success",message:"Your current plan does not use Stripe billing."});return}await ie();return}const c=K(M,L);if(t.pricingType==="free"){await Y(t.planVersionId,t.interval,t.pricingAudience,{autoContinueOnActivation:c});return}await Y(t.planVersionId,t.interval,t.pricingAudience,{autoContinueOnActivation:c})},[M,L,n,j,ie,K,Y]),ge=s.useCallback(()=>{if(i&&A){k();return}if(b){ne();return}if(window.history.length>1){j(-1);return}j("/")},[ne,b,k,i,j,A]),ke=b?null:e.jsxs(e.Fragment,{children:[e.jsx("button",{className:r.navAction,onClick:ge,disabled:H||re||n&&!i,children:i?"Take Me to Taskforce":"Back"}),n&&M?.stripeCustomerId&&e.jsx("button",{className:r.navAction,onClick:()=>{ie()},disabled:ye,children:"Manage billing"}),!n&&e.jsxs("button",{className:r.navAction,onClick:()=>j(`/login?mode=login&next=${encodeURIComponent(je())}`),children:[e.jsx(Ye,{size:16,style:{marginRight:"8px",verticalAlign:"text-bottom"}}),"Sign In"]})]}),te=b?null:e.jsx(He,{projectName:_,currentWorkspaceId:E,runtimeMode:o==="cloud"?"cloud":"local",theme:l,onBrandClick:ge,actions:ke});return e.jsx(pt,{chrome:te,heading:"Subscription Plans",subtitle:"Manage your subscription and explore available features. Your current plan is highlighted below.",variant:"site",theme:l,isAuthenticated:n,authSessionResolved:p,currentPlanId:String(M?.planId||oe||"").trim()||null,currentPlanVersionId:String(M?.planVersionId||z||"").trim()||null,currentEntitlementState:String(M?.entitlementState||"").trim()||null,markCurrentPlan:B.markCurrentPlan,canManageCurrentPlan:!!M?.stripeCustomerId,pricingEndpoint:pe,statusBanner:Ce,onBack:ge,backLabel:i?"Take Me to Taskforce":b?"Back to Board":"Back to App",backDisabled:H||re||n&&!i,topActions:null,shellOwnsScroll:W,showPageBackButton:!1,showHeaderBarWithChrome:!1,currentPlanCardActionMode:"manage",fallbackPricingSource:xe,onSelectPlan:Ne})}export{jt as PlansPage};
@@ -0,0 +1 @@
1
+ ._plansWrapper_nb8ab_1{--plans-accent: var(--brand-primary, #6366f1);--plans-accent-strong: var(--brand-primary-strong, #7c3aed);--plans-accent-soft: var(--brand-primary-soft, rgba(99, 102, 241, .1));--plans-accent-border: var(--brand-primary-border, rgba(99, 102, 241, .24));--plans-surface: color-mix(in srgb, var(--surface-panel) 84%, var(--surface-page));--plans-surface-elevated: color-mix(in srgb, var(--surface-elevated) 88%, var(--surface-panel));--plans-surface-strong: color-mix(in srgb, var(--surface-page) 70%, var(--surface-panel));--plans-shadow: 0 22px 44px rgba(0, 0, 0, .18);overflow-y:auto;display:flex;flex-direction:column;align-items:stretch;align-self:stretch;width:100%;flex:1;min-height:100%;min-width:0;padding:64px 24px;box-sizing:border-box;scrollbar-gutter:stable}._contentFrame_nb8ab_24{width:min(1100px,100%);max-width:1100px;margin:0 auto;display:flex;flex-direction:column}._shellOwnsScroll_nb8ab_32{overflow:visible;min-height:100%;scrollbar-gutter:auto}._withChrome_nb8ab_38{padding-top:32px}._siteVariant_nb8ab_42{padding:56px 24px 80px;overflow:visible;scrollbar-gutter:auto}._siteVariant_nb8ab_42._withChrome_nb8ab_38{padding-top:14px}._siteVariant_nb8ab_42 ._contentFrame_nb8ab_24{max-width:1040px}._siteVariant_nb8ab_42 ._title_nb8ab_56{background:none;-webkit-text-fill-color:var(--text-0, var(--text-primary));color:var(--text-0, var(--text-primary));font-size:clamp(34px,6vw,58px);line-height:1.02;max-width:18ch;font-family:var(--font-brand);font-style:italic;text-transform:uppercase;letter-spacing:0;margin:0 auto}._siteVariant_nb8ab_42 ._subtitle_nb8ab_70{color:var(--text-1, #a6b3d9);font-size:clamp(16px,2.2vw,21px);max-width:60ch;margin:30px auto 0}._siteVariant_nb8ab_42 ._header_nb8ab_77{width:100%;max-width:1040px;border:0;border-radius:0;padding:62px 0 32px;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;text-align:center;margin-right:auto;margin-bottom:0;margin-left:auto}._siteVariant_nb8ab_42 ._planCard_nb8ab_92{background:#090e20b3;border-color:#cbd5ff33;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:16px;padding:22px 20px}._siteVariant_nb8ab_42 ._planCard_nb8ab_92:hover{transform:translateY(-3px);box-shadow:none}._siteVariant_nb8ab_42 ._grid_nb8ab_105{max-width:1040px;margin-right:auto;margin-left:auto;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}._siteVariant_nb8ab_42 ._pricingNotes_nb8ab_113{max-width:var(--section-text-width, 54rem);margin-top:18px}._siteVariant_nb8ab_42 ._pricingNotes_nb8ab_113 p{color:var(--text-1, #a6b3d9)}._siteVariant_nb8ab_42 ._planName_nb8ab_122{font-size:22px;font-family:var(--font-brand);font-style:italic;text-transform:uppercase}._siteVariant_nb8ab_42 ._featureText_nb8ab_129{color:#a6b3d9}._siteVariant_nb8ab_42 ._currentBadge_nb8ab_133{font-size:11px}._siteVariant_nb8ab_42 ._navAction_nb8ab_137,._siteVariant_nb8ab_42 ._backBtn_nb8ab_138{border:1px solid rgba(203,213,255,.2);background:#141d3c99;color:#f6f8ff}._siteVariant_nb8ab_42 ._backBtn_nb8ab_138:hover,._siteVariant_nb8ab_42 ._navAction_nb8ab_137:hover{background:#141d3cd9}._siteVariant_nb8ab_42 ._priceRows_nb8ab_149{border-top-color:#cbd5ff33}._siteVariant_nb8ab_42 ._foundingBeta_nb8ab_153{max-width:var(--section-text-width, 54rem);margin:0 auto 22px;padding:0 0 34px}._siteVariant_nb8ab_42 ._foundingBeta_nb8ab_153 h2{max-width:var(--section-text-width, 54rem);margin:0 auto;font-size:28px}._siteVariant_nb8ab_42 ._foundingBeta_nb8ab_153 p{max-width:var(--section-text-width, 54rem);margin:var(--section-copy-gap, 16px) auto 0;color:var(--text-1, #a6b3d9);line-height:1.5}._siteVariant_nb8ab_42 ._cloudCapacityNote_nb8ab_172{margin:8px auto 12px;padding:0}._siteVariant_nb8ab_42 ._cloudCapacityNote_nb8ab_172 p{margin-top:12px}._siteVariant_nb8ab_42 ._cloudCapacityNote_nb8ab_172 a{color:var(--text-0, #f6f8ff)}[data-theme=light] ._siteVariant_nb8ab_42 ._subtitle_nb8ab_70{color:var(--text-1, var(--text-secondary))}[data-theme=light] ._siteVariant_nb8ab_42 ._featureText_nb8ab_129{color:var(--text-secondary)}[data-theme=light] ._siteVariant_nb8ab_42 ._header_nb8ab_77{background:transparent}[data-theme=light] ._siteVariant_nb8ab_42 ._foundingBeta_nb8ab_153 p{color:var(--text-1, var(--text-secondary))}[data-theme=light] ._siteVariant_nb8ab_42 ._planCard_nb8ab_92{background:#ffffffe0;border-color:#1c2a482e}[data-theme=light] ._siteVariant_nb8ab_42 ._planCard_nb8ab_92:hover{box-shadow:0 18px 38px #0f172a1a}[data-theme=light] ._siteVariant_nb8ab_42 ._navAction_nb8ab_137,[data-theme=light] ._siteVariant_nb8ab_42 ._backBtn_nb8ab_138{border-color:#1c2a482e;background:#ffffffb8;color:var(--text-primary)}[data-theme=light] ._siteVariant_nb8ab_42 ._backBtn_nb8ab_138:hover,[data-theme=light] ._siteVariant_nb8ab_42 ._navAction_nb8ab_137:hover{background:#fffffff0}[data-theme=light] ._siteVariant_nb8ab_42 ._priceRows_nb8ab_149{border-top-color:#1c2a482e}._header_nb8ab_77{width:100%;text-align:left;margin-bottom:32px;padding:32px;border-radius:28px;border:1px solid var(--border-default);background:linear-gradient(180deg,color-mix(in srgb,var(--plans-surface-elevated) 92%,transparent),color-mix(in srgb,var(--plans-surface) 96%,transparent)),var(--plans-surface);box-shadow:var(--plans-shadow)}._headerBar_nb8ab_239{width:100%;display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}._headerActions_nb8ab_248{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}._title_nb8ab_56{font-size:clamp(38px,5vw,54px);font-weight:800;font-family:var(--font-brand);font-style:italic;text-transform:uppercase;margin-bottom:16px;background:linear-gradient(135deg,var(--text-primary),color-mix(in srgb,var(--plans-accent) 72%,var(--text-primary)));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:-.04em;line-height:.98}._subtitle_nb8ab_70{font-size:18px;color:var(--text-secondary);line-height:1.7}._subtitle_nb8ab_70 p{margin:0 0 12px}._subtitle_nb8ab_70 p:last-child{margin-bottom:0}._subtitle_nb8ab_70 a{color:var(--plans-accent);text-decoration:underline;text-underline-offset:3px}._subtitle_nb8ab_70 ul,._subtitle_nb8ab_70 ol{display:inline-block;margin:8px auto 0;padding-left:22px;text-align:left}._debugMeta_nb8ab_299{margin-top:16px;font-size:13px;color:var(--text-secondary);opacity:.8}._foundingBeta_nb8ab_153{width:100%;max-width:920px;margin:0 auto 28px;text-align:center}._foundingBeta_nb8ab_153 h2{margin:0 0 10px;color:var(--text-primary);font-size:22px;font-weight:800}._foundingBeta_nb8ab_153 p{margin:0;color:var(--text-secondary);font-size:16px;line-height:1.7}._cloudCapacityNote_nb8ab_172{margin:8px auto 12px}._cloudCapacityNote_nb8ab_172 a{color:var(--text-primary);font-weight:700;text-decoration:none}._cloudCapacityNote_nb8ab_172 a:hover{text-decoration:underline}._grid_nb8ab_105{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px;width:100%}._pricingNotes_nb8ab_113{width:100%;max-width:920px;margin:18px auto 0;text-align:center}._pricingNotes_nb8ab_113 p{margin:4px 0 0;color:var(--text-secondary);font-size:14px;line-height:1.55}._planNoticeCard_nb8ab_362{width:100%;margin-top:20px;text-align:center}._planNoticeCard_nb8ab_362 ._planName_nb8ab_122{margin-top:0;margin-bottom:8px}._planNoticeCard_nb8ab_362 ._planDescription_nb8ab_373{margin:0;max-width:none}._teamComingSoonCard_nb8ab_378{margin-bottom:24px}._planCard_nb8ab_92{background:linear-gradient(180deg,color-mix(in srgb,var(--plans-surface-elevated) 90%,transparent),color-mix(in srgb,var(--plans-surface) 96%,transparent)),var(--plans-surface);border:1px solid var(--border-default);border-radius:22px;padding:28px;display:flex;flex-direction:column;position:relative;overflow:hidden;box-shadow:0 12px 28px #0000001f;transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease,background .24s ease}._clickablePlanCard_nb8ab_397{cursor:pointer}._clickablePlanCard_nb8ab_397:focus-visible{outline:2px solid var(--plans-accent);outline-offset:4px}._planCard_nb8ab_92:hover{transform:translateY(-4px);border-color:var(--plans-accent-border);box-shadow:0 20px 36px #0000002e}._activePlanCard_nb8ab_412{border:1px solid color-mix(in srgb,var(--plans-accent) 38%,var(--border-default));background:linear-gradient(180deg,color-mix(in srgb,var(--plans-accent) 10%,var(--plans-surface-elevated)),color-mix(in srgb,var(--plans-accent) 4%,var(--plans-surface))),var(--plans-surface);box-shadow:0 18px 34px #0000002e,inset 0 0 0 1px color-mix(in srgb,var(--plans-accent) 16%,transparent)}._currentBadge_nb8ab_133{position:absolute;top:20px;right:20px;background:color-mix(in srgb,var(--plans-accent) 16%,var(--surface-page));color:var(--plans-accent-strong);font-size:12px;font-weight:700;padding:6px 12px;border-radius:999px;border:1px solid color-mix(in srgb,var(--plans-accent) 26%,transparent);text-transform:uppercase;letter-spacing:.08em}._planName_nb8ab_122{font-size:28px;font-weight:700;font-family:var(--font-brand);font-style:italic;text-transform:uppercase;color:var(--text-primary);margin-bottom:12px}._planDescription_nb8ab_373{margin:0 0 18px;color:var(--text-secondary);font-size:15px;line-height:1.45;max-width:34ch}._priceDisplay_nb8ab_455{margin-bottom:32px;display:flex;align-items:baseline;gap:8px}._priceAmount_nb8ab_462{font-size:56px;font-weight:800;color:var(--text-primary);letter-spacing:-2px;line-height:1}._priceInterval_nb8ab_470{font-size:16px;color:var(--text-secondary);font-weight:500}._callToAction_nb8ab_476{width:100%;padding:14px 18px;border-radius:12px;font-size:15px;font-weight:600;border:1px solid transparent;cursor:pointer;transition:all .2s ease;margin-bottom:0}._primaryCta_nb8ab_488{background:var(--button-primary-bg);border-color:var(--button-primary-border);color:var(--button-primary-text, white)}._primaryCta_nb8ab_488:hover{transform:translateY(-1px);box-shadow:0 10px 22px var(--brand-primary-glow)}._secondaryCta_nb8ab_499{background:var(--button-secondary-bg);color:var(--button-secondary-text);border-color:var(--button-secondary-border)}._secondaryCta_nb8ab_499:hover{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);color:var(--button-secondary-hover-text)}._currentCta_nb8ab_511{background:color-mix(in srgb,var(--plans-accent) 9%,var(--plans-surface-strong));color:var(--text-primary);border-color:color-mix(in srgb,var(--plans-accent) 24%,var(--border-default));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--plans-accent) 10%,transparent);cursor:pointer}._currentCta_nb8ab_511:hover{background:color-mix(in srgb,var(--plans-accent) 14%,var(--plans-surface-strong));border-color:color-mix(in srgb,var(--plans-accent) 32%,var(--border-default));transform:translateY(-1px)}._featuresList_nb8ab_525{flex:1;display:flex;flex-direction:column;gap:20px;margin-bottom:28px}._priceRows_nb8ab_149{display:flex;flex-direction:column;gap:8px;margin:0 0 16px}._priceRow_nb8ab_149{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:10px;text-align:left}._regularPriceLine_nb8ab_549,._campaignPriceLine_nb8ab_550{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}._priceRowWithCampaign_nb8ab_557{gap:4px}._priceRowAmount_nb8ab_561{font-size:22px;font-weight:700;color:var(--text-primary)}._regularPriceDiscounted_nb8ab_567{color:var(--text-secondary);text-decoration:line-through;text-decoration-thickness:2px}._priceRowInterval_nb8ab_573{color:var(--text-secondary);font-weight:600}._campaignPriceLine_nb8ab_550{color:var(--plans-accent-strong)}._campaignPriceLabel_nb8ab_582{font-size:14px;font-weight:800}._campaignPriceAmount_nb8ab_587{color:var(--text-primary);font-size:24px;font-weight:800}._campaignPriceInterval_nb8ab_593{color:var(--text-secondary);font-weight:700}._ctaRow_nb8ab_598{display:grid;grid-template-columns:1fr;gap:10px}._featureItem_nb8ab_604{display:flex;align-items:flex-start;gap:16px}._featureIcon_nb8ab_610{color:var(--plans-accent);flex-shrink:0;width:20px;height:20px;margin-top:2px}._featureText_nb8ab_129{font-size:16px;line-height:1.5;color:var(--text-primary)}._featureLimitAccent_nb8ab_624{font-family:var(--font-brand);font-style:italic;color:var(--brand-cloud-accent, #ff8a00);letter-spacing:.01em;font-size:28px;line-height:.92;display:inline-block;margin-right:6px}._featureLimitUnit_nb8ab_635{font-size:.74em;line-height:1;vertical-align:baseline}._featureTextBlock_nb8ab_641{display:flex;flex-direction:column;gap:4px}._featureDescription_nb8ab_647{font-size:13px;line-height:1.45;color:var(--text-secondary)}._emptyState_nb8ab_653{text-align:center;padding:64px;background:var(--bg-secondary);border-radius:24px;border:1px dashed var(--border-color, var(--border-primary, rgba(255, 255, 255, .14)));width:100%}._marketingEmptyState_nb8ab_662{max-width:920px;border-style:solid;border-radius:28px;padding:72px 48px;background:radial-gradient(560px 260px at 15% 10%,rgba(34,197,94,.15),transparent 60%),radial-gradient(620px 320px at 85% 0%,rgba(251,191,36,.16),transparent 62%),linear-gradient(145deg,#0f172af5,#111827eb);box-shadow:0 28px 90px #00000047}._marketingEmptyState_nb8ab_662 h2{margin:18px 0 14px;font-size:clamp(32px,4vw,52px);line-height:1.02;letter-spacing:-.04em;color:#f8fafc}._marketingEmptyState_nb8ab_662 p{margin:0 auto;max-width:680px;font-size:18px;line-height:1.7;color:#cbd5e1}._emptyBadge_nb8ab_690{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:999px;background:#f8fafc14;border:1px solid rgba(248,250,252,.18);color:#f8fafc;font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}._emptyHighlights_nb8ab_705{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:28px}._emptyHighlights_nb8ab_705 span{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;background:#94a3b81f;border:1px solid rgba(148,163,184,.18);color:#e2e8f0;font-size:13px;font-weight:700;letter-spacing:.02em}._loader_nb8ab_727{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;gap:24px;color:var(--text-secondary)}._spinner_nb8ab_737{animation:_spin_nb8ab_737 1s linear infinite;color:var(--accent-primary, #6366f1)}@keyframes _spin_nb8ab_737{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._backBtn_nb8ab_138{background:var(--button-secondary-bg);border:1px solid var(--button-secondary-border);color:var(--button-secondary-text);display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;cursor:pointer;padding:10px 16px;border-radius:12px;transition:all .2s ease}._backBtn_nb8ab_138:hover{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);color:var(--button-secondary-hover-text)}._navAction_nb8ab_137{background:var(--button-secondary-bg);border:1px solid var(--button-secondary-border);color:var(--button-secondary-text);padding:10px 20px;border-radius:12px;font-weight:600;cursor:pointer;transition:all .2s ease}._navAction_nb8ab_137:hover{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);color:var(--button-secondary-hover-text)}._statusBanner_nb8ab_790{margin-top:24px;padding:12px 24px;border-radius:12px;font-weight:500;font-size:14px}._successBanner_nb8ab_798{background:color-mix(in srgb,var(--status-success) 12%,var(--plans-surface-elevated));color:var(--status-success);border:1px solid color-mix(in srgb,var(--status-success) 24%,transparent)}._infoBanner_nb8ab_804{background:color-mix(in srgb,var(--button-primary-bg) 10%,var(--plans-surface-elevated));color:var(--text-secondary);border:1px solid color-mix(in srgb,var(--button-primary-bg) 18%,transparent)}._errorBanner_nb8ab_810{background:color-mix(in srgb,var(--status-error) 12%,var(--plans-surface-elevated));color:var(--status-error);border:1px solid color-mix(in srgb,var(--status-error) 24%,transparent)}@media(max-width:768px){._plansWrapper_nb8ab_1{padding:28px 14px}._withChrome_nb8ab_38{padding-top:24px}._header_nb8ab_77{margin-bottom:24px;padding:22px 18px}._headerBar_nb8ab_239{gap:10px;flex-wrap:wrap;margin-bottom:18px}._title_nb8ab_56{font-size:34px;margin-bottom:12px}._grid_nb8ab_105{grid-template-columns:1fr;gap:18px}._siteVariant_nb8ab_42 ._grid_nb8ab_105{grid-template-columns:1fr}._siteVariant_nb8ab_42{padding:56px 24px 80px}._siteVariant_nb8ab_42._withChrome_nb8ab_38{padding-top:14px}._siteVariant_nb8ab_42 ._header_nb8ab_77{padding:62px 0 32px}._planCard_nb8ab_92{padding:22px}._planNoticeCard_nb8ab_362{margin-top:18px}._teamComingSoonCard_nb8ab_378{margin-bottom:18px}._marketingEmptyState_nb8ab_662{padding:56px 24px}._marketingEmptyState_nb8ab_662 h2{font-size:34px}._marketingEmptyState_nb8ab_662 p{font-size:16px}._headerActions_nb8ab_248{width:100%;justify-content:flex-start}}
@@ -1 +1 @@
1
- import{j as s}from"./vendor-react-CKJs5o3c.js";import{ContextAttachmentManager as c}from"./ContextAttachmentManager-CfG_ER7C.js";import"./index-MAHKvFqp.js";import"./vendor-icons-B32hGuF2.js";import"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";import"./vendor-router-BbWMxlnO.js";import"./documentReferences-BOUcJm6-.js";function R(t){const{taskId:e,taskReferenceLabel:o,workspaceId:n,apiBaseUrl:a,contextFiles:r,onAddContextFile:m,onRemoveContextFile:p,onUpdateContextCaption:i}=t;return s.jsx(c,{ownerType:"task",ownerId:e,ownerReferenceLabel:o,workspaceId:n,apiBaseUrl:a,attachments:r,onAddAttachment:m,onRemoveAttachment:p,onUpdateAttachmentCaption:i})}export{R as TaskContextUpload};
1
+ import{j as s}from"./vendor-react-CKJs5o3c.js";import{ContextAttachmentManager as c}from"./ContextAttachmentManager-DoMe2OpY.js";import"./index-BWFQ9mGn.js";import"./vendor-icons-CLnehDTw.js";import"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";import"./vendor-router-BbWMxlnO.js";import"./documentReferences-BZB3nMRb.js";function R(t){const{taskId:e,taskReferenceLabel:o,workspaceId:n,apiBaseUrl:a,contextFiles:r,onAddContextFile:m,onRemoveContextFile:p,onUpdateContextCaption:i}=t;return s.jsx(c,{ownerType:"task",ownerId:e,ownerReferenceLabel:o,workspaceId:n,apiBaseUrl:a,attachments:r,onAddAttachment:m,onRemoveAttachment:p,onUpdateAttachmentCaption:i})}export{R as TaskContextUpload};