@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,63 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { buildDefaultFormTaxonomies, getVisibleTaskFormTaxonomies } from './taxonomyFormDefaults';
3
+ describe('taxonomy form defaults', () => {
4
+ it('builds default form values from configured taxonomy defaults', () => {
5
+ const taxonomies = [
6
+ {
7
+ id: 'review-status',
8
+ label: 'Review Status',
9
+ widgetType: 'select',
10
+ isSystem: false,
11
+ multiSelect: false,
12
+ defaultValue: 'pending',
13
+ options: [{ value: 'pending', label: 'Pending', status: 'active' }]
14
+ },
15
+ {
16
+ id: 'channels',
17
+ label: 'Channels',
18
+ widgetType: 'select',
19
+ isSystem: false,
20
+ multiSelect: true,
21
+ defaultValue: ['email', 'web'],
22
+ options: [
23
+ { value: 'email', label: 'Email', status: 'active' },
24
+ { value: 'web', label: 'Web', status: 'active' }
25
+ ]
26
+ }
27
+ ];
28
+ expect(buildDefaultFormTaxonomies(taxonomies)).toEqual({
29
+ 'review-status': 'pending',
30
+ channels: ['email', 'web']
31
+ });
32
+ });
33
+ it('shows hidden taxonomies when they are required or already selected', () => {
34
+ const taxonomies = [
35
+ {
36
+ id: 'hidden-taxonomy',
37
+ label: 'Hidden Taxonomy',
38
+ formEnabled: false,
39
+ widgetType: 'select',
40
+ isSystem: false,
41
+ multiSelect: false,
42
+ options: [{ value: 'value-a', label: 'Value A', status: 'active' }]
43
+ },
44
+ {
45
+ id: 'required-taxonomy',
46
+ label: 'Required Taxonomy',
47
+ formEnabled: false,
48
+ isRequired: true,
49
+ widgetType: 'select',
50
+ isSystem: false,
51
+ multiSelect: false,
52
+ options: [{ value: 'value-b', label: 'Value B', status: 'active' }]
53
+ }
54
+ ];
55
+ expect(getVisibleTaskFormTaxonomies(taxonomies, {})).toEqual([
56
+ expect.objectContaining({ id: 'required-taxonomy' })
57
+ ]);
58
+ expect(getVisibleTaskFormTaxonomies(taxonomies, { 'hidden-taxonomy': 'value-a' })).toEqual([
59
+ expect.objectContaining({ id: 'hidden-taxonomy' }),
60
+ expect.objectContaining({ id: 'required-taxonomy' })
61
+ ]);
62
+ });
63
+ });
@@ -0,0 +1,3 @@
1
+ import type { TaskItem, TaxonomyDefinition } from '../types';
2
+ export declare function taskUsesTaxonomy(task: TaskItem, taxonomyId: string): boolean;
3
+ export declare function getVisibleTaxonomiesForTasks(taxonomies: TaxonomyDefinition[], tasks: TaskItem[]): TaxonomyDefinition[];
@@ -0,0 +1,17 @@
1
+ export function taskUsesTaxonomy(task, taxonomyId) {
2
+ const taskValue = task.taxonomies?.[taxonomyId];
3
+ if (taskValue === undefined || taskValue === null || taskValue === '')
4
+ return false;
5
+ if (Array.isArray(taskValue)) {
6
+ return taskValue.some((value) => String(value).trim().length > 0);
7
+ }
8
+ return String(taskValue).trim().length > 0;
9
+ }
10
+ export function getVisibleTaxonomiesForTasks(taxonomies, tasks) {
11
+ const activeTaxonomies = taxonomies.filter((taxonomy) => taxonomy.status !== 'retired');
12
+ const retiredTaxonomiesInUse = taxonomies.filter((taxonomy) => (taxonomy.status === 'retired' && tasks.some((task) => taskUsesTaxonomy(task, taxonomy.id))));
13
+ return [
14
+ ...activeTaxonomies,
15
+ ...retiredTaxonomiesInUse.filter((taxonomy) => !activeTaxonomies.some((active) => active.id === taxonomy.id))
16
+ ];
17
+ }
@@ -0,0 +1,7 @@
1
+ import type { TaskItem, TaxonomyDefinition } from '../types';
2
+ export type TaskSortKey = 'created' | 'updated' | 'priority' | 'complexity' | `taxonomy:${string}`;
3
+ export declare function buildCustomTaxonomySortOptions(taxonomies: TaxonomyDefinition[], tasks?: TaskItem[]): Array<{
4
+ value: TaskSortKey;
5
+ label: string;
6
+ }>;
7
+ export declare function compareTasksBySortKey(a: TaskItem, b: TaskItem, sortBy: TaskSortKey, sortOrder: 'asc' | 'desc', taxonomies?: TaxonomyDefinition[]): number;
@@ -0,0 +1,74 @@
1
+ import { resolvePriorityValue } from './taskNormalization.js';
2
+ import { getVisibleTaxonomiesForTasks } from './taxonomyLifecycle.js';
3
+ export function buildCustomTaxonomySortOptions(taxonomies, tasks = []) {
4
+ return getVisibleTaxonomiesForTasks(taxonomies, tasks)
5
+ .filter((taxonomy) => taxonomy.sortEnabled === true)
6
+ .map((taxonomy) => ({
7
+ value: `taxonomy:${taxonomy.id}`,
8
+ label: taxonomy.status === 'retired' ? `${taxonomy.label} (Retired)` : taxonomy.label
9
+ }));
10
+ }
11
+ function getTaxonomyOptionRank(task, taxonomy) {
12
+ const taskValue = task.taxonomies?.[taxonomy.id];
13
+ if (taskValue === undefined || taskValue === null || taskValue === '')
14
+ return null;
15
+ const selectedValues = Array.isArray(taskValue)
16
+ ? taskValue.map((value) => String(value))
17
+ : [String(taskValue)];
18
+ for (let index = 0; index < taxonomy.options.length; index += 1) {
19
+ if (selectedValues.includes(String(taxonomy.options[index]?.value))) {
20
+ return index;
21
+ }
22
+ }
23
+ return null;
24
+ }
25
+ function compareCreatedAtDesc(a, b) {
26
+ return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();
27
+ }
28
+ export function compareTasksBySortKey(a, b, sortBy, sortOrder, taxonomies = []) {
29
+ let comparison = 0;
30
+ if (sortBy === 'created') {
31
+ comparison = compareCreatedAtDesc(a, b);
32
+ return sortOrder === 'desc' ? comparison : -comparison;
33
+ }
34
+ if (sortBy === 'updated') {
35
+ const aUpdated = a.updatedAt || a.createdAt;
36
+ const bUpdated = b.updatedAt || b.createdAt;
37
+ comparison = new Date(bUpdated).getTime() - new Date(aUpdated).getTime();
38
+ return sortOrder === 'desc' ? comparison : -comparison;
39
+ }
40
+ if (sortBy === 'priority') {
41
+ const weightA = resolvePriorityValue(a.priority);
42
+ const weightB = resolvePriorityValue(b.priority);
43
+ comparison = weightA !== weightB ? weightB - weightA : compareCreatedAtDesc(a, b);
44
+ return sortOrder === 'desc' ? comparison : -comparison;
45
+ }
46
+ if (sortBy === 'complexity') {
47
+ const complexityA = typeof a.complexity === 'number' ? a.complexity : 3;
48
+ const complexityB = typeof b.complexity === 'number' ? b.complexity : 3;
49
+ comparison = complexityA !== complexityB ? complexityB - complexityA : compareCreatedAtDesc(a, b);
50
+ return sortOrder === 'desc' ? comparison : -comparison;
51
+ }
52
+ if (sortBy.startsWith('taxonomy:')) {
53
+ const taxonomyId = sortBy.slice('taxonomy:'.length);
54
+ const taxonomy = taxonomies.find((candidate) => candidate.id === taxonomyId);
55
+ if (!taxonomy) {
56
+ comparison = compareCreatedAtDesc(a, b);
57
+ return sortOrder === 'desc' ? comparison : -comparison;
58
+ }
59
+ const rankA = getTaxonomyOptionRank(a, taxonomy);
60
+ const rankB = getTaxonomyOptionRank(b, taxonomy);
61
+ if (rankA === null && rankB === null)
62
+ return compareCreatedAtDesc(a, b);
63
+ if (rankA === null)
64
+ return 1;
65
+ if (rankB === null)
66
+ return -1;
67
+ if (rankA !== rankB) {
68
+ return sortOrder === 'desc' ? rankB - rankA : rankA - rankB;
69
+ }
70
+ return compareCreatedAtDesc(a, b);
71
+ }
72
+ comparison = compareCreatedAtDesc(a, b);
73
+ return sortOrder === 'desc' ? comparison : -comparison;
74
+ }
@@ -0,0 +1,15 @@
1
+ export declare const TASKFORCE_THEME_IDS: readonly ["light", "dawn", "dark", "midnight"];
2
+ export type TaskforceTheme = typeof TASKFORCE_THEME_IDS[number];
3
+ export type TaskforceThemeFamily = 'light' | 'dark';
4
+ export type TaskforceThemeIcon = 'sun' | 'wind' | 'moon' | 'sparkles';
5
+ export interface TaskforceThemeOption {
6
+ id: TaskforceTheme;
7
+ label: string;
8
+ family: TaskforceThemeFamily;
9
+ icon: TaskforceThemeIcon;
10
+ }
11
+ export declare const DEFAULT_TASKFORCE_THEME: TaskforceTheme;
12
+ export declare const TASKFORCE_THEME_OPTIONS: readonly TaskforceThemeOption[];
13
+ export declare function isTaskforceTheme(value: unknown): value is TaskforceTheme;
14
+ export declare function normalizeTaskforceTheme(value: unknown): TaskforceTheme | null;
15
+ export declare function isLightThemeFamily(theme: TaskforceTheme | string | null | undefined): boolean;
@@ -0,0 +1,23 @@
1
+ export const TASKFORCE_THEME_IDS = ['light', 'dawn', 'dark', 'midnight'];
2
+ export const DEFAULT_TASKFORCE_THEME = 'dark';
3
+ export const TASKFORCE_THEME_OPTIONS = [
4
+ { id: 'light', label: 'Light', family: 'light', icon: 'sun' },
5
+ { id: 'dawn', label: 'Dawn', family: 'light', icon: 'wind' },
6
+ { id: 'dark', label: 'Dark', family: 'dark', icon: 'moon' },
7
+ { id: 'midnight', label: 'Midnight', family: 'dark', icon: 'sparkles' },
8
+ ];
9
+ const TASKFORCE_THEME_SET = new Set(TASKFORCE_THEME_IDS);
10
+ const LIGHT_THEME_FAMILY_SET = new Set(TASKFORCE_THEME_OPTIONS.filter((option) => option.family === 'light').map((option) => option.id));
11
+ export function isTaskforceTheme(value) {
12
+ return typeof value === 'string' && TASKFORCE_THEME_SET.has(value);
13
+ }
14
+ export function normalizeTaskforceTheme(value) {
15
+ if (typeof value !== 'string')
16
+ return null;
17
+ const normalized = value.trim().toLowerCase();
18
+ return isTaskforceTheme(normalized) ? normalized : null;
19
+ }
20
+ export function isLightThemeFamily(theme) {
21
+ const normalized = normalizeTaskforceTheme(theme);
22
+ return normalized !== null && LIGHT_THEME_FAMILY_SET.has(normalized);
23
+ }
@@ -0,0 +1,7 @@
1
+ export type UiNoticeTone = 'success' | 'error' | 'info';
2
+ export interface UiNotice {
3
+ message: string;
4
+ tone: UiNoticeTone;
5
+ ttlMs?: number;
6
+ }
7
+ export declare function resolveUiNoticeTtl(tone: UiNoticeTone, ttlMs?: number): number;
@@ -0,0 +1,6 @@
1
+ export function resolveUiNoticeTtl(tone, ttlMs) {
2
+ if (typeof ttlMs === 'number' && Number.isFinite(ttlMs) && ttlMs > 0) {
3
+ return ttlMs;
4
+ }
5
+ return tone === 'error' ? 3600 : 2600;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { resolveUiNoticeTtl } from './uiNotice';
3
+ describe('resolveUiNoticeTtl', () => {
4
+ it('uses default ttl for success/info notices', () => {
5
+ expect(resolveUiNoticeTtl('success')).toBe(2600);
6
+ expect(resolveUiNoticeTtl('info')).toBe(2600);
7
+ });
8
+ it('uses default ttl for error notices', () => {
9
+ expect(resolveUiNoticeTtl('error')).toBe(3600);
10
+ });
11
+ it('accepts an explicit positive ttl', () => {
12
+ expect(resolveUiNoticeTtl('success', 1500)).toBe(1500);
13
+ });
14
+ it('ignores invalid ttl values', () => {
15
+ expect(resolveUiNoticeTtl('success', 0)).toBe(2600);
16
+ expect(resolveUiNoticeTtl('error', -1)).toBe(3600);
17
+ });
18
+ });
@@ -4,5 +4,19 @@ export declare function generateWorkspaceId(): string;
4
4
  export declare function normalizeWorkspaceStorageScope(scopeRaw?: string): string;
5
5
  export declare function normalizeWorkspaceStorageScopeLegacy(scopeRaw?: string): string;
6
6
  export declare function resolveWorkspaceStorageScopeFromProjectRoot(projectRoot?: string): string;
7
+ export declare function resolveWorkspaceSelectionScopeForRuntime(input: {
8
+ projectRoot?: string;
9
+ runtimeMode?: 'local' | 'cloud';
10
+ }): string;
11
+ export declare function resolveWorkspaceUiStateScopeForRuntime(input: {
12
+ projectRoot?: string;
13
+ runtimeMode?: 'local' | 'cloud';
14
+ workspaceId?: string;
15
+ }): string;
16
+ export declare function resolveWorkspaceStorageScopeForRuntime(input: {
17
+ projectRoot?: string;
18
+ runtimeMode?: 'local' | 'cloud';
19
+ workspaceId?: string;
20
+ }): string;
7
21
  export declare function isReservedWorkspaceId(workspaceId: string): boolean;
8
22
  export declare function isUsableWorkspaceId(workspaceId: string): boolean;
@@ -38,6 +38,27 @@ export function resolveWorkspaceStorageScopeFromProjectRoot(projectRoot) {
38
38
  return WORKSPACE_BOOTSTRAP_SCOPE;
39
39
  return normalizeWorkspaceStorageScope(raw);
40
40
  }
41
+ export function resolveWorkspaceSelectionScopeForRuntime(input) {
42
+ const runtimeMode = input.runtimeMode === 'cloud' ? 'cloud' : 'local';
43
+ if (runtimeMode === 'cloud') {
44
+ return WORKSPACE_BOOTSTRAP_SCOPE;
45
+ }
46
+ return resolveWorkspaceStorageScopeFromProjectRoot(input.projectRoot);
47
+ }
48
+ export function resolveWorkspaceUiStateScopeForRuntime(input) {
49
+ const runtimeMode = input.runtimeMode === 'cloud' ? 'cloud' : 'local';
50
+ if (runtimeMode === 'cloud') {
51
+ const workspaceId = String(input.workspaceId || '').trim();
52
+ if (workspaceId && !isReservedWorkspaceId(workspaceId)) {
53
+ return normalizeWorkspaceStorageScope(`cloud-workspace:${workspaceId}`);
54
+ }
55
+ return WORKSPACE_BOOTSTRAP_SCOPE;
56
+ }
57
+ return resolveWorkspaceStorageScopeFromProjectRoot(input.projectRoot);
58
+ }
59
+ export function resolveWorkspaceStorageScopeForRuntime(input) {
60
+ return resolveWorkspaceUiStateScopeForRuntime(input);
61
+ }
41
62
  export function isReservedWorkspaceId(workspaceId) {
42
63
  return String(workspaceId || '').trim().toLowerCase() === RESERVED_WORKSPACE_ID;
43
64
  }
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { RESERVED_WORKSPACE_ID, WORKSPACE_BOOTSTRAP_SCOPE, generateWorkspaceId, isReservedWorkspaceId, isUsableWorkspaceId, normalizeWorkspaceStorageScopeLegacy, normalizeWorkspaceStorageScope, resolveWorkspaceStorageScopeFromProjectRoot } from './workspaceIdentity';
2
+ import { RESERVED_WORKSPACE_ID, WORKSPACE_BOOTSTRAP_SCOPE, generateWorkspaceId, isReservedWorkspaceId, isUsableWorkspaceId, normalizeWorkspaceStorageScopeLegacy, normalizeWorkspaceStorageScope, resolveWorkspaceSelectionScopeForRuntime, resolveWorkspaceStorageScopeForRuntime, resolveWorkspaceUiStateScopeForRuntime, resolveWorkspaceStorageScopeFromProjectRoot } from './workspaceIdentity';
3
3
  describe('workspace identity invariants', () => {
4
4
  it('uses bootstrap scope when project root is unavailable', () => {
5
5
  expect(resolveWorkspaceStorageScopeFromProjectRoot('')).toBe(WORKSPACE_BOOTSTRAP_SCOPE);
@@ -10,6 +10,35 @@ describe('workspace identity invariants', () => {
10
10
  expect(scope.startsWith('users-ross-my-project-')).toBe(true);
11
11
  expect(scope.length).toBeGreaterThan('users-ross-my-project-'.length);
12
12
  });
13
+ it('uses workspace-specific scope for cloud workspaces', () => {
14
+ const scope = resolveWorkspaceUiStateScopeForRuntime({
15
+ runtimeMode: 'cloud',
16
+ workspaceId: 'workspace-cloud-123'
17
+ });
18
+ expect(scope.startsWith('cloud-workspace-workspace-cloud-123-')).toBe(true);
19
+ expect(scope).not.toBe(WORKSPACE_BOOTSTRAP_SCOPE);
20
+ });
21
+ it('falls back to bootstrap scope for default cloud workspace id', () => {
22
+ expect(resolveWorkspaceUiStateScopeForRuntime({
23
+ runtimeMode: 'cloud',
24
+ workspaceId: 'default'
25
+ })).toBe(WORKSPACE_BOOTSTRAP_SCOPE);
26
+ });
27
+ it('uses bootstrap scope as the stable selection scope in cloud mode', () => {
28
+ expect(resolveWorkspaceSelectionScopeForRuntime({
29
+ runtimeMode: 'cloud',
30
+ projectRoot: '/Users/ross/My Project'
31
+ })).toBe(WORKSPACE_BOOTSTRAP_SCOPE);
32
+ });
33
+ it('keeps storage-scope compatibility helper aligned with ui state scope resolution', () => {
34
+ expect(resolveWorkspaceStorageScopeForRuntime({
35
+ runtimeMode: 'cloud',
36
+ workspaceId: 'workspace-cloud-123'
37
+ })).toBe(resolveWorkspaceUiStateScopeForRuntime({
38
+ runtimeMode: 'cloud',
39
+ workspaceId: 'workspace-cloud-123'
40
+ }));
41
+ });
13
42
  it('keeps legacy scope normalization for migration fallback', () => {
14
43
  expect(normalizeWorkspaceStorageScopeLegacy('/Users/ross/My Project')).toBe('users-ross-my-project');
15
44
  });
@@ -0,0 +1,20 @@
1
+ export type HeaderWorkspaceSyncStatus = 'off' | 'syncing' | 'attention' | 'healthy';
2
+ interface ResolveHeaderWorkspaceSyncPresentationInput {
3
+ runtimeMode: 'local' | 'cloud';
4
+ isAuthenticated: boolean;
5
+ workspaceSyncStatus: HeaderWorkspaceSyncStatus;
6
+ workspaceCloudSyncEnabled: boolean;
7
+ workspaceSyncSummary: string;
8
+ workspaceSyncRecommendedAction: string;
9
+ workspaceSyncError: string;
10
+ }
11
+ export interface HeaderWorkspaceSyncPresentation {
12
+ actionable: boolean;
13
+ status: HeaderWorkspaceSyncStatus;
14
+ syncEnabledLabel: string;
15
+ summary: string;
16
+ recommendedAction: string;
17
+ lastError: string;
18
+ }
19
+ export declare function resolveHeaderWorkspaceSyncPresentation(input: ResolveHeaderWorkspaceSyncPresentationInput): HeaderWorkspaceSyncPresentation;
20
+ export {};
@@ -0,0 +1,21 @@
1
+ export function resolveHeaderWorkspaceSyncPresentation(input) {
2
+ const actionable = input.runtimeMode === 'local' && input.isAuthenticated;
3
+ if (actionable) {
4
+ return {
5
+ actionable,
6
+ status: input.workspaceSyncStatus,
7
+ syncEnabledLabel: input.workspaceCloudSyncEnabled ? 'yes' : 'no',
8
+ summary: input.workspaceSyncSummary,
9
+ recommendedAction: input.workspaceSyncRecommendedAction,
10
+ lastError: input.workspaceSyncError
11
+ };
12
+ }
13
+ return {
14
+ actionable,
15
+ status: 'off',
16
+ syncEnabledLabel: 'no',
17
+ summary: 'Sign in to enable workspace sync controls on this device.',
18
+ recommendedAction: 'Sign in to manage workspace sync for this workspace.',
19
+ lastError: 'Sign in to enable workspace sync controls on this device.'
20
+ };
21
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,36 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { resolveHeaderWorkspaceSyncPresentation } from './workspaceSyncPresentation';
3
+ describe('resolveHeaderWorkspaceSyncPresentation', () => {
4
+ it('forces the header sync badge off when the local runtime is signed out', () => {
5
+ const result = resolveHeaderWorkspaceSyncPresentation({
6
+ runtimeMode: 'local',
7
+ isAuthenticated: false,
8
+ workspaceSyncStatus: 'healthy',
9
+ workspaceCloudSyncEnabled: true,
10
+ workspaceSyncSummary: 'Sync is healthy.',
11
+ workspaceSyncRecommendedAction: 'No action needed.',
12
+ workspaceSyncError: 'None'
13
+ });
14
+ expect(result.actionable).toBe(false);
15
+ expect(result.status).toBe('off');
16
+ expect(result.syncEnabledLabel).toBe('no');
17
+ expect(result.summary).toContain('Sign in');
18
+ expect(result.recommendedAction).toContain('Sign in');
19
+ });
20
+ it('keeps the current sync status when sync is actionable', () => {
21
+ const result = resolveHeaderWorkspaceSyncPresentation({
22
+ runtimeMode: 'local',
23
+ isAuthenticated: true,
24
+ workspaceSyncStatus: 'attention',
25
+ workspaceCloudSyncEnabled: true,
26
+ workspaceSyncSummary: 'Sync needs attention before it can continue.',
27
+ workspaceSyncRecommendedAction: 'Press Sync to retry.',
28
+ workspaceSyncError: 'Retry later'
29
+ });
30
+ expect(result.actionable).toBe(true);
31
+ expect(result.status).toBe('attention');
32
+ expect(result.syncEnabledLabel).toBe('yes');
33
+ expect(result.summary).toBe('Sync needs attention before it can continue.');
34
+ expect(result.lastError).toBe('Retry later');
35
+ });
36
+ });
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@taskforcehq/taskforce",
3
- "version": "0.3.170",
3
+ "version": "0.3.300",
4
4
  "description": "Mission Command center for AI-powered task management (beta - under active development)",
5
- "author": "Stratnexus <hello@stratnexus.ai> (https://stratnexus.ai)",
5
+ "author": "Taskforce HQ <hello@taskforcehq.ai> (https://taskforcehq.ai)",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/Stratnexus/taskforce.git"
9
+ "url": "git+https://github.com/taskforcehq/taskforce.git"
10
10
  },
11
- "homepage": "https://github.com/Stratnexus/taskforce#readme",
11
+ "homepage": "https://github.com/taskforcehq/taskforce#readme",
12
12
  "bugs": {
13
- "url": "https://github.com/Stratnexus/taskforce/issues"
13
+ "url": "https://github.com/taskforcehq/taskforce/issues"
14
14
  },
15
15
  "publishConfig": {
16
16
  "access": "restricted",
@@ -33,26 +33,26 @@
33
33
  "./plugins": "./dist/plugins/index.js"
34
34
  },
35
35
  "scripts": {
36
- "dev": "sh scripts/run-dev-proxy.sh performance",
36
+ "dev": "concurrently \"sh scripts/run-dev-proxy.sh performance\" \"TASKFORCE_CLOUD_ENVIRONMENT=performance npm run dev:site\" \"npm run dev:admin\"",
37
37
  "perf": "sh scripts/run-dev-proxy.sh performance",
38
38
  "stage": "sh scripts/run-dev-proxy.sh staging",
39
- "performance": "npm run perf",
40
- "staging": "npm run stage",
41
- "prod": "VITE_TASKFORCE_BASE_URL=https://app.taskforcehq.ai npm run dev:runtime",
42
- "dev:runtime": "concurrently \"npm run dev:app\" \"TASKFORCE_GIT_BACKUP=true node --import tsx src/cli.ts open 5174\"",
43
- "stage:direct": "VITE_TASKFORCE_BASE_URL=https://staging-app.taskforcehq.ai npm run dev:runtime",
44
- "perf:direct": "VITE_TASKFORCE_BASE_URL=https://performance-app.taskforcehq.ai npm run dev:runtime",
45
- "dev:setup:force": "concurrently \"npm run dev:app\" \"TASKFORCE_GIT_BACKUP=true TASKFORCE_FORCE_SETUP=true node --import tsx src/cli.ts open 5175\"",
46
- "dev:setup:force-global": "concurrently \"npm run dev:app\" \"TASKFORCE_GIT_BACKUP=true TASKFORCE_FORCE_GLOBAL_SETUP=true node --import tsx src/cli.ts open 5176\"",
47
- "dev:setup:force-workspace": "concurrently \"npm run dev:app\" \"TASKFORCE_GIT_BACKUP=true TASKFORCE_FORCE_WORKSPACE_SETUP=true node --import tsx src/cli.ts open 5177\"",
48
- "dev:app": "vite build --config vite.config.standalone.ts --watch",
49
- "dev:site": "vite --config vite.config.site.ts --port 4173",
50
- "dev:admin": "vite --config vite.config.admin.ts --port 5181",
39
+ "prod": "TASKFORCE_RUNTIME_MODE=local TASKFORCE_CLOUD_ENVIRONMENT=production TASKFORCE_CLOUD_PROXY_BASE_URL=https://app.taskforcehq.ai VITE_TASKFORCE_BASE_URL=https://app.taskforcehq.ai npm run dev:runtime",
40
+ "dev:runtime": "concurrently \"npm run dev:app\" \"TASKFORCE_RUNTIME_MODE=local sh scripts/with-esbuild.sh node --import tsx src/cli.ts open 5174\"",
41
+ "stage:direct": "TASKFORCE_RUNTIME_MODE=local TASKFORCE_CLOUD_ENVIRONMENT=staging TASKFORCE_CLOUD_PROXY_BASE_URL=https://staging-app.taskforcehq.ai VITE_TASKFORCE_BASE_URL=https://staging-app.taskforcehq.ai npm run dev:runtime",
42
+ "perf:direct": "TASKFORCE_RUNTIME_MODE=local TASKFORCE_CLOUD_ENVIRONMENT=performance TASKFORCE_CLOUD_PROXY_BASE_URL=https://performance-app.taskforcehq.ai VITE_TASKFORCE_BASE_URL=https://performance-app.taskforcehq.ai npm run dev:runtime",
43
+ "dev:setup:force": "concurrently \"npm run dev:app\" \"TASKFORCE_RUNTIME_MODE=local TASKFORCE_CLOUD_ENVIRONMENT=production TASKFORCE_FORCE_SETUP=true node --import tsx src/cli.ts open 5175\"",
44
+ "dev:setup:force-global": "concurrently \"npm run dev:app\" \"TASKFORCE_RUNTIME_MODE=local TASKFORCE_CLOUD_ENVIRONMENT=production TASKFORCE_FORCE_GLOBAL_SETUP=true node --import tsx src/cli.ts open 5176\"",
45
+ "dev:setup:force-workspace": "concurrently \"npm run dev:app\" \"TASKFORCE_RUNTIME_MODE=local TASKFORCE_CLOUD_ENVIRONMENT=production TASKFORCE_FORCE_WORKSPACE_SETUP=true node --import tsx src/cli.ts open 5177\"",
46
+ "dev:app": "sh scripts/with-esbuild.sh vite build --config vite.config.standalone.ts --watch",
47
+ "dev:site": "sh scripts/with-esbuild.sh vite --config vite.config.site.ts --port 4173",
48
+ "dev:admin": "sh scripts/with-esbuild.sh vite --config vite.config.admin.ts --port 5181",
51
49
  "build:site": "vite build --config vite.config.site.ts",
52
50
  "build:admin": "vite build --config vite.config.admin.ts",
53
51
  "build:app": "vite build --config vite.config.standalone.ts",
54
52
  "build:ui": "npm run build:app",
55
- "build": "npm run gen:workflows && shx rm -rf dist && tsc && shx cp src/Taskforce.module.css dist/Taskforce.module.css && shx mkdir -p dist/resources && shx cp -r src/resources/* dist/resources/ && shx rm -f dist/resources/templates/workflows/release.yaml && shx mkdir -p dist/public && shx cp -r src/assets/images/* dist/public/ && shx cp -r src/assets/favicon/* dist/public/ && shx chmod +x dist/cli.js && npm run build:ui",
53
+ "check:deploy-preflight": "npm run build",
54
+ "hooks:install": "git config core.hooksPath .githooks",
55
+ "build": "shx rm -rf dist && tsc && shx cp src/Taskforce.module.css dist/Taskforce.module.css && shx mkdir -p dist/resources && shx cp -r src/resources/* dist/resources/ && shx rm -f dist/resources/templates/workflows/release.yaml && shx mkdir -p dist/public && shx cp -r src/assets/images/* dist/public/ && shx cp -r src/assets/favicon/* dist/public/ && shx chmod +x dist/cli.js && npm run build:ui",
56
56
  "mcp": "node dist/mcp/server.js",
57
57
  "gen:workflows": "node scripts/generate-workflow-templates.mjs",
58
58
  "check:workflows": "node scripts/generate-workflow-templates.mjs --check",
@@ -64,23 +64,28 @@
64
64
  "check:runtime-boundaries": "node scripts/check-runtime-boundaries.mjs",
65
65
  "test:workflow-readiness": "npm run check:workflows && vitest src/__tests__/workflowSimulation.test.ts src/__tests__/workflowExportMatrix.test.ts src/__tests__/workflowExportSnapshots.test.ts src/__tests__/workflowDocumentFixtures.test.ts src/__tests__/structuredCommentValidation.test.ts src/__tests__/structuredDocValidation.test.ts src/__tests__/workflowV2Policy.test.ts src/__tests__/workflowGeneration.test.ts src/__tests__/templates.test.ts",
66
66
  "test": "vitest",
67
+ "test:ci": "vitest run --maxWorkers=1",
67
68
  "test:soak": "sh scripts/run-soak.sh",
68
69
  "test:soak:smoke": "SYNC_SOAK_PROFILE=smoke sh scripts/run-soak.sh",
69
70
  "test:soak:stress": "SYNC_SOAK_PROFILE=stress sh scripts/run-soak.sh",
70
71
  "test:soak:overnight": "SYNC_SOAK_PROFILE=overnight sh scripts/run-soak.sh",
71
72
  "test:e2e:realtime": "sh scripts/run-e2e-realtime.sh",
73
+ "test:e2e:realtime:release": "npm run test:e2e:realtime -- tests/e2e/attachment-sync.spec.ts tests/e2e/realtime-multiclient.spec.ts tests/e2e/realtime-reconnect.spec.ts",
74
+ "test:e2e:realtime:attachments": "npm run test:e2e:realtime -- tests/e2e/attachment-sync.spec.ts",
72
75
  "test:e2e:realtime:multiclient": "npm run test:e2e:realtime -- tests/e2e/realtime-multiclient.spec.ts",
73
76
  "test:e2e:realtime:reconnect": "npm run test:e2e:realtime -- tests/e2e/realtime-reconnect.spec.ts",
77
+ "playwright:auth:bootstrap": "node scripts/bootstrap-playwright-auth.mjs",
78
+ "playwright:auth": "sh scripts/playwright-auth.sh",
74
79
  "check:env": "node --import tsx scripts/check-env.ts --target=server --strict=true",
75
80
  "check:env:soak": "node --import tsx scripts/check-env.ts --target=soak --strict=true",
81
+ "check:compat": "node scripts/check-compat-boundaries.mjs",
76
82
  "gen:env-example": "node --import tsx scripts/generate-env-example.ts",
77
83
  "check:sync-smoke-preflight": "node --import tsx src/soak/preflight.cli.ts",
78
- "check:compat": "node scripts/check-compat-boundaries.js",
79
- "test:migration-gate": "npx tsc --noEmit && npm run check:compat && npx vitest run src/hooks/useTaskforce.priority-filters.test.ts src/TaskforceCore.test.tsx",
80
84
  "test:auth-runtime-guard": "npx vitest run src/shared/runtimeContract.test.ts src/server/index.cookieProxy.test.ts src/server/routes.test.ts src/TaskforceCore.test.tsx",
81
- "test:global": "node scripts/test-global.js",
85
+ "test:migration-gate": "npm run check:compat && npx vitest run src/config/deployment.test.ts",
86
+ "install:global": "node scripts/test-global.js",
82
87
  "prepublishOnly": "npm run build",
83
- "postinstall": "node scripts/postinstall.js"
88
+ "postinstall": "node scripts/postinstall.js || true"
84
89
  },
85
90
  "peerDependencies": {
86
91
  "react": ">=18.0.0",