@taskforcehq/taskforce 0.3.170 → 0.3.300

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 (696) hide show
  1. package/README.md +52 -21
  2. package/dist/Taskforce.module.css +3394 -5981
  3. package/dist/TaskforceCore.CategoryFallback.test.js +5 -2
  4. package/dist/TaskforceCore.filter-persistence.test.js +402 -0
  5. package/dist/TaskforceCore.js +388 -71
  6. package/dist/TaskforceCore.routing.test.js +311 -0
  7. package/dist/TaskforceCore.test.js +3344 -615
  8. package/dist/TaskforceWidget.js +3 -2
  9. package/dist/__tests__/localizationCatalogs.test.js +48 -31
  10. package/dist/__tests__/workflowSimulation.test.js +2 -2
  11. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.d.ts +60 -0
  12. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.js +324 -0
  13. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.js +278 -0
  14. package/dist/annotatedAttachments/payload.d.ts +2 -0
  15. package/dist/annotatedAttachments/payload.js +54 -0
  16. package/dist/annotatedAttachments/payload.test.js +67 -0
  17. package/dist/annotatedAttachments/service.d.ts +49 -0
  18. package/dist/annotatedAttachments/service.js +121 -0
  19. package/dist/annotatedAttachments/types.d.ts +86 -0
  20. package/dist/cli.js +74 -25
  21. package/dist/compat/deploymentCompat.d.ts +12 -0
  22. package/dist/compat/deploymentCompat.js +43 -0
  23. package/dist/compat/workspaceSyncCompat.d.ts +6 -0
  24. package/dist/compat/workspaceSyncCompat.js +79 -0
  25. package/dist/compat/workspaceSyncCompat.test.js +87 -0
  26. package/dist/components/features/AgentsModule.d.ts +5 -0
  27. package/dist/components/features/AgentsModule.js +131 -0
  28. package/dist/components/features/AgentsModule.test.js +102 -0
  29. package/dist/components/features/AnnotatedAttachmentWorkspace.d.ts +24 -0
  30. package/dist/components/features/AnnotatedAttachmentWorkspace.js +1942 -0
  31. package/dist/components/features/AnnotatedAttachmentWorkspace.test.js +2831 -0
  32. package/dist/components/features/DocumentGenerateModal.js +8 -16
  33. package/dist/components/features/DocumentIndex.d.ts +3 -4
  34. package/dist/components/features/DocumentIndex.js +22 -10
  35. package/dist/components/features/DocumentViewer.d.ts +6 -2
  36. package/dist/components/features/DocumentViewer.js +1000 -18
  37. package/dist/components/features/DocumentWorkspace.d.ts +40 -2
  38. package/dist/components/features/DocumentWorkspace.js +96 -16
  39. package/dist/components/features/DocumentWorkspace.test.js +1202 -0
  40. package/dist/components/features/InitiativesModule.d.ts +22 -0
  41. package/dist/components/features/InitiativesModule.js +33 -0
  42. package/dist/components/features/TaskSettings.d.ts +41 -32
  43. package/dist/components/features/TaskSettings.js +798 -313
  44. package/dist/components/features/TaskSettings.test.js +1221 -47
  45. package/dist/components/features/WorkflowsModule.d.ts +27 -0
  46. package/dist/components/features/WorkflowsModule.js +21 -0
  47. package/dist/components/features/documentWorkspaceFilters.d.ts +10 -0
  48. package/dist/components/features/documentWorkspaceFilters.js +11 -0
  49. package/dist/components/features/settings/CategoryManager.d.ts +2 -0
  50. package/dist/components/features/settings/CategoryManager.js +15 -8
  51. package/dist/components/features/settings/PriorityManager.d.ts +18 -0
  52. package/dist/components/features/settings/PriorityManager.js +51 -0
  53. package/dist/components/features/settings/TaxonomyEditor.d.ts +2 -1
  54. package/dist/components/features/settings/TaxonomyEditor.js +41 -18
  55. package/dist/components/features/settings/TaxonomyLibraryManager.d.ts +26 -0
  56. package/dist/components/features/settings/TaxonomyLibraryManager.js +301 -0
  57. package/dist/components/features/settings/TaxonomyLibraryManager.test.js +141 -0
  58. package/dist/components/features/settings/TaxonomyManager.d.ts +35 -12
  59. package/dist/components/features/settings/TaxonomyManager.js +59 -27
  60. package/dist/components/features/settings/TypeManager.d.ts +11 -0
  61. package/dist/components/features/settings/TypeManager.js +48 -11
  62. package/dist/components/features/settings/{WorkflowEditorPrototype.d.ts → WorkflowEditor.d.ts} +2 -2
  63. package/dist/components/features/settings/{WorkflowEditorPrototype.js → WorkflowEditor.js} +3 -3
  64. package/dist/components/task/TaskActionHeader.d.ts +12 -2
  65. package/dist/components/task/TaskActionHeader.js +64 -8
  66. package/dist/components/task/TaskActionHeader.test.js +73 -0
  67. package/dist/components/task/TaskCard.d.ts +14 -16
  68. package/dist/components/task/TaskCard.js +144 -174
  69. package/dist/components/task/TaskCard.test.js +416 -64
  70. package/dist/components/task/TaskContextUpload.d.ts +6 -5
  71. package/dist/components/task/TaskContextUpload.js +199 -64
  72. package/dist/components/task/TaskContextUpload.test.js +331 -14
  73. package/dist/components/task/TaskForm.d.ts +23 -29
  74. package/dist/components/task/TaskForm.js +348 -169
  75. package/dist/components/task/TaskForm.test.js +419 -23
  76. package/dist/components/task/TaskKanban.d.ts +20 -21
  77. package/dist/components/task/TaskKanban.js +176 -316
  78. package/dist/components/task/TaskKanban.planning-drop.test.js +93 -0
  79. package/dist/components/task/TaskList.d.ts +22 -11
  80. package/dist/components/task/TaskList.js +98 -12
  81. package/dist/components/task/TaskList.test.js +206 -7
  82. package/dist/components/task/TaskReferenceBadge.d.ts +12 -0
  83. package/dist/components/task/TaskReferenceBadge.js +5 -0
  84. package/dist/components/task/TaskStatusActions.d.ts +12 -0
  85. package/dist/components/task/TaskStatusActions.js +18 -0
  86. package/dist/components/task/TaskStatusActions.test.js +45 -0
  87. package/dist/components/ui/ImageReferenceBadge.d.ts +12 -0
  88. package/dist/components/ui/ImageReferenceBadge.js +5 -0
  89. package/dist/components/ui/LevelSelector.d.ts +2 -1
  90. package/dist/components/ui/LevelSelector.js +2 -2
  91. package/dist/components/ui/Markdown.d.ts +1 -2
  92. package/dist/components/ui/Markdown.js +2 -13
  93. package/dist/components/ui/Modal.d.ts +3 -2
  94. package/dist/components/ui/Modal.js +4 -3
  95. package/dist/components/ui/MultiSelectFilter.d.ts +3 -1
  96. package/dist/components/ui/MultiSelectFilter.js +2 -2
  97. package/dist/components/ui/ReferenceBadgeButton.d.ts +13 -0
  98. package/dist/components/ui/ReferenceBadgeButton.js +6 -0
  99. package/dist/components/ui/TaxonomyDropdown.d.ts +7 -1
  100. package/dist/components/ui/TaxonomyDropdown.js +58 -23
  101. package/dist/components/ui/TopNoticeLayer.d.ts +7 -0
  102. package/dist/components/ui/TopNoticeLayer.js +14 -0
  103. package/dist/components/ui/TopNoticeLayer.test.js +25 -0
  104. package/dist/components/views/AppShellHeader.d.ts +13 -0
  105. package/dist/components/views/AppShellHeader.js +19 -0
  106. package/dist/components/views/AppShellHeader.test.js +21 -0
  107. package/dist/components/views/PlanComparisonPage.d.ts +73 -0
  108. package/dist/components/views/PlanComparisonPage.js +196 -0
  109. package/dist/components/views/PlanComparisonPage.test.js +251 -0
  110. package/dist/components/views/PlansPage.d.ts +14 -0
  111. package/dist/components/views/PlansPage.js +355 -0
  112. package/dist/components/views/StandaloneLayout.d.ts +2 -2
  113. package/dist/components/views/StandaloneLayout.js +2212 -1194
  114. package/dist/components/views/WidgetView.d.ts +2 -2
  115. package/dist/components/views/WidgetView.js +149 -43
  116. package/dist/components/views/chrome/WorkspaceChromeSections.d.ts +57 -0
  117. package/dist/components/views/chrome/WorkspaceChromeSections.js +38 -0
  118. package/dist/components/views/chrome/WorkspaceChromeSections.test.js +54 -0
  119. package/dist/components/views/chrome/workspaceChrome.d.ts +31 -0
  120. package/dist/components/views/chrome/workspaceChrome.js +108 -0
  121. package/dist/components/views/chrome/workspaceChrome.test.js +52 -0
  122. package/dist/components/views/panels/DocumentFilterToolbar.d.ts +10 -0
  123. package/dist/components/views/panels/DocumentFilterToolbar.js +7 -0
  124. package/dist/components/views/panels/DocumentFilterToolbar.test.js +19 -0
  125. package/dist/components/views/panels/FilterToolbar.d.ts +66 -0
  126. package/dist/components/views/panels/FilterToolbar.js +21 -0
  127. package/dist/components/views/panels/FilterToolbar.test.d.ts +1 -0
  128. package/dist/components/views/panels/FilterToolbar.test.js +45 -0
  129. package/dist/components/views/panels/FilterToolbarControls.d.ts +46 -0
  130. package/dist/components/views/panels/FilterToolbarControls.js +61 -0
  131. package/dist/components/views/panels/PlanningDrawer.d.ts +115 -0
  132. package/dist/components/views/panels/PlanningDrawer.js +220 -0
  133. package/dist/components/views/panels/ScheduleSidebar.d.ts +52 -0
  134. package/dist/components/views/panels/ScheduleSidebar.js +127 -0
  135. package/dist/components/views/panels/scheduleUtils.d.ts +14 -0
  136. package/dist/components/views/panels/scheduleUtils.js +79 -0
  137. package/dist/components/views/teamManagementAccess.d.ts +6 -0
  138. package/dist/components/views/teamManagementAccess.js +18 -0
  139. package/dist/components/views/teamManagementAccess.test.d.ts +1 -0
  140. package/dist/components/views/teamManagementAccess.test.js +44 -0
  141. package/dist/config/clientDeployment.d.ts +2 -0
  142. package/dist/config/clientDeployment.js +13 -0
  143. package/dist/config/cloudEnvironment.d.ts +15 -0
  144. package/dist/config/cloudEnvironment.js +60 -0
  145. package/dist/config/deployment.d.ts +20 -0
  146. package/dist/config/deployment.js +67 -0
  147. package/dist/config/deployment.test.d.ts +1 -0
  148. package/dist/config/deployment.test.js +88 -0
  149. package/dist/config/envSchema.js +36 -8
  150. package/dist/config/envSchema.test.js +28 -0
  151. package/dist/core/AiProfileService.d.ts +66 -0
  152. package/dist/core/AiProfileService.js +320 -0
  153. package/dist/core/AiProfileService.test.d.ts +1 -0
  154. package/dist/core/AiProfileService.test.js +164 -0
  155. package/dist/core/AiProfiles.test.d.ts +1 -0
  156. package/dist/core/AiProfiles.test.js +449 -0
  157. package/dist/core/AttachmentLinkService.d.ts +15 -0
  158. package/dist/core/AttachmentLinkService.js +157 -0
  159. package/dist/core/AuthTokenService.d.ts +44 -0
  160. package/dist/core/AuthTokenService.js +207 -0
  161. package/dist/core/CreatedBy.test.js +134 -6
  162. package/dist/core/DeletedTaskLifecycleService.d.ts +33 -0
  163. package/dist/core/DeletedTaskLifecycleService.js +158 -0
  164. package/dist/core/DeletedTaskTrash.test.d.ts +1 -0
  165. package/dist/core/DeletedTaskTrash.test.js +104 -0
  166. package/dist/core/EntitlementsPolicy.test.js +78 -5
  167. package/dist/core/GlobalSettingsService.d.ts +16 -0
  168. package/dist/core/GlobalSettingsService.js +370 -0
  169. package/dist/core/JsonBackupRuntime.test.d.ts +1 -0
  170. package/dist/core/JsonBackupRuntime.test.js +155 -0
  171. package/dist/core/McpTokenService.d.ts +118 -0
  172. package/dist/core/McpTokenService.js +921 -0
  173. package/dist/core/PlanEntitlementService.d.ts +201 -0
  174. package/dist/core/PlanEntitlementService.js +1442 -0
  175. package/dist/core/PlanVersionPolicy.test.d.ts +1 -0
  176. package/dist/core/PlanVersionPolicy.test.js +178 -0
  177. package/dist/core/PlanningEntities.test.d.ts +1 -0
  178. package/dist/core/PlanningEntities.test.js +95 -0
  179. package/dist/core/ScheduleFields.test.js +15 -19
  180. package/dist/core/SignupMonetizationSettings.test.d.ts +1 -0
  181. package/dist/core/SignupMonetizationSettings.test.js +159 -0
  182. package/dist/core/Stats.test.d.ts +1 -0
  183. package/dist/core/Stats.test.js +36 -0
  184. package/dist/core/SyncReconciliationService.d.ts +93 -0
  185. package/dist/core/SyncReconciliationService.js +406 -0
  186. package/dist/core/SystemAdmin.test.js +578 -13
  187. package/dist/core/TaskActivityService.d.ts +21 -0
  188. package/dist/core/TaskActivityService.js +130 -0
  189. package/dist/core/TaskAttachmentsCanonical.test.d.ts +1 -0
  190. package/dist/core/TaskAttachmentsCanonical.test.js +306 -0
  191. package/dist/core/TaskAuditTimeline.test.d.ts +1 -0
  192. package/dist/core/TaskAuditTimeline.test.js +132 -0
  193. package/dist/core/TaskTaxonomyValidation.test.js +338 -15
  194. package/dist/core/Taskforce.d.ts +930 -183
  195. package/dist/core/Taskforce.ids.test.js +252 -0
  196. package/dist/core/Taskforce.js +3848 -2532
  197. package/dist/core/Taskforce.mcpAuth.test.d.ts +1 -0
  198. package/dist/core/Taskforce.mcpAuth.test.js +343 -0
  199. package/dist/core/Taskforce.realtimeMutation.test.js +57 -2
  200. package/dist/core/TaxonomySettingsService.d.ts +18 -0
  201. package/dist/core/TaxonomySettingsService.js +162 -0
  202. package/dist/core/WorkspaceDelete.test.js +32 -13
  203. package/dist/core/WorkspaceLifecycleService.d.ts +11 -0
  204. package/dist/core/WorkspaceLifecycleService.js +88 -0
  205. package/dist/core/WorkspacePermissions.test.js +95 -0
  206. package/dist/core/WorkspacePlanMode.test.js +114 -1
  207. package/dist/core/WorkspacePreferenceService.d.ts +41 -0
  208. package/dist/core/WorkspacePreferenceService.js +246 -0
  209. package/dist/core/WorkspaceSyncSettings.test.d.ts +1 -0
  210. package/dist/core/WorkspaceSyncSettings.test.js +65 -0
  211. package/dist/core/__tests__/TaskAttachmentsCanonical.test.d.ts +1 -0
  212. package/dist/core/__tests__/TaskAttachmentsCanonical.test.js +212 -0
  213. package/dist/core/shared.d.ts +36 -0
  214. package/dist/core/shared.js +128 -0
  215. package/dist/core/types.d.ts +614 -0
  216. package/dist/core/types.js +27 -0
  217. package/dist/documentReviews/DocumentReviewCommentStore.d.ts +56 -0
  218. package/dist/documentReviews/DocumentReviewCommentStore.js +230 -0
  219. package/dist/documentReviews/DocumentReviewSessionStore.d.ts +52 -0
  220. package/dist/documentReviews/DocumentReviewSessionStore.js +193 -0
  221. package/dist/documentReviews/DocumentReviewSessionStore.test.d.ts +1 -0
  222. package/dist/documentReviews/DocumentReviewSessionStore.test.js +127 -0
  223. package/dist/documentReviews/service.d.ts +68 -0
  224. package/dist/documentReviews/service.js +210 -0
  225. package/dist/documentReviews/types.d.ts +58 -0
  226. package/dist/documentReviews/types.js +1 -0
  227. package/dist/hooks/auth/useAuthGuardPolicy.d.ts +2 -0
  228. package/dist/hooks/auth/useAuthGuardPolicy.js +1 -0
  229. package/dist/hooks/tasks/useCurrentTaskRelations.d.ts +15 -0
  230. package/dist/hooks/tasks/useCurrentTaskRelations.js +37 -0
  231. package/dist/hooks/tasks/useTaskActions.d.ts +3 -0
  232. package/dist/hooks/tasks/useTaskActions.js +2 -0
  233. package/dist/hooks/tasks/useTaskEditorNavigation.d.ts +65 -0
  234. package/dist/hooks/tasks/useTaskEditorNavigation.js +235 -0
  235. package/dist/hooks/tasks/useTaskFilters.d.ts +2 -0
  236. package/dist/hooks/tasks/useTaskFilters.js +2 -0
  237. package/dist/hooks/tasks/useTaskFormActions.d.ts +58 -0
  238. package/dist/hooks/tasks/useTaskFormActions.js +365 -0
  239. package/dist/hooks/tasks/useTaskRelationships.d.ts +16 -0
  240. package/dist/hooks/tasks/useTaskRelationships.js +64 -0
  241. package/dist/hooks/ui/useResourceExport.d.ts +19 -0
  242. package/dist/hooks/ui/useResourceExport.js +84 -0
  243. package/dist/hooks/ui/useSettingsModel.d.ts +203 -0
  244. package/dist/hooks/ui/useSettingsModel.js +125 -0
  245. package/dist/hooks/ui/useSettingsPersistence.d.ts +36 -0
  246. package/dist/hooks/ui/useSettingsPersistence.js +254 -0
  247. package/dist/hooks/ui/useSettingsTaxonomyManagement.d.ts +119 -0
  248. package/dist/hooks/ui/useSettingsTaxonomyManagement.js +536 -0
  249. package/dist/hooks/ui/useUiNotice.d.ts +1 -0
  250. package/dist/hooks/ui/useUiNotice.js +1 -0
  251. package/dist/hooks/ui/useWorkflowTemplates.d.ts +37 -0
  252. package/dist/hooks/ui/useWorkflowTemplates.js +111 -0
  253. package/dist/hooks/ui/useZenMode.d.ts +5 -0
  254. package/dist/hooks/ui/useZenMode.js +32 -0
  255. package/dist/hooks/useFilterSort.d.ts +60 -0
  256. package/dist/hooks/useFilterSort.js +362 -0
  257. package/dist/hooks/useFilterSort.test.d.ts +1 -0
  258. package/dist/hooks/useFilterSort.test.js +333 -0
  259. package/dist/hooks/useRealtimeSync.d.ts +1 -0
  260. package/dist/hooks/useRealtimeSync.js +24 -9
  261. package/dist/hooks/useRealtimeSync.test.js +28 -1
  262. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.d.ts +1 -0
  263. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.js +34 -0
  264. package/dist/hooks/useSyncOrchestrator.d.ts +65 -103
  265. package/dist/hooks/useSyncOrchestrator.js +1538 -670
  266. package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +700 -174
  267. package/dist/hooks/useTaskData.d.ts +35 -0
  268. package/dist/hooks/useTaskData.js +239 -0
  269. package/dist/hooks/useTaskData.test.d.ts +1 -0
  270. package/dist/hooks/useTaskData.test.js +119 -0
  271. package/dist/hooks/useTaskMutations.d.ts +46 -0
  272. package/dist/hooks/useTaskMutations.js +472 -0
  273. package/dist/hooks/useTaskMutations.test.d.ts +1 -0
  274. package/dist/hooks/useTaskMutations.test.js +80 -0
  275. package/dist/hooks/useTaskforce.contract.test.d.ts +1 -0
  276. package/dist/hooks/useTaskforce.contract.test.js +7 -0
  277. package/dist/hooks/useTaskforce.d.ts +260 -295
  278. package/dist/hooks/useTaskforce.js +1954 -2623
  279. package/dist/hooks/useTaskforce.priority-filters.test.js +6 -11
  280. package/dist/hooks/useTaskforce.sync-behavior.test.d.ts +1 -0
  281. package/dist/hooks/useTaskforce.sync-behavior.test.js +1120 -0
  282. package/dist/hooks/useUiNotice.d.ts +16 -0
  283. package/dist/hooks/useUiNotice.js +49 -0
  284. package/dist/hooks/useWorkspaceSyncController.d.ts +23 -46
  285. package/dist/hooks/useWorkspaceSyncController.js +280 -461
  286. package/dist/hooks/useWorkspaceSyncController.test.js +106 -199
  287. package/dist/hooks/workspace/useTaskforceApiRouting.d.ts +8 -0
  288. package/dist/hooks/workspace/useTaskforceApiRouting.js +91 -0
  289. package/dist/hooks/workspace/useTaskforceApiRouting.test.d.ts +1 -0
  290. package/dist/hooks/workspace/useTaskforceApiRouting.test.js +60 -0
  291. package/dist/hooks/workspace/useWorkspaceSyncController.d.ts +1 -0
  292. package/dist/hooks/workspace/useWorkspaceSyncController.js +1 -0
  293. package/dist/hooks/workspace/workspaceLocalState.d.ts +30 -0
  294. package/dist/hooks/workspace/workspaceLocalState.js +101 -0
  295. package/dist/localization/locales/en-US.d.ts +1 -8
  296. package/dist/localization/locales/en-US.js +4 -11
  297. package/dist/localization/locales/es-419.js +2 -9
  298. package/dist/localization/locales/pt-BR.js +2 -9
  299. package/dist/localization/localizationCatalogs.test.d.ts +1 -0
  300. package/dist/localization/localizationCatalogs.test.js +37 -0
  301. package/dist/main.d.ts +1 -0
  302. package/dist/main.js +9 -15
  303. package/dist/mcp/clientIntegrations.d.ts +33 -0
  304. package/dist/mcp/clientIntegrations.js +199 -0
  305. package/dist/mcp/clientIntegrations.test.d.ts +1 -0
  306. package/dist/mcp/clientIntegrations.test.js +110 -0
  307. package/dist/mcp/index.d.ts +2 -0
  308. package/dist/mcp/index.js +2 -0
  309. package/dist/mcp/optionResolution.test.js +6 -2
  310. package/dist/mcp/runtime.d.ts +120 -0
  311. package/dist/mcp/runtime.js +5668 -0
  312. package/dist/mcp/runtime.test.d.ts +1 -0
  313. package/dist/mcp/runtime.test.js +3293 -0
  314. package/dist/mcp/server.js +2 -1793
  315. package/dist/mcp/structuredCommentValidation.test.d.ts +1 -0
  316. package/dist/{__tests__ → mcp}/structuredCommentValidation.test.js +1 -1
  317. package/dist/mcp/structuredDocValidation.js +1 -2
  318. package/dist/mcp/structuredDocValidation.test.d.ts +1 -0
  319. package/dist/{__tests__ → mcp}/structuredDocValidation.test.js +9 -4
  320. package/dist/mcp/toolRegistry.d.ts +570 -0
  321. package/dist/mcp/toolRegistry.js +90 -0
  322. package/dist/mcp/toolRegistry.test.d.ts +1 -0
  323. package/dist/mcp/toolRegistry.test.js +30 -0
  324. package/dist/migrations/billingSchemaParity.test.js +111 -0
  325. package/dist/migrations/taskSchemaMigrations.d.ts +5 -0
  326. package/dist/migrations/taskSchemaMigrations.js +681 -39
  327. package/dist/migrations/taskSchemaMigrations.test.d.ts +1 -0
  328. package/dist/migrations/taskSchemaMigrations.test.js +210 -0
  329. package/dist/plugins/vite.js +13 -7
  330. package/dist/public/apple-touch-icon.png +0 -0
  331. package/dist/public/archive/phoenix/apple-touch-icon.png +0 -0
  332. package/dist/public/archive/phoenix/favicon.ico +0 -0
  333. package/dist/public/archive/phoenix/site.webmanifest +1 -0
  334. package/dist/public/favicon-96x96.png +0 -0
  335. package/dist/public/favicon.ico +0 -0
  336. package/dist/public/favicon.svg +17 -0
  337. package/dist/public/site.webmanifest +21 -1
  338. package/dist/public/web-app-manifest-192x192.png +0 -0
  339. package/dist/public/web-app-manifest-512x512.png +0 -0
  340. package/dist/releaseVersion.test.d.ts +1 -0
  341. package/dist/{__tests__/releaseVersion.test.js → releaseVersion.test.js} +1 -1
  342. package/dist/resources/templates/WORKFLOW_V2_POLICY.md +1 -1
  343. package/dist/resources/templates/workflow-sources/workflowDocs.mjs +62 -52
  344. package/dist/resources/templates/workflows/collaborate.yaml +11 -5
  345. package/dist/resources/templates/workflows/do.yaml +8 -2
  346. package/dist/resources/templates/workflows/evaluate.yaml +13 -7
  347. package/dist/resources/templates/workflows/execute.yaml +40 -23
  348. package/dist/resources/templates/workflows/plan.yaml +15 -8
  349. package/dist/resources/templates/workflows/review.yaml +14 -8
  350. package/dist/runtime/appGateDefinitions.d.ts +32 -0
  351. package/dist/runtime/appGateDefinitions.js +32 -0
  352. package/dist/runtime/appGates.d.ts +29 -0
  353. package/dist/runtime/appGates.js +53 -0
  354. package/dist/runtime/appGates.test.d.ts +1 -0
  355. package/dist/runtime/appGates.test.js +42 -0
  356. package/dist/runtime/migrationFlags.d.ts +1 -0
  357. package/dist/runtime/migrationFlags.js +1 -0
  358. package/dist/server/annotatedAttachmentsRoutes.test.d.ts +1 -0
  359. package/dist/server/annotatedAttachmentsRoutes.test.js +473 -0
  360. package/dist/server/auth.js +14 -2
  361. package/dist/server/auth.test.js +21 -1
  362. package/dist/server/cors.js +11 -5
  363. package/dist/server/cors.test.js +6 -0
  364. package/dist/server/documentReviewRoutes.test.d.ts +1 -0
  365. package/dist/server/documentReviewRoutes.test.js +157 -0
  366. package/dist/server/index.cookieProxy.test.js +46 -1
  367. package/dist/server/index.d.ts +20 -0
  368. package/dist/server/index.js +168 -41
  369. package/dist/server/index.rateLimit.test.js +6 -0
  370. package/dist/server/index.test.js +133 -2
  371. package/dist/server/mockStripe.d.ts +72 -0
  372. package/dist/server/mockStripe.js +357 -0
  373. package/dist/server/realtimeSyncWs.js +4 -0
  374. package/dist/server/routes/admin.d.ts +114 -0
  375. package/dist/server/routes/admin.js +2226 -0
  376. package/dist/server/routes/annotatedAttachments.d.ts +24 -0
  377. package/dist/server/routes/annotatedAttachments.js +235 -0
  378. package/dist/server/routes/auth.d.ts +61 -0
  379. package/dist/server/routes/auth.js +1296 -0
  380. package/dist/server/{routes.billing.d.ts → routes/billing.d.ts} +3 -2
  381. package/dist/server/routes/billing.js +2001 -0
  382. package/dist/server/routes/billing.test.d.ts +1 -0
  383. package/dist/server/routes/billing.test.js +1631 -0
  384. package/dist/server/routes/documentReviews.d.ts +11 -0
  385. package/dist/server/routes/documentReviews.js +191 -0
  386. package/dist/server/routes/documents.d.ts +118 -0
  387. package/dist/server/routes/documents.js +1113 -0
  388. package/dist/server/routes/resources.d.ts +25 -0
  389. package/dist/server/routes/resources.js +225 -0
  390. package/dist/server/routes/shared.d.ts +35 -0
  391. package/dist/server/routes/shared.js +305 -0
  392. package/dist/server/routes/shared.test.d.ts +1 -0
  393. package/dist/server/routes/shared.test.js +32 -0
  394. package/dist/server/{routes.sync.d.ts → routes/sync.d.ts} +5 -5
  395. package/dist/server/routes/sync.integration.test.d.ts +1 -0
  396. package/dist/server/routes/sync.integration.test.js +2003 -0
  397. package/dist/server/routes/sync.js +3143 -0
  398. package/dist/server/routes/tasks.d.ts +72 -0
  399. package/dist/server/routes/tasks.js +1252 -0
  400. package/dist/server/routes/workspaces.d.ts +32 -0
  401. package/dist/server/routes/workspaces.js +307 -0
  402. package/dist/server/routes.d.ts +8 -9
  403. package/dist/server/routes.js +968 -4092
  404. package/dist/server/routes.test.js +9043 -2415
  405. package/dist/server/runtimeMode.d.ts +1 -1
  406. package/dist/server/runtimeMode.js +3 -18
  407. package/dist/server/runtimeMode.test.js +3 -3
  408. package/dist/server/securityHeaders.d.ts +1 -1
  409. package/dist/server/securityHeaders.js +65 -6
  410. package/dist/server/securityHeaders.test.js +40 -2
  411. package/dist/services/templateEngine.test.d.ts +1 -0
  412. package/dist/{__tests__ → services}/templateEngine.test.js +1 -1
  413. package/dist/services/templates.test.d.ts +1 -0
  414. package/dist/{__tests__ → services}/templates.test.js +1 -1
  415. package/dist/services/workflowDocumentFixtures.test.d.ts +1 -0
  416. package/dist/{__tests__ → services}/workflowDocumentFixtures.test.js +4 -4
  417. package/dist/services/workflowExportMatrix.test.d.ts +1 -0
  418. package/dist/{__tests__ → services}/workflowExportMatrix.test.js +1 -1
  419. package/dist/services/workflowExportSnapshots.test.d.ts +1 -0
  420. package/dist/services/workflowGeneration.test.d.ts +1 -0
  421. package/dist/services/workflowSimulation.test.d.ts +1 -0
  422. package/dist/services/workflowSimulation.test.js +113 -0
  423. package/dist/services/workflowV2Policy.test.d.ts +1 -0
  424. package/dist/{__tests__ → services}/workflowV2Policy.test.js +2 -2
  425. package/dist/shared/aiProfileSurfaceType.d.ts +9 -0
  426. package/dist/shared/aiProfileSurfaceType.js +49 -0
  427. package/dist/shared/customTaxonomyLibrary.d.ts +11 -0
  428. package/dist/shared/customTaxonomyLibrary.js +276 -0
  429. package/dist/shared/customTaxonomyLibrary.test.d.ts +1 -0
  430. package/dist/shared/customTaxonomyLibrary.test.js +20 -0
  431. package/dist/shared/taxonomyCatalog.d.ts +19 -0
  432. package/dist/shared/taxonomyCatalog.js +36 -0
  433. package/dist/shared/taxonomyDefaults.d.ts +29 -0
  434. package/dist/shared/taxonomyDefaults.js +26 -0
  435. package/dist/shared/taxonomyLibrary.d.ts +15 -0
  436. package/dist/shared/taxonomyLibrary.js +98 -0
  437. package/dist/shared/taxonomyLibrary.test.d.ts +1 -0
  438. package/dist/shared/taxonomyLibrary.test.js +26 -0
  439. package/dist/shared/taxonomyState.d.ts +36 -0
  440. package/dist/shared/taxonomyState.js +73 -0
  441. package/dist/shared/taxonomyState.test.d.ts +1 -0
  442. package/dist/shared/taxonomyState.test.js +71 -0
  443. package/dist/shared/workflowDefaults.d.ts +9 -0
  444. package/dist/shared/workflowDefaults.js +11 -0
  445. package/dist/storage/documentIntegrity.d.ts +2 -0
  446. package/dist/storage/documentIntegrity.js +34 -17
  447. package/dist/storage/documentPurge.d.ts +2 -1
  448. package/dist/storage/documentPurge.js +35 -8
  449. package/dist/storage/index.d.ts +4 -0
  450. package/dist/storage/index.js +2 -0
  451. package/dist/storage/objectStorage.d.ts +1 -1
  452. package/dist/storage/objectStorageClient.d.ts +6 -4
  453. package/dist/storage/objectStorageClient.js +77 -29
  454. package/dist/storage/objectStorageClient.test.d.ts +1 -0
  455. package/dist/storage/objectStorageClient.test.js +57 -0
  456. package/dist/storage/objectStorageConfig.js +3 -1
  457. package/dist/storage/objectStorageConfig.test.d.ts +1 -0
  458. package/dist/storage/objectStorageConfig.test.js +38 -0
  459. package/dist/storage/postgresAdapter.d.ts +5 -0
  460. package/dist/storage/postgresAdapter.js +2 -2
  461. package/dist/storage/postgresAdapter.test.d.ts +1 -0
  462. package/dist/storage/postgresAdapter.test.js +29 -0
  463. package/dist/storage/taskAssetStore.d.ts +7 -4
  464. package/dist/storage/taskAssetStore.js +65 -60
  465. package/dist/storage/workspaceAssetStore.d.ts +122 -0
  466. package/dist/storage/workspaceAssetStore.js +496 -0
  467. package/dist/storage/workspaceAssetStore.test.d.ts +1 -0
  468. package/dist/storage/workspaceAssetStore.test.js +501 -0
  469. package/dist/sync/cloudSyncApi.d.ts +33 -2
  470. package/dist/sync/cloudSyncApi.js +37 -15
  471. package/dist/sync/cloudSyncApi.test.js +60 -3
  472. package/dist/sync/index.d.ts +2 -0
  473. package/dist/sync/index.js +3 -0
  474. package/dist/sync/syncService.d.ts +25 -0
  475. package/dist/sync/syncService.js +184 -16
  476. package/dist/sync/syncService.test.js +289 -25
  477. package/dist/sync/workspaceRepair.d.ts +114 -0
  478. package/dist/sync/workspaceRepair.js +566 -0
  479. package/dist/sync/workspaceSyncModel.d.ts +230 -2
  480. package/dist/sync/workspaceSyncModel.js +456 -17
  481. package/dist/sync/workspaceSyncModel.test.js +642 -0
  482. package/dist/sync/workspaceSyncState.d.ts +12 -0
  483. package/dist/sync/workspaceSyncState.js +12 -0
  484. package/dist/sync/workspaceSyncSurface.d.ts +33 -0
  485. package/dist/sync/workspaceSyncSurface.js +74 -0
  486. package/dist/types.d.ts +143 -18
  487. package/dist/types.js +9 -24
  488. package/dist/ui/assets/AgentsModule-TVmCgizS.js +1 -0
  489. package/dist/ui/assets/AnnotatedAttachmentWorkspace-BaS2VwIr.css +1 -0
  490. package/dist/ui/assets/AnnotatedAttachmentWorkspace-CAyhnPeR.js +3 -0
  491. package/dist/ui/assets/DocumentWorkspace-BOCw5e4D.js +250 -0
  492. package/dist/ui/assets/DocumentWorkspace-C_8T8oz-.css +1 -0
  493. package/dist/ui/assets/InitiativesModule-CN0r02Oi.js +1 -0
  494. package/dist/ui/assets/PlansPage-BlVC_lRq.css +1 -0
  495. package/dist/ui/assets/PlansPage-FcQSNLZd.js +1 -0
  496. package/dist/ui/assets/TaskSettings-BwB9NtmJ.css +1 -0
  497. package/dist/ui/assets/TaskSettings-Cw5zYD1L.js +8 -0
  498. package/dist/ui/assets/WorkflowsModule-CY9R2zPB.js +5 -0
  499. package/dist/ui/assets/index-Bzqy5QGm.js +6 -0
  500. package/dist/ui/assets/index-DxRiI3tY.css +1 -0
  501. package/dist/ui/assets/vendor-dnd-DRzYolkg.js +5 -0
  502. package/dist/ui/assets/{vendor-icons-ZFG3SGwo.js → vendor-icons-QZyhEwgT.js} +1 -1
  503. package/dist/ui/assets/{vendor-markdown-CKYkQHfj.js → vendor-markdown-BUxTU7dS.js} +1 -1
  504. package/dist/ui/assets/vendor-react-CKJs5o3c.js +61 -0
  505. package/dist/ui/assets/vendor-router-BbWMxlnO.js +3 -0
  506. package/dist/ui/branding/logos/logo.png +0 -0
  507. package/dist/ui/branding/logos/logo_dark.svg +27 -0
  508. package/dist/ui/branding/logos/logo_favicon.svg +35 -0
  509. package/dist/ui/branding/logos/logo_light.svg +27 -0
  510. package/dist/ui/favicon/apple-touch-icon.png +0 -0
  511. package/dist/ui/favicon/archive/phoenix/apple-touch-icon.png +0 -0
  512. package/dist/ui/favicon/archive/phoenix/favicon.ico +0 -0
  513. package/dist/ui/favicon/archive/phoenix/site.webmanifest +1 -0
  514. package/dist/ui/favicon/favicon-96x96.png +0 -0
  515. package/dist/ui/favicon/favicon.ico +0 -0
  516. package/dist/ui/favicon/favicon.svg +17 -0
  517. package/dist/ui/favicon/site.webmanifest +21 -1
  518. package/dist/ui/favicon/web-app-manifest-192x192.png +0 -0
  519. package/dist/ui/favicon/web-app-manifest-512x512.png +0 -0
  520. package/dist/ui/index.html +10 -7
  521. package/dist/ui/product/screen_01.png +0 -0
  522. package/dist/ui/product/screen_02.png +0 -0
  523. package/dist/ui/product/screen_03.png +0 -0
  524. package/dist/utils/annotatedAttachments.d.ts +20 -0
  525. package/dist/utils/annotatedAttachments.js +74 -0
  526. package/dist/utils/annotatedAttachments.test.d.ts +1 -0
  527. package/dist/utils/annotatedAttachments.test.js +108 -0
  528. package/dist/utils/assignees.d.ts +26 -0
  529. package/dist/utils/assignees.js +132 -0
  530. package/dist/utils/canonicalAssetKind.d.ts +16 -0
  531. package/dist/utils/canonicalAssetKind.js +39 -0
  532. package/dist/utils/canonicalAssetKind.test.d.ts +1 -0
  533. package/dist/utils/canonicalAssetKind.test.js +24 -0
  534. package/dist/utils/coalescedRefresh.d.ts +5 -0
  535. package/dist/utils/coalescedRefresh.js +16 -0
  536. package/dist/utils/coalescedRefresh.test.d.ts +1 -0
  537. package/dist/utils/coalescedRefresh.test.js +30 -0
  538. package/dist/utils/constants.d.ts +16 -3
  539. package/dist/utils/constants.icons.test.js +2 -1
  540. package/dist/utils/constants.js +70 -13
  541. package/dist/utils/contextAssetEvents.d.ts +7 -0
  542. package/dist/utils/contextAssetEvents.js +6 -0
  543. package/dist/utils/contextFiles.d.ts +14 -3
  544. package/dist/utils/contextFiles.js +40 -8
  545. package/dist/utils/documentManagerApi.d.ts +6 -0
  546. package/dist/utils/documentManagerApi.js +19 -0
  547. package/dist/utils/documentNames.d.ts +24 -0
  548. package/dist/utils/documentNames.js +91 -0
  549. package/dist/utils/documentReferences.d.ts +9 -0
  550. package/dist/utils/documentReferences.js +11 -0
  551. package/dist/utils/entityReferences.d.ts +9 -0
  552. package/dist/utils/entityReferences.js +32 -0
  553. package/dist/utils/imageReferences.d.ts +9 -0
  554. package/dist/utils/imageReferences.js +11 -0
  555. package/dist/utils/planParser.d.ts +2 -2
  556. package/dist/utils/planParser.js +11 -11
  557. package/dist/utils/planParser.test.d.ts +1 -0
  558. package/dist/{__tests__ → utils}/planParser.test.js +22 -22
  559. package/dist/utils/planningReferences.d.ts +17 -0
  560. package/dist/utils/planningReferences.js +30 -0
  561. package/dist/utils/planningReferences.test.d.ts +1 -0
  562. package/dist/utils/planningReferences.test.js +17 -0
  563. package/dist/utils/taskActivity.d.ts +9 -0
  564. package/dist/utils/taskActivity.js +147 -0
  565. package/dist/utils/taskActivity.test.d.ts +1 -0
  566. package/dist/utils/taskActivity.test.js +34 -0
  567. package/dist/utils/taskDraftDefaults.d.ts +21 -0
  568. package/dist/utils/taskDraftDefaults.js +40 -0
  569. package/dist/utils/taskDraftDefaults.test.d.ts +1 -0
  570. package/dist/utils/taskDraftDefaults.test.js +34 -0
  571. package/dist/utils/taskNormalization.d.ts +25 -0
  572. package/dist/utils/taskNormalization.js +161 -0
  573. package/dist/utils/taskNormalization.test.d.ts +1 -0
  574. package/dist/utils/taskNormalization.test.js +158 -0
  575. package/dist/utils/taskReferences.d.ts +5 -0
  576. package/dist/utils/taskReferences.js +11 -0
  577. package/dist/utils/taskforceApiClient.d.ts +2 -0
  578. package/dist/utils/taskforceApiClient.js +101 -3
  579. package/dist/utils/taskforceApiClient.test.d.ts +1 -0
  580. package/dist/utils/taskforceApiClient.test.js +44 -0
  581. package/dist/utils/taxonomyFilterOptions.d.ts +2 -0
  582. package/dist/utils/taxonomyFilterOptions.js +17 -0
  583. package/dist/utils/taxonomyFormDefaults.d.ts +3 -0
  584. package/dist/utils/taxonomyFormDefaults.js +28 -0
  585. package/dist/utils/taxonomyFormDefaults.test.d.ts +1 -0
  586. package/dist/utils/taxonomyFormDefaults.test.js +63 -0
  587. package/dist/utils/taxonomyLifecycle.d.ts +3 -0
  588. package/dist/utils/taxonomyLifecycle.js +17 -0
  589. package/dist/utils/taxonomySorting.d.ts +7 -0
  590. package/dist/utils/taxonomySorting.js +74 -0
  591. package/dist/utils/theme.d.ts +15 -0
  592. package/dist/utils/theme.js +23 -0
  593. package/dist/utils/uiNotice.d.ts +7 -0
  594. package/dist/utils/uiNotice.js +6 -0
  595. package/dist/utils/uiNotice.test.d.ts +1 -0
  596. package/dist/utils/uiNotice.test.js +18 -0
  597. package/dist/utils/workspaceIdentity.d.ts +14 -0
  598. package/dist/utils/workspaceIdentity.js +21 -0
  599. package/dist/utils/workspaceIdentity.test.js +30 -1
  600. package/dist/utils/workspaceSyncPresentation.d.ts +20 -0
  601. package/dist/utils/workspaceSyncPresentation.js +21 -0
  602. package/dist/utils/workspaceSyncPresentation.test.d.ts +1 -0
  603. package/dist/utils/workspaceSyncPresentation.test.js +36 -0
  604. package/package.json +28 -23
  605. package/scripts/bootstrap-playwright-auth.mjs +155 -0
  606. package/scripts/check-compat-boundaries.mjs +41 -0
  607. package/scripts/check-env.ts +9 -2
  608. package/scripts/debug-login.mjs +32 -0
  609. package/scripts/migrate-planning-model.ts +233 -0
  610. package/scripts/migrate-task-data-assets.mjs +408 -0
  611. package/scripts/playwright-auth.sh +11 -0
  612. package/scripts/run-dev-proxy.sh +2 -0
  613. package/scripts/update-homebrew-formula.sh +2 -2
  614. package/scripts/with-esbuild.sh +11 -0
  615. package/src/resources/templates/WORKFLOW_V2_POLICY.md +1 -1
  616. package/src/resources/templates/workflow-sources/workflowDocs.mjs +62 -52
  617. package/src/resources/templates/workflows/collaborate.yaml +11 -5
  618. package/src/resources/templates/workflows/do.yaml +8 -2
  619. package/src/resources/templates/workflows/evaluate.yaml +13 -7
  620. package/src/resources/templates/workflows/execute.yaml +40 -23
  621. package/src/resources/templates/workflows/plan.yaml +15 -8
  622. package/src/resources/templates/workflows/review.yaml +14 -8
  623. package/dist/TaskforceScreenshot.d.ts +0 -11
  624. package/dist/TaskforceScreenshot.js +0 -113
  625. package/dist/compat/priorityCompat.d.ts +0 -2
  626. package/dist/compat/priorityCompat.js +0 -24
  627. package/dist/components/features/settings/TaxonomyManager 2.d.ts +0 -52
  628. package/dist/components/features/settings/TaxonomyManager 2.js +0 -75
  629. package/dist/components/task/TaskKanban 2.d.ts +0 -76
  630. package/dist/components/task/TaskKanban 2.js +0 -1004
  631. package/dist/components/task/TaskScreenshotSection.d.ts +0 -15
  632. package/dist/components/task/TaskScreenshotSection.js +0 -22
  633. package/dist/components/views/StandaloneLayout 2.d.ts +0 -8
  634. package/dist/components/views/StandaloneLayout 2.js +0 -1660
  635. package/dist/core/InitiativeTemplates.test.js +0 -50
  636. package/dist/core/ParentLifecycle.test.js +0 -98
  637. package/dist/migrations/clientMigrations.d.ts +0 -9
  638. package/dist/migrations/clientMigrations.js +0 -74
  639. package/dist/migrations/flags.d.ts +0 -6
  640. package/dist/migrations/flags.js +0 -8
  641. package/dist/migrations/taskMigrations.d.ts +0 -71
  642. package/dist/migrations/taskMigrations.js +0 -236
  643. package/dist/migrations/taskMigrations.test.js +0 -34
  644. package/dist/server/routes.billing.js +0 -991
  645. package/dist/server/routes.billing.test.js +0 -387
  646. package/dist/server/routes.sync.integration.test.js +0 -470
  647. package/dist/server/routes.sync.js +0 -1141
  648. package/dist/soak/syncSoakHarness.d.ts +0 -6
  649. package/dist/soak/syncSoakHarness.js +0 -10
  650. package/dist/ui/assets/index-0W5vyCpn.css +0 -1
  651. package/dist/ui/assets/index-MCZuNNfn.js +0 -23
  652. package/dist/ui/assets/logo_white_01-0Vx-iIIv.png +0 -0
  653. package/dist/ui/assets/vendor-dnd-BI1K77C1.js +0 -5
  654. package/dist/ui/assets/vendor-react-DdIDsh7f.js +0 -9
  655. package/dist/ui/assets/vendor-router-BtiNU7Dl.js +0 -3
  656. package/dist/utils/taskHierarchy.d.ts +0 -4
  657. package/dist/utils/taskHierarchy.js +0 -69
  658. package/dist/utils/taskHierarchy.test.js +0 -38
  659. package/dist/utils/taskParenting.d.ts +0 -3
  660. package/dist/utils/taskParenting.js +0 -24
  661. package/dist/utils/taskParenting.test.js +0 -21
  662. package/dist/utils/taskRelations.d.ts +0 -6
  663. package/dist/utils/taskRelations.js +0 -24
  664. package/dist/utils/taskRelations.test.js +0 -34
  665. package/scripts/check-compat-boundaries.js +0 -48
  666. /package/dist/{__tests__/planParser.test.d.ts → TaskforceCore.filter-persistence.test.d.ts} +0 -0
  667. /package/dist/{__tests__/releaseVersion.test.d.ts → TaskforceCore.routing.test.d.ts} +0 -0
  668. /package/dist/{__tests__/structuredCommentValidation.test.d.ts → annotatedAttachments/AnnotatedAttachmentSessionStore.test.d.ts} +0 -0
  669. /package/dist/{__tests__/structuredDocValidation.test.d.ts → annotatedAttachments/payload.test.d.ts} +0 -0
  670. /package/dist/{__tests__/templateEngine.test.d.ts → annotatedAttachments/types.js} +0 -0
  671. /package/dist/{__tests__/templates.test.d.ts → compat/workspaceSyncCompat.test.d.ts} +0 -0
  672. /package/dist/{__tests__/workflowDocumentFixtures.test.d.ts → components/features/AgentsModule.test.d.ts} +0 -0
  673. /package/dist/{__tests__/workflowExportMatrix.test.d.ts → components/features/AnnotatedAttachmentWorkspace.test.d.ts} +0 -0
  674. /package/dist/{__tests__/workflowExportSnapshots.test.d.ts → components/features/DocumentWorkspace.test.d.ts} +0 -0
  675. /package/dist/{__tests__/workflowGeneration.test.d.ts → components/features/settings/TaxonomyLibraryManager.test.d.ts} +0 -0
  676. /package/dist/{__tests__/workflowV2Policy.test.d.ts → components/task/TaskActionHeader.test.d.ts} +0 -0
  677. /package/dist/{core/InitiativeTemplates.test.d.ts → components/task/TaskKanban.planning-drop.test.d.ts} +0 -0
  678. /package/dist/{core/ParentLifecycle.test.d.ts → components/task/TaskStatusActions.test.d.ts} +0 -0
  679. /package/dist/{migrations/taskMigrations.test.d.ts → components/ui/TopNoticeLayer.test.d.ts} +0 -0
  680. /package/dist/{server/routes.billing.test.d.ts → components/views/AppShellHeader.test.d.ts} +0 -0
  681. /package/dist/{server/routes.sync.integration.test.d.ts → components/views/PlanComparisonPage.test.d.ts} +0 -0
  682. /package/dist/{utils/taskHierarchy.test.d.ts → components/views/chrome/WorkspaceChromeSections.test.d.ts} +0 -0
  683. /package/dist/{utils/taskParenting.test.d.ts → components/views/chrome/workspaceChrome.test.d.ts} +0 -0
  684. /package/dist/{utils/taskRelations.test.d.ts → components/views/panels/DocumentFilterToolbar.test.d.ts} +0 -0
  685. /package/dist/public/{android-chrome-192x192.png → archive/phoenix/android-chrome-192x192.png} +0 -0
  686. /package/dist/public/{android-chrome-512x512.png → archive/phoenix/android-chrome-512x512.png} +0 -0
  687. /package/dist/public/{favicon-16x16.png → archive/phoenix/favicon-16x16.png} +0 -0
  688. /package/dist/public/{favicon-32x32.png → archive/phoenix/favicon-32x32.png} +0 -0
  689. /package/dist/public/{favicon.png → archive/phoenix/favicon.png} +0 -0
  690. /package/dist/{__tests__ → services}/workflowExportSnapshots.test.js +0 -0
  691. /package/dist/{__tests__ → services}/workflowGeneration.test.js +0 -0
  692. /package/dist/ui/favicon/{android-chrome-192x192.png → archive/phoenix/android-chrome-192x192.png} +0 -0
  693. /package/dist/ui/favicon/{android-chrome-512x512.png → archive/phoenix/android-chrome-512x512.png} +0 -0
  694. /package/dist/ui/favicon/{favicon-16x16.png → archive/phoenix/favicon-16x16.png} +0 -0
  695. /package/dist/ui/favicon/{favicon-32x32.png → archive/phoenix/favicon-32x32.png} +0 -0
  696. /package/dist/ui/favicon/{favicon.png → archive/phoenix/favicon.png} +0 -0
@@ -0,0 +1,132 @@
1
+ export const TASK_ASSIGNEE_UNASSIGNED = 'unassigned';
2
+ export const TASK_ASSIGNEE_AGENT = 'agent';
3
+ const LEGACY_TASK_ASSIGNEE_USER = 'user';
4
+ const OPAQUE_AI_PROFILE_ID_PATTERN = /^[0-9a-f]{8,}$/i;
5
+ export function isAgentAssignee(value) {
6
+ const normalized = String(value || '').trim().toLowerCase();
7
+ return normalized === TASK_ASSIGNEE_AGENT || normalized === 'ai' || normalized.startsWith('ai-profile-');
8
+ }
9
+ export function isUnassignedAssignee(value) {
10
+ const normalized = String(value || '').trim().toLowerCase();
11
+ return !normalized
12
+ || normalized === TASK_ASSIGNEE_UNASSIGNED
13
+ || normalized === 'none'
14
+ || normalized === 'null'
15
+ || normalized === LEGACY_TASK_ASSIGNEE_USER;
16
+ }
17
+ export function getAssigneeKind(value) {
18
+ if (isAgentAssignee(value))
19
+ return 'agent';
20
+ if (isUnassignedAssignee(value))
21
+ return 'unassigned';
22
+ return 'member';
23
+ }
24
+ export function formatWorkspaceAssigneeLabel(candidate) {
25
+ const displayName = String(candidate.displayName || '').trim();
26
+ const email = String(candidate.email || '').trim().toLowerCase();
27
+ return displayName || email || String(candidate.userId || '').trim() || 'Workspace member';
28
+ }
29
+ export function createDefaultAssigneeOptions() {
30
+ return [
31
+ {
32
+ value: TASK_ASSIGNEE_UNASSIGNED,
33
+ label: 'Unassigned',
34
+ icon: 'HelpCircle',
35
+ color: 'var(--text-secondary)',
36
+ kind: 'unassigned',
37
+ },
38
+ ];
39
+ }
40
+ export function createWorkspaceAssigneeOptions(candidates) {
41
+ const deduped = new Map();
42
+ for (const candidate of candidates) {
43
+ const userId = String(candidate.userId || '').trim();
44
+ if (!userId)
45
+ continue;
46
+ deduped.set(userId, {
47
+ value: userId,
48
+ label: formatWorkspaceAssigneeLabel(candidate),
49
+ icon: 'User',
50
+ color: '#22c55e',
51
+ kind: 'member',
52
+ });
53
+ }
54
+ return mergeAssigneeOptions(Array.from(deduped.values()));
55
+ }
56
+ export function mergeAssigneeOptions(options) {
57
+ const deduped = new Map();
58
+ for (const option of createDefaultAssigneeOptions()) {
59
+ deduped.set(option.value, option);
60
+ }
61
+ for (const option of Array.isArray(options) ? options : []) {
62
+ const value = String(option?.value || '').trim();
63
+ if (!value || value === TASK_ASSIGNEE_UNASSIGNED || value === TASK_ASSIGNEE_AGENT)
64
+ continue;
65
+ deduped.set(value, {
66
+ value,
67
+ label: String(option.label || value).trim() || value,
68
+ icon: String(option.icon || (option.kind === 'agent' ? 'Bot' : 'User')),
69
+ color: String(option.color || (option.kind === 'agent' ? '#8b5cf6' : '#22c55e')),
70
+ kind: option.kind === 'agent' ? 'agent' : 'member',
71
+ });
72
+ }
73
+ const defaults = [TASK_ASSIGNEE_UNASSIGNED];
74
+ return Array.from(deduped.values()).sort((a, b) => {
75
+ const aIndex = defaults.indexOf(a.value);
76
+ const bIndex = defaults.indexOf(b.value);
77
+ if (aIndex >= 0 || bIndex >= 0) {
78
+ if (aIndex < 0)
79
+ return 1;
80
+ if (bIndex < 0)
81
+ return -1;
82
+ return aIndex - bIndex;
83
+ }
84
+ return a.label.localeCompare(b.label, undefined, { sensitivity: 'base' });
85
+ });
86
+ }
87
+ export function ensureAssigneeOptionPresent(options, assignee) {
88
+ const value = String(assignee || '').trim();
89
+ if (!value)
90
+ return options;
91
+ if (options.some((option) => option.value === value))
92
+ return options;
93
+ const cleanedLabel = value
94
+ .replace(/^ai-profile-/i, '')
95
+ .replace(/[-_]+/g, ' ')
96
+ .replace(/\s+/g, ' ')
97
+ .trim();
98
+ const fallbackLabel = cleanedLabel
99
+ ? cleanedLabel.split(' ').map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(' ')
100
+ : value;
101
+ if (getAssigneeKind(value) === 'agent') {
102
+ const isOpaqueProfileId = String(value).toLowerCase().startsWith('ai-profile-')
103
+ && cleanedLabel.split(' ').every((part) => OPAQUE_AI_PROFILE_ID_PATTERN.test(part));
104
+ return mergeAssigneeOptions([
105
+ ...options,
106
+ { value, label: isOpaqueProfileId ? 'AI' : (fallbackLabel || 'AI'), icon: 'Bot', color: '#8b5cf6', kind: 'agent' },
107
+ ]);
108
+ }
109
+ if (getAssigneeKind(value) === 'member') {
110
+ return mergeAssigneeOptions([
111
+ ...options,
112
+ { value, label: fallbackLabel || value, icon: 'User', color: '#22c55e', kind: 'member' },
113
+ ]);
114
+ }
115
+ return options;
116
+ }
117
+ export function normalizeAssigneeOptions(options) {
118
+ const next = Array.isArray(options) ? options.filter(Boolean) : [];
119
+ return mergeAssigneeOptions(next);
120
+ }
121
+ export function getAssigneeLabel(assignee, options) {
122
+ const value = String(assignee || '').trim();
123
+ const resolvedOptions = normalizeAssigneeOptions(options);
124
+ const matching = resolvedOptions.find((option) => option.value === value);
125
+ if (matching)
126
+ return matching.label;
127
+ if (isAgentAssignee(value))
128
+ return 'AI';
129
+ if (isUnassignedAssignee(value))
130
+ return 'Unassigned';
131
+ return value || 'Unassigned';
132
+ }
@@ -0,0 +1,16 @@
1
+ export type CanonicalAssetKind = 'document' | 'image' | 'file';
2
+ export declare function isCanonicalDocumentExtension(filePathRaw: string | null | undefined): boolean;
3
+ export declare function isCanonicalDocumentMimeType(mimeTypeRaw: string | null | undefined): boolean;
4
+ export declare function inferCanonicalAssetKind(filePathRaw: string | null | undefined, mimeTypeRaw: string | null | undefined, fallback?: CanonicalAssetKind): CanonicalAssetKind;
5
+ export declare function isValidCanonicalDocumentAsset(params: {
6
+ kind: CanonicalAssetKind;
7
+ storageKey?: string | null;
8
+ originalFilename?: string | null;
9
+ mimeType?: string | null;
10
+ }): boolean;
11
+ export declare function normalizeCanonicalAssetKind(params: {
12
+ kind: CanonicalAssetKind;
13
+ storageKey?: string | null;
14
+ originalFilename?: string | null;
15
+ mimeType?: string | null;
16
+ }): CanonicalAssetKind;
@@ -0,0 +1,39 @@
1
+ import * as path from 'path';
2
+ const CANONICAL_DOCUMENT_EXTENSIONS = new Set(['.md', '.markdown']);
3
+ const IMAGE_EXTENSIONS = new Set(['.png', '.jpg', '.jpeg', '.webp', '.gif', '.svg']);
4
+ export function isCanonicalDocumentExtension(filePathRaw) {
5
+ const ext = path.extname(String(filePathRaw || '').trim()).toLowerCase();
6
+ return CANONICAL_DOCUMENT_EXTENSIONS.has(ext);
7
+ }
8
+ export function isCanonicalDocumentMimeType(mimeTypeRaw) {
9
+ const mimeType = String(mimeTypeRaw || '').trim().toLowerCase();
10
+ return mimeType === 'text/markdown';
11
+ }
12
+ export function inferCanonicalAssetKind(filePathRaw, mimeTypeRaw, fallback = 'file') {
13
+ const filePath = String(filePathRaw || '').trim();
14
+ const mimeType = String(mimeTypeRaw || '').trim().toLowerCase();
15
+ const ext = path.extname(filePath).toLowerCase();
16
+ if (mimeType.startsWith('image/'))
17
+ return 'image';
18
+ if (IMAGE_EXTENSIONS.has(ext))
19
+ return 'image';
20
+ if (isCanonicalDocumentExtension(filePath) || isCanonicalDocumentMimeType(mimeType))
21
+ return 'document';
22
+ return fallback;
23
+ }
24
+ export function isValidCanonicalDocumentAsset(params) {
25
+ if (params.kind !== 'document')
26
+ return false;
27
+ const filePath = String(params.originalFilename || params.storageKey || '').trim();
28
+ return isCanonicalDocumentExtension(filePath) || isCanonicalDocumentMimeType(params.mimeType);
29
+ }
30
+ export function normalizeCanonicalAssetKind(params) {
31
+ if (params.kind === 'image')
32
+ return 'image';
33
+ if (isValidCanonicalDocumentAsset(params))
34
+ return 'document';
35
+ if (params.kind === 'document') {
36
+ return inferCanonicalAssetKind(params.originalFilename || params.storageKey || '', params.mimeType || '', 'file');
37
+ }
38
+ return 'file';
39
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { inferCanonicalAssetKind, isValidCanonicalDocumentAsset, normalizeCanonicalAssetKind } from './canonicalAssetKind';
3
+ describe('canonicalAssetKind', () => {
4
+ it('treats markdown as canonical documents', () => {
5
+ expect(inferCanonicalAssetKind('plan.md', 'text/markdown')).toBe('document');
6
+ expect(inferCanonicalAssetKind('plan.markdown', 'application/octet-stream')).toBe('document');
7
+ expect(isValidCanonicalDocumentAsset({ kind: 'document', originalFilename: 'plan.md', mimeType: 'text/plain' })).toBe(true);
8
+ });
9
+ it('does not treat non-markdown files in document folders as canonical documents', () => {
10
+ expect(inferCanonicalAssetKind('workspaces/default/assets/documents/asset-doc-inline-missing-2-spec.pdf', 'application/pdf')).toBe('file');
11
+ expect(normalizeCanonicalAssetKind({
12
+ kind: 'document',
13
+ storageKey: 'workspaces/default/assets/documents/asset-sync-hello.txt',
14
+ originalFilename: 'hello.txt',
15
+ mimeType: 'text/plain'
16
+ })).toBe('file');
17
+ expect(isValidCanonicalDocumentAsset({
18
+ kind: 'document',
19
+ storageKey: 'workspaces/default/assets/documents/asset-sync-hello.txt',
20
+ originalFilename: 'hello.txt',
21
+ mimeType: 'text/plain'
22
+ })).toBe(false);
23
+ });
24
+ });
@@ -0,0 +1,5 @@
1
+ export declare function runCoalescedRefresh(inFlightRef: {
2
+ current: boolean;
3
+ }, pendingRef: {
4
+ current: boolean;
5
+ }, refresh: () => Promise<void>): Promise<void>;
@@ -0,0 +1,16 @@
1
+ export async function runCoalescedRefresh(inFlightRef, pendingRef, refresh) {
2
+ if (inFlightRef.current) {
3
+ pendingRef.current = true;
4
+ return;
5
+ }
6
+ inFlightRef.current = true;
7
+ try {
8
+ do {
9
+ pendingRef.current = false;
10
+ await refresh();
11
+ } while (pendingRef.current);
12
+ }
13
+ finally {
14
+ inFlightRef.current = false;
15
+ }
16
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { runCoalescedRefresh } from './coalescedRefresh';
3
+ describe('runCoalescedRefresh', () => {
4
+ it('coalesces overlapping refresh triggers into one follow-up run', async () => {
5
+ const inFlightRef = { current: false };
6
+ const pendingRef = { current: false };
7
+ const releaseQueue = [];
8
+ let refreshCalls = 0;
9
+ const refresh = async () => {
10
+ refreshCalls += 1;
11
+ await new Promise((resolve) => {
12
+ releaseQueue.push(resolve);
13
+ });
14
+ };
15
+ const firstRun = runCoalescedRefresh(inFlightRef, pendingRef, refresh);
16
+ expect(refreshCalls).toBe(1);
17
+ await runCoalescedRefresh(inFlightRef, pendingRef, refresh);
18
+ expect(refreshCalls).toBe(1);
19
+ expect(pendingRef.current).toBe(true);
20
+ releaseQueue.shift()?.();
21
+ await Promise.resolve();
22
+ await Promise.resolve();
23
+ expect(refreshCalls).toBe(2);
24
+ releaseQueue.shift()?.();
25
+ await firstRun;
26
+ expect(refreshCalls).toBe(2);
27
+ expect(inFlightRef.current).toBe(false);
28
+ expect(pendingRef.current).toBe(false);
29
+ });
30
+ });
@@ -1,12 +1,22 @@
1
+ import type { TaxonomyDefinition, TaxonomyOption, TaskStatus } from '../types';
1
2
  export declare const STORAGE_KEY = "taskforce-settings";
3
+ export type StatusDefinition = TaxonomyOption & {
4
+ value: TaskStatus;
5
+ shortLabel?: string;
6
+ };
7
+ export declare const STATUS_DEFINITIONS: StatusDefinition[];
8
+ export declare const STATUS_SYSTEM_TAXONOMY: TaxonomyDefinition;
2
9
  export declare const STATUS_OPTIONS: {
3
- value: string;
10
+ value: "task" | "review" | "on-hold" | "in-progress" | "done" | "cancelled";
4
11
  label: string;
12
+ icon: string | undefined;
13
+ color: string | undefined;
5
14
  }[];
6
- declare const curatedIcons: readonly ["Folder", "Code", "FileText", "Terminal", "Database", "Cpu", "Globe", "Layout", "Server", "Search", "Settings", "Zap", "Shield", "Star", "Layers", "Bug", "Box", "Book", "MessageSquare", "Image", "Music", "Video", "Map", "Mail", "Camera", "Heart", "Anchor", "Rocket", "Target", "Flag", "Bookmark", "Briefcase", "Puzzle", "SquareUserRound", "Users", "User", "Unplug", "Clock", "Lock", "Pencil", "TrafficCone", "CircleDollarSign", "Activity", "Wrench", "Microscope", "Palette", "Webhook", "FlaskConical", "Bot", "Cloud", "Kanban", "Infinity", "Monitor", "Smartphone", "History", "Brain", "Calendar", "Play", "Pause", "Sparkles", "Check", "Ban", "Circle", "CheckCircle", "Wind", "Github", "Inbox", "HelpCircle", "Gauge", "FileCode", "ArrowDown", "Minus", "ArrowUp", "AlertTriangle", "CircleQuestionMark", "TriangleAlert"];
15
+ export declare function getStatusDefinition(status?: string | null): StatusDefinition;
16
+ declare const curatedIcons: readonly ["Folder", "Code", "FileText", "Terminal", "Database", "Cpu", "Globe", "Layout", "Server", "Search", "Settings", "Zap", "Shield", "Star", "Layers", "Bug", "Box", "Book", "MessageSquare", "Image", "Music", "Video", "Map", "Mail", "Camera", "Heart", "Anchor", "Rocket", "Target", "Flag", "Bookmark", "Briefcase", "Puzzle", "SquareUserRound", "Users", "User", "Unplug", "Clock", "Lock", "Pencil", "TrafficCone", "CircleDollarSign", "Activity", "Wrench", "Microscope", "Palette", "Webhook", "FlaskConical", "Bot", "Cloud", "Kanban", "Infinity", "Monitor", "Smartphone", "History", "Brain", "Calendar", "Play", "Pause", "Sparkles", "Check", "Ban", "Circle", "CheckCircle", "Wind", "Github", "Square", "SquareCheck", "CheckSquare", "Package", "AlertCircle", "Lightbulb", "ScanSearch", "Inbox", "HelpCircle", "Gauge", "FileCode", "ArrowDown", "Minus", "ArrowUp", "AlertTriangle", "CircleQuestionMark", "TriangleAlert"];
7
17
  export type IconName = typeof curatedIcons[number];
8
18
  export declare const IconMap: Record<string, any>;
9
- export declare const AVAILABLE_ICONS: readonly ["Folder", "Code", "FileText", "Terminal", "Database", "Cpu", "Globe", "Layout", "Server", "Search", "Settings", "Zap", "Shield", "Star", "Layers", "Bug", "Box", "Book", "MessageSquare", "Image", "Music", "Video", "Map", "Mail", "Camera", "Heart", "Anchor", "Rocket", "Target", "Flag", "Bookmark", "Briefcase", "Puzzle", "SquareUserRound", "Users", "User", "Unplug", "Clock", "Lock", "Pencil", "TrafficCone", "CircleDollarSign", "Activity", "Wrench", "Microscope", "Palette", "Webhook", "FlaskConical", "Bot", "Cloud", "Kanban", "Infinity", "Monitor", "Smartphone", "History", "Brain", "Calendar", "Play", "Pause", "Sparkles", "Check", "Ban", "Circle", "CheckCircle", "Wind", "Github", "Inbox", "HelpCircle", "Gauge", "FileCode", "ArrowDown", "Minus", "ArrowUp", "AlertTriangle", "CircleQuestionMark", "TriangleAlert"];
19
+ export declare const AVAILABLE_ICONS: readonly ["Folder", "Code", "FileText", "Terminal", "Database", "Cpu", "Globe", "Layout", "Server", "Search", "Settings", "Zap", "Shield", "Star", "Layers", "Bug", "Box", "Book", "MessageSquare", "Image", "Music", "Video", "Map", "Mail", "Camera", "Heart", "Anchor", "Rocket", "Target", "Flag", "Bookmark", "Briefcase", "Puzzle", "SquareUserRound", "Users", "User", "Unplug", "Clock", "Lock", "Pencil", "TrafficCone", "CircleDollarSign", "Activity", "Wrench", "Microscope", "Palette", "Webhook", "FlaskConical", "Bot", "Cloud", "Kanban", "Infinity", "Monitor", "Smartphone", "History", "Brain", "Calendar", "Play", "Pause", "Sparkles", "Check", "Ban", "Circle", "CheckCircle", "Wind", "Github", "Square", "SquareCheck", "CheckSquare", "Package", "AlertCircle", "Lightbulb", "ScanSearch", "Inbox", "HelpCircle", "Gauge", "FileCode", "ArrowDown", "Minus", "ArrowUp", "AlertTriangle", "CircleQuestionMark", "TriangleAlert"];
10
20
  export declare const TypeMeta: Record<string, {
11
21
  icon: string;
12
22
  color: string;
@@ -18,4 +28,7 @@ export declare const PALETTE_ORDER: string[];
18
28
  * Supports token IDs (e.g. 'red-500') and raw hex codes.
19
29
  */
20
30
  export declare function resolveColor(colorValue?: string): string | undefined;
31
+ export declare function getTypeAccentColor(type?: string): string;
32
+ export declare function getPriorityAccentColor(priority?: number | string): string;
33
+ export declare function getFileTypeAccentColor(fileType?: string): string;
21
34
  export {};
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from 'vitest';
2
- import { AVAILABLE_ICONS, IconMap, TypeMeta } from './constants';
2
+ import { AVAILABLE_ICONS, IconMap, STATUS_DEFINITIONS, TypeMeta } from './constants';
3
3
  import { DEFAULT_CONFIG } from '../types';
4
4
  function collectIcons(items) {
5
5
  return items
@@ -14,6 +14,7 @@ describe('icon registry coverage', () => {
14
14
  ...collectIcons(DEFAULT_CONFIG.categories),
15
15
  ...collectIcons(DEFAULT_CONFIG.priorities),
16
16
  ...collectIcons(DEFAULT_CONFIG.approaches),
17
+ ...collectIcons(STATUS_DEFINITIONS),
17
18
  // Schedule/hierarchy/assignee columns and form defaults used in the app.
18
19
  'Calendar',
19
20
  'Gauge',
@@ -1,13 +1,35 @@
1
1
  import * as Icons from 'lucide-react';
2
+ import { listBuiltInTaxonomyLibraryPacks } from '../shared/taxonomyLibrary.js';
2
3
  export const STORAGE_KEY = 'taskforce-settings';
3
- export const STATUS_OPTIONS = [
4
- { value: 'task', label: 'To Do' },
5
- { value: 'on-hold', label: 'Blocked' },
6
- { value: 'in-progress', label: 'In Progress' },
7
- { value: 'review', label: 'Ready for Review' },
8
- { value: 'done', label: 'Completed' },
9
- { value: 'cancelled', label: 'Cancelled' }
4
+ export const STATUS_DEFINITIONS = [
5
+ { value: 'task', label: 'To Do', shortLabel: 'To Do', icon: 'Square', color: 'blue-200' },
6
+ { value: 'on-hold', label: 'Blocked', shortLabel: 'Blocked', icon: 'Pause', color: 'amber-500' },
7
+ { value: 'in-progress', label: 'Working', shortLabel: 'Working', icon: 'Play', color: 'blue-500' },
8
+ { value: 'review', label: 'Review', shortLabel: 'Review', icon: 'ScanSearch', color: 'violet-500' },
9
+ { value: 'done', label: 'Done', shortLabel: 'Done', icon: 'SquareCheck', color: 'green-500' },
10
+ { value: 'cancelled', label: 'Cancelled', shortLabel: 'Cancelled', icon: 'Ban', color: 'red-500' }
10
11
  ];
12
+ export const STATUS_SYSTEM_TAXONOMY = {
13
+ id: 'status',
14
+ label: 'Status',
15
+ options: STATUS_DEFINITIONS,
16
+ widgetType: 'select',
17
+ isSystem: true,
18
+ multiSelect: false
19
+ };
20
+ export const STATUS_OPTIONS = STATUS_DEFINITIONS.map(({ value, label, icon, color }) => ({
21
+ value,
22
+ label,
23
+ icon,
24
+ color
25
+ }));
26
+ export function getStatusDefinition(status) {
27
+ const normalized = String(status || 'task').trim().toLowerCase();
28
+ if (normalized === 'completed') {
29
+ return STATUS_DEFINITIONS.find((item) => item.value === 'done') || STATUS_DEFINITIONS[0];
30
+ }
31
+ return STATUS_DEFINITIONS.find((item) => item.value === normalized) || STATUS_DEFINITIONS[0];
32
+ }
11
33
  // Curated list of icons for categories.
12
34
  // Adding a name here automatically imports it and adds it to the list of choices in settings.
13
35
  const curatedIcons = [
@@ -18,6 +40,8 @@ const curatedIcons = [
18
40
  'Activity', 'Wrench', 'Microscope', 'Palette', 'Webhook', 'FlaskConical',
19
41
  'Bot', 'Cloud', 'Kanban', 'Infinity', 'Monitor', 'Smartphone', 'History', 'Brain', 'Calendar',
20
42
  'Play', 'Pause', 'Sparkles', 'Check', 'Ban', 'Circle', 'CheckCircle', 'Wind', 'Github',
43
+ 'Square', 'SquareCheck', 'CheckSquare',
44
+ 'Package', 'AlertCircle', 'Lightbulb', 'ScanSearch',
21
45
  // Used by built-in columns/taxonomies/defaults.
22
46
  'Inbox', 'HelpCircle', 'Gauge', 'FileCode',
23
47
  'ArrowDown', 'Minus', 'ArrowUp', 'AlertTriangle',
@@ -30,12 +54,23 @@ export const IconMap = curatedIcons.reduce((acc, name) => {
30
54
  return acc;
31
55
  }, {});
32
56
  export const AVAILABLE_ICONS = curatedIcons;
33
- export const TypeMeta = {
34
- bug: { icon: 'Bug', color: 'red-500' },
35
- feature: { icon: 'Star', color: 'teal-500' },
36
- chore: { icon: 'Zap', color: 'amber-500' },
37
- refactor: { icon: 'Code', color: 'blue-500' },
38
- documentation: { icon: 'Book', color: 'sky-500' }
57
+ export const TypeMeta = Object.fromEntries(listBuiltInTaxonomyLibraryPacks()
58
+ .flatMap((pack) => pack.types)
59
+ .filter((type) => type.icon && type.color)
60
+ .reduce((acc, type) => {
61
+ if (acc.some(([value]) => value === type.value))
62
+ return acc;
63
+ acc.push([type.value, { icon: type.icon, color: type.color }]);
64
+ return acc;
65
+ }, []));
66
+ const FILE_TYPE_COLOR_TOKENS = {
67
+ PDF: 'red-500',
68
+ DOC: 'blue-500',
69
+ DOCX: 'blue-500',
70
+ CSV: 'teal-500',
71
+ JSON: 'amber-500',
72
+ TXT: 'violet-200',
73
+ MD: 'violet-200',
39
74
  };
40
75
  // ------------------------------------------------------------------
41
76
  // Color Palette System (Token-based)
@@ -98,3 +133,25 @@ export function resolveColor(colorValue) {
98
133
  // Return as-is (legacy hex or other format)
99
134
  return colorValue;
100
135
  }
136
+ export function getTypeAccentColor(type) {
137
+ const normalized = String(type || '').trim().toLowerCase();
138
+ return resolveColor(TypeMeta[normalized]?.color) || resolveColor('violet-200') || '#9c7aeb';
139
+ }
140
+ export function getPriorityAccentColor(priority) {
141
+ switch (Number(priority)) {
142
+ case 1:
143
+ return 'var(--text-muted)';
144
+ case 2:
145
+ return 'var(--text-secondary)';
146
+ case 3:
147
+ return 'var(--priority-high)';
148
+ case 4:
149
+ return 'var(--priority-critical)';
150
+ default:
151
+ return 'var(--text-secondary)';
152
+ }
153
+ }
154
+ export function getFileTypeAccentColor(fileType) {
155
+ const normalized = String(fileType || '').trim().toUpperCase();
156
+ return resolveColor(FILE_TYPE_COLOR_TOKENS[normalized]) || 'var(--text-muted)';
157
+ }
@@ -0,0 +1,7 @@
1
+ export declare const TASKFORCE_CONTEXT_ASSETS_MUTATED_EVENT = "taskforce:context-assets-mutated";
2
+ export interface TaskforceContextAssetsMutatedDetail {
3
+ workspaceId?: string | null;
4
+ taskId?: string | null;
5
+ reason?: 'upload' | 'delete' | 'update';
6
+ }
7
+ export declare function dispatchTaskforceContextAssetsMutated(detail: TaskforceContextAssetsMutatedDetail): void;
@@ -0,0 +1,6 @@
1
+ export const TASKFORCE_CONTEXT_ASSETS_MUTATED_EVENT = 'taskforce:context-assets-mutated';
2
+ export function dispatchTaskforceContextAssetsMutated(detail) {
3
+ if (typeof window === 'undefined' || typeof window.dispatchEvent !== 'function')
4
+ return;
5
+ window.dispatchEvent(new CustomEvent(TASKFORCE_CONTEXT_ASSETS_MUTATED_EVENT, { detail }));
6
+ }
@@ -1,8 +1,19 @@
1
1
  export interface OpenMarkdownEditorDetail {
2
2
  path: string;
3
3
  fsPath: string;
4
+ assetId?: string;
4
5
  }
6
+ type MarkdownOpenTarget = string | {
7
+ path: string;
8
+ fsPath?: string;
9
+ assetId?: string;
10
+ caption?: string;
11
+ displayName?: string;
12
+ originalFilename?: string;
13
+ };
5
14
  export declare function extractContextLinkedPath(sourcePath: string): string | null;
6
- export declare function resolveContextFsPath(sourcePath: string, fsPath?: string): string | null;
7
- export declare function isMarkdownContextFile(sourcePath: string, fsPath?: string): boolean;
8
- export declare function dispatchOpenMarkdownDocument(sourcePath: string, fsPath?: string): boolean;
15
+ export declare function resolveContextFsPath(target: MarkdownOpenTarget, fsPath?: string): string | null;
16
+ export declare function resolveContextAssetId(target: MarkdownOpenTarget, assetId?: string): string | null;
17
+ export declare function isMarkdownContextFile(target: MarkdownOpenTarget, fsPath?: string): boolean;
18
+ export declare function dispatchOpenMarkdownDocument(target: MarkdownOpenTarget, fsPath?: string): boolean;
19
+ export {};
@@ -4,6 +4,21 @@ function normalizeCandidate(value) {
4
4
  function stripQueryAndHash(value) {
5
5
  return value.split('?')[0].split('#')[0];
6
6
  }
7
+ function resolveSourcePath(target) {
8
+ return typeof target === 'string' ? target : String(target.path || '').trim();
9
+ }
10
+ function extractDocumentAssetIdFromApiPath(sourcePath) {
11
+ const normalized = stripQueryAndHash(normalizeCandidate(sourcePath));
12
+ const match = normalized.match(/\/api\/taskforce\/documents\/([^/]+)\/content$/i);
13
+ if (!match?.[1])
14
+ return null;
15
+ try {
16
+ return decodeURIComponent(match[1]).trim() || null;
17
+ }
18
+ catch {
19
+ return match[1].trim() || null;
20
+ }
21
+ }
7
22
  export function extractContextLinkedPath(sourcePath) {
8
23
  if (!sourcePath.includes('/api/taskforce/context-link?path='))
9
24
  return null;
@@ -16,16 +31,30 @@ export function extractContextLinkedPath(sourcePath) {
16
31
  return null;
17
32
  }
18
33
  }
19
- export function resolveContextFsPath(sourcePath, fsPath) {
20
- const normalizedFsPath = (fsPath || '').trim();
34
+ export function resolveContextFsPath(target, fsPath) {
35
+ const normalizedFsPath = (fsPath || (typeof target === 'string' ? '' : target.fsPath || '')).trim();
21
36
  if (normalizedFsPath)
22
37
  return normalizeCandidate(normalizedFsPath);
38
+ const sourcePath = resolveSourcePath(target);
23
39
  const linkedPath = extractContextLinkedPath(sourcePath);
24
40
  return linkedPath ? normalizeCandidate(linkedPath) : null;
25
41
  }
26
- export function isMarkdownContextFile(sourcePath, fsPath) {
42
+ export function resolveContextAssetId(target, assetId) {
43
+ const explicitAssetId = String(assetId || (typeof target === 'string' ? '' : target.assetId || '')).trim();
44
+ if (explicitAssetId)
45
+ return explicitAssetId;
46
+ const sourcePath = resolveSourcePath(target);
47
+ return extractDocumentAssetIdFromApiPath(sourcePath);
48
+ }
49
+ export function isMarkdownContextFile(target, fsPath) {
50
+ const sourcePath = resolveSourcePath(target);
51
+ if (extractDocumentAssetIdFromApiPath(sourcePath))
52
+ return true;
27
53
  const candidates = [
28
- (fsPath || '').trim(),
54
+ (fsPath || (typeof target === 'string' ? '' : target.fsPath || '')).trim(),
55
+ typeof target === 'string' ? '' : String(target.originalFilename || '').trim(),
56
+ typeof target === 'string' ? '' : String(target.displayName || '').trim(),
57
+ typeof target === 'string' ? '' : String(target.caption || '').trim(),
29
58
  extractContextLinkedPath(sourcePath) || '',
30
59
  sourcePath
31
60
  ];
@@ -36,16 +65,19 @@ export function isMarkdownContextFile(sourcePath, fsPath) {
36
65
  return normalized.endsWith('.md') || normalized.endsWith('.markdown');
37
66
  });
38
67
  }
39
- export function dispatchOpenMarkdownDocument(sourcePath, fsPath) {
40
- const resolvedFsPath = resolveContextFsPath(sourcePath, fsPath);
68
+ export function dispatchOpenMarkdownDocument(target, fsPath) {
69
+ const sourcePath = resolveSourcePath(target);
70
+ const resolvedFsPath = resolveContextFsPath(target, fsPath);
41
71
  if (!resolvedFsPath)
42
72
  return false;
43
- if (!isMarkdownContextFile(sourcePath, resolvedFsPath))
73
+ if (!isMarkdownContextFile(target, resolvedFsPath))
44
74
  return false;
75
+ const assetId = resolveContextAssetId(target);
45
76
  const event = new CustomEvent('taskforce:open-markdown-document', {
46
77
  detail: {
47
78
  path: sourcePath,
48
- fsPath: resolvedFsPath
79
+ fsPath: resolvedFsPath,
80
+ ...(assetId ? { assetId } : {})
49
81
  },
50
82
  cancelable: true
51
83
  });
@@ -0,0 +1,6 @@
1
+ export declare function resolveDocumentManagerApiBase(params: {
2
+ runtimeMode: 'local' | 'cloud';
3
+ apiBaseUrl?: string;
4
+ cloudAuthBaseUrl?: string;
5
+ }): string;
6
+ export declare function logDocumentManagerDebug(event: string, details: Record<string, unknown>): void;
@@ -0,0 +1,19 @@
1
+ function normalizeBaseUrl(value) {
2
+ return typeof value === 'string' ? value.trim().replace(/\/+$/, '') : '';
3
+ }
4
+ export function resolveDocumentManagerApiBase(params) {
5
+ if (params.runtimeMode === 'local') {
6
+ return '';
7
+ }
8
+ return normalizeBaseUrl(params.apiBaseUrl) || normalizeBaseUrl(params.cloudAuthBaseUrl) || '';
9
+ }
10
+ export function logDocumentManagerDebug(event, details) {
11
+ if (!import.meta.env.DEV)
12
+ return;
13
+ try {
14
+ console.debug(`[DocumentManager] ${event}`, details);
15
+ }
16
+ catch {
17
+ // Best-effort diagnostics only.
18
+ }
19
+ }
@@ -0,0 +1,24 @@
1
+ export declare function isGeneratedDocumentName(value: string | null | undefined, assetId?: string | null): boolean;
2
+ export declare function getCanonicalDocumentName(input: {
3
+ logicalName?: string | null;
4
+ displayName?: string | null;
5
+ title?: string | null;
6
+ originalFilename?: string | null;
7
+ fsPath?: string | null;
8
+ assetId?: string | null;
9
+ }): string;
10
+ export declare function getReadableDocumentName(doc: {
11
+ logicalName?: string | null;
12
+ displayName?: string | null;
13
+ title?: string | null;
14
+ originalFilename?: string | null;
15
+ fsPath?: string | null;
16
+ assetId?: string | null;
17
+ }): string;
18
+ export declare function getDocumentDownloadName(doc: {
19
+ displayName?: string | null;
20
+ title?: string | null;
21
+ originalFilename?: string | null;
22
+ fsPath?: string | null;
23
+ assetId?: string | null;
24
+ }): string;