@taskforcehq/taskforce 0.3.309 → 0.3.313

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/README.md +89 -127
  2. package/dist/TaskforceCore.js +1 -1
  3. package/dist/components/context/ContextAttachmentManager.js +4 -3
  4. package/dist/components/features/InitiativesModule.js +1 -1
  5. package/dist/components/features/TaskSettings.js +1 -1
  6. package/dist/components/ui/DisclosureSectionHeader.d.ts +12 -0
  7. package/dist/components/ui/DisclosureSectionHeader.js +8 -0
  8. package/dist/components/views/PlanComparisonPage.js +1 -1
  9. package/dist/components/views/StandaloneLayout.js +18 -4
  10. package/dist/components/views/panels/PlanningDrawer.js +2 -1
  11. package/dist/components/views/standalone/modals/AccountHubModal.js +1 -1
  12. package/dist/components/views/standalone/modals/HelpModal.d.ts +3 -1
  13. package/dist/components/views/standalone/modals/HelpModal.js +17 -2
  14. package/dist/core/PlanEntitlementService.d.ts +2 -0
  15. package/dist/core/PlanEntitlementService.js +57 -4
  16. package/dist/hooks/useFilterSort.js +1 -1
  17. package/dist/hooks/useTaskforce.js +2 -2
  18. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +5 -2
  19. package/dist/localization/locales/en-US.js +1 -1
  20. package/dist/localization/locales/es-419.js +1 -1
  21. package/dist/localization/locales/pt-BR.js +1 -1
  22. package/dist/mcp/runtime.js +49 -14
  23. package/dist/server/routes/billing.js +0 -1
  24. package/dist/ui/assets/AgentsModule-BULqIo8e.js +1 -0
  25. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-CCckzWYZ.js → AnnotatedAttachmentWorkspace-DHr4rHK9.js} +1 -1
  26. package/dist/ui/assets/ContextAttachmentManager-DoMe2OpY.js +3 -0
  27. package/dist/ui/assets/{DocumentWorkspace-BVaWPA25.js → DocumentWorkspace-DumBWhvb.js} +1 -1
  28. package/dist/ui/assets/{EntityActivityTimeline-DSj0ThaK.js → EntityActivityTimeline-sHk8Nzbq.js} +1 -1
  29. package/dist/ui/assets/{InitiativesModule-AxMkWtxH.js → InitiativesModule-3X9UNzHh.js} +1 -1
  30. package/dist/ui/assets/PlansPage-C3A3EYaV.js +1 -0
  31. package/dist/ui/assets/PlansPage-DeAzWYTb.css +1 -0
  32. package/dist/ui/assets/{TaskContextUpload-Dw4rTF4i.js → TaskContextUpload-C8G7pWkX.js} +1 -1
  33. package/dist/ui/assets/{TaskSettings-f2ga42_V.js → TaskSettings-DM1o9Wla.js} +2 -2
  34. package/dist/ui/assets/{WorkflowsModule-E4UL3mov.js → WorkflowsModule-CW0crzvD.js} +1 -1
  35. package/dist/ui/assets/documentReferences-BZB3nMRb.js +1 -0
  36. package/dist/ui/assets/index-BWFQ9mGn.js +5 -0
  37. package/dist/ui/assets/{index-BvAbqx5Q.css → index-DcK_8tuE.css} +1 -1
  38. package/dist/ui/assets/{vendor-icons-B32hGuF2.js → vendor-icons-CLnehDTw.js} +1 -1
  39. package/dist/ui/index.html +3 -3
  40. package/dist/utils/supportContact.d.ts +9 -0
  41. package/dist/utils/supportContact.js +32 -0
  42. package/package.json +12 -4
  43. package/scripts/postinstall.js +4 -3
  44. package/dist/TaskforceCore.CategoryFallback.test.d.ts +0 -1
  45. package/dist/TaskforceCore.CategoryFallback.test.js +0 -101
  46. package/dist/TaskforceCore.filter-persistence.test.d.ts +0 -1
  47. package/dist/TaskforceCore.filter-persistence.test.js +0 -402
  48. package/dist/TaskforceCore.routing.test.d.ts +0 -1
  49. package/dist/TaskforceCore.routing.test.js +0 -311
  50. package/dist/TaskforceCore.test.d.ts +0 -1
  51. package/dist/TaskforceCore.test.js +0 -7910
  52. package/dist/TaskforceWidget.test.d.ts +0 -1
  53. package/dist/TaskforceWidget.test.js +0 -92
  54. package/dist/UnsavedChangesRelaxed.test.d.ts +0 -1
  55. package/dist/UnsavedChangesRelaxed.test.js +0 -16
  56. package/dist/__tests__/localizationCatalogs.test.d.ts +0 -1
  57. package/dist/__tests__/localizationCatalogs.test.js +0 -54
  58. package/dist/__tests__/workflowSimulation.test.d.ts +0 -1
  59. package/dist/__tests__/workflowSimulation.test.js +0 -113
  60. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.d.ts +0 -1
  61. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.js +0 -278
  62. package/dist/annotatedAttachments/payload.test.d.ts +0 -1
  63. package/dist/annotatedAttachments/payload.test.js +0 -67
  64. package/dist/compat/workspaceSyncCompat.test.d.ts +0 -1
  65. package/dist/compat/workspaceSyncCompat.test.js +0 -124
  66. package/dist/components/features/AgentsModule.test.d.ts +0 -1
  67. package/dist/components/features/AgentsModule.test.js +0 -601
  68. package/dist/components/features/AnnotatedAttachmentWorkspace.test.d.ts +0 -1
  69. package/dist/components/features/AnnotatedAttachmentWorkspace.test.js +0 -2883
  70. package/dist/components/features/DocumentWorkspace.test.d.ts +0 -1
  71. package/dist/components/features/DocumentWorkspace.test.js +0 -1439
  72. package/dist/components/features/TaskSettings.test.d.ts +0 -1
  73. package/dist/components/features/TaskSettings.test.js +0 -1674
  74. package/dist/components/features/settings/TaxonomyLibraryManager.test.d.ts +0 -1
  75. package/dist/components/features/settings/TaxonomyLibraryManager.test.js +0 -141
  76. package/dist/components/task/TaskActionHeader.test.d.ts +0 -1
  77. package/dist/components/task/TaskActionHeader.test.js +0 -91
  78. package/dist/components/task/TaskCard.test.d.ts +0 -1
  79. package/dist/components/task/TaskCard.test.js +0 -513
  80. package/dist/components/task/TaskContextUpload.test.d.ts +0 -1
  81. package/dist/components/task/TaskContextUpload.test.js +0 -506
  82. package/dist/components/task/TaskForm.test.d.ts +0 -1
  83. package/dist/components/task/TaskForm.test.js +0 -946
  84. package/dist/components/task/TaskKanban.empty-column-drop.test.d.ts +0 -1
  85. package/dist/components/task/TaskKanban.empty-column-drop.test.js +0 -66
  86. package/dist/components/task/TaskKanban.planning-drop.test.d.ts +0 -1
  87. package/dist/components/task/TaskKanban.planning-drop.test.js +0 -93
  88. package/dist/components/task/TaskKanban.test.d.ts +0 -1
  89. package/dist/components/task/TaskKanban.test.js +0 -99
  90. package/dist/components/task/TaskList.test.d.ts +0 -1
  91. package/dist/components/task/TaskList.test.js +0 -473
  92. package/dist/components/task/TaskStatusActions.test.d.ts +0 -1
  93. package/dist/components/task/TaskStatusActions.test.js +0 -54
  94. package/dist/components/task/taskKanbanDropRules.test.d.ts +0 -1
  95. package/dist/components/task/taskKanbanDropRules.test.js +0 -114
  96. package/dist/components/ui/LevelSelector.test.d.ts +0 -1
  97. package/dist/components/ui/LevelSelector.test.js +0 -55
  98. package/dist/components/ui/Markdown.test.d.ts +0 -1
  99. package/dist/components/ui/Markdown.test.js +0 -38
  100. package/dist/components/ui/MultiSelectFilter.test.d.ts +0 -1
  101. package/dist/components/ui/MultiSelectFilter.test.js +0 -74
  102. package/dist/components/ui/TaxonomyDropdown.test.d.ts +0 -1
  103. package/dist/components/ui/TaxonomyDropdown.test.js +0 -130
  104. package/dist/components/ui/TopNoticeLayer.test.d.ts +0 -1
  105. package/dist/components/ui/TopNoticeLayer.test.js +0 -25
  106. package/dist/components/views/AppShellHeader.test.d.ts +0 -1
  107. package/dist/components/views/AppShellHeader.test.js +0 -42
  108. package/dist/components/views/PlanComparisonPage.test.d.ts +0 -1
  109. package/dist/components/views/PlanComparisonPage.test.js +0 -757
  110. package/dist/components/views/PlansPage.test.d.ts +0 -1
  111. package/dist/components/views/PlansPage.test.js +0 -710
  112. package/dist/components/views/chrome/WorkspaceChromeSections.test.d.ts +0 -1
  113. package/dist/components/views/chrome/WorkspaceChromeSections.test.js +0 -54
  114. package/dist/components/views/chrome/workspaceChrome.test.d.ts +0 -1
  115. package/dist/components/views/chrome/workspaceChrome.test.js +0 -52
  116. package/dist/components/views/panels/DocumentFilterToolbar.test.d.ts +0 -1
  117. package/dist/components/views/panels/DocumentFilterToolbar.test.js +0 -19
  118. package/dist/components/views/panels/FilterToolbar.test.d.ts +0 -1
  119. package/dist/components/views/panels/FilterToolbar.test.js +0 -47
  120. package/dist/components/views/panels/PlanningDrawer.test.d.ts +0 -1
  121. package/dist/components/views/panels/PlanningDrawer.test.js +0 -529
  122. package/dist/components/views/planningScope.test.d.ts +0 -1
  123. package/dist/components/views/planningScope.test.js +0 -60
  124. package/dist/components/views/standalone/modals/AccountHubModal.test.d.ts +0 -1
  125. package/dist/components/views/standalone/modals/AccountHubModal.test.js +0 -66
  126. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.d.ts +0 -1
  127. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.js +0 -24
  128. package/dist/components/views/teamManagementAccess.test.d.ts +0 -1
  129. package/dist/components/views/teamManagementAccess.test.js +0 -44
  130. package/dist/config/deployment.test.d.ts +0 -1
  131. package/dist/config/deployment.test.js +0 -90
  132. package/dist/config/envSchema.test.d.ts +0 -1
  133. package/dist/config/envSchema.test.js +0 -125
  134. package/dist/core/AiProfileService.test.d.ts +0 -1
  135. package/dist/core/AiProfileService.test.js +0 -184
  136. package/dist/core/AiProfiles.test.d.ts +0 -1
  137. package/dist/core/AiProfiles.test.js +0 -1873
  138. package/dist/core/AuthTokenService.test.d.ts +0 -1
  139. package/dist/core/AuthTokenService.test.js +0 -78
  140. package/dist/core/BulkUpdateFieldsPreview.test.d.ts +0 -1
  141. package/dist/core/BulkUpdateFieldsPreview.test.js +0 -62
  142. package/dist/core/CompletedAt.test.d.ts +0 -1
  143. package/dist/core/CompletedAt.test.js +0 -44
  144. package/dist/core/CreatedBy.test.d.ts +0 -1
  145. package/dist/core/CreatedBy.test.js +0 -188
  146. package/dist/core/DeletedTaskTrash.test.d.ts +0 -1
  147. package/dist/core/DeletedTaskTrash.test.js +0 -104
  148. package/dist/core/EntitlementsPolicy.test.d.ts +0 -1
  149. package/dist/core/EntitlementsPolicy.test.js +0 -280
  150. package/dist/core/GlobalSettingsService.test.d.ts +0 -1
  151. package/dist/core/GlobalSettingsService.test.js +0 -45
  152. package/dist/core/JsonBackupRuntime.test.d.ts +0 -1
  153. package/dist/core/JsonBackupRuntime.test.js +0 -155
  154. package/dist/core/PlanFeatureCatalog.test.d.ts +0 -1
  155. package/dist/core/PlanFeatureCatalog.test.js +0 -139
  156. package/dist/core/PlanVersionPolicy.test.d.ts +0 -1
  157. package/dist/core/PlanVersionPolicy.test.js +0 -204
  158. package/dist/core/PlanningEntities.test.d.ts +0 -1
  159. package/dist/core/PlanningEntities.test.js +0 -509
  160. package/dist/core/ScheduleFields.test.d.ts +0 -1
  161. package/dist/core/ScheduleFields.test.js +0 -193
  162. package/dist/core/SetupState.test.d.ts +0 -1
  163. package/dist/core/SetupState.test.js +0 -113
  164. package/dist/core/SignupMonetizationSettings.test.d.ts +0 -1
  165. package/dist/core/SignupMonetizationSettings.test.js +0 -515
  166. package/dist/core/Stats.test.d.ts +0 -1
  167. package/dist/core/Stats.test.js +0 -36
  168. package/dist/core/SystemAdmin.test.d.ts +0 -1
  169. package/dist/core/SystemAdmin.test.js +0 -1106
  170. package/dist/core/TaskActivitySync.test.d.ts +0 -1
  171. package/dist/core/TaskActivitySync.test.js +0 -90
  172. package/dist/core/TaskAttachmentsCanonical.test.d.ts +0 -1
  173. package/dist/core/TaskAttachmentsCanonical.test.js +0 -356
  174. package/dist/core/TaskAuditTimeline.test.d.ts +0 -1
  175. package/dist/core/TaskAuditTimeline.test.js +0 -319
  176. package/dist/core/TaskTaxonomyValidation.test.d.ts +0 -1
  177. package/dist/core/TaskTaxonomyValidation.test.js +0 -440
  178. package/dist/core/Taskforce.ids.test.d.ts +0 -1
  179. package/dist/core/Taskforce.ids.test.js +0 -611
  180. package/dist/core/Taskforce.listTasksSlim.test.d.ts +0 -1
  181. package/dist/core/Taskforce.listTasksSlim.test.js +0 -91
  182. package/dist/core/Taskforce.mcpAuth.test.d.ts +0 -1
  183. package/dist/core/Taskforce.mcpAuth.test.js +0 -450
  184. package/dist/core/Taskforce.realtimeMutation.test.d.ts +0 -1
  185. package/dist/core/Taskforce.realtimeMutation.test.js +0 -131
  186. package/dist/core/UserProfileAvatarDrafts.test.d.ts +0 -1
  187. package/dist/core/UserProfileAvatarDrafts.test.js +0 -138
  188. package/dist/core/WorkspaceDelete.test.d.ts +0 -1
  189. package/dist/core/WorkspaceDelete.test.js +0 -159
  190. package/dist/core/WorkspacePermissions.test.d.ts +0 -1
  191. package/dist/core/WorkspacePermissions.test.js +0 -270
  192. package/dist/core/WorkspacePlanMode.test.d.ts +0 -1
  193. package/dist/core/WorkspacePlanMode.test.js +0 -383
  194. package/dist/core/WorkspaceSyncSettings.test.d.ts +0 -1
  195. package/dist/core/WorkspaceSyncSettings.test.js +0 -65
  196. package/dist/core/__tests__/TaskAttachmentsCanonical.test.d.ts +0 -1
  197. package/dist/core/__tests__/TaskAttachmentsCanonical.test.js +0 -212
  198. package/dist/documentReviews/DocumentReviewSessionStore.test.d.ts +0 -1
  199. package/dist/documentReviews/DocumentReviewSessionStore.test.js +0 -127
  200. package/dist/hooks/authGuardPolicy.test.d.ts +0 -1
  201. package/dist/hooks/authGuardPolicy.test.js +0 -76
  202. package/dist/hooks/bootstrapTimeouts.test.d.ts +0 -1
  203. package/dist/hooks/bootstrapTimeouts.test.js +0 -12
  204. package/dist/hooks/sync/controlPlane.test.d.ts +0 -1
  205. package/dist/hooks/sync/controlPlane.test.js +0 -121
  206. package/dist/hooks/sync/lifecyclePolicy.test.d.ts +0 -1
  207. package/dist/hooks/sync/lifecyclePolicy.test.js +0 -124
  208. package/dist/hooks/sync/orchestratorShared.test.d.ts +0 -1
  209. package/dist/hooks/sync/orchestratorShared.test.js +0 -98
  210. package/dist/hooks/sync/pullLifecycle.test.d.ts +0 -1
  211. package/dist/hooks/sync/pullLifecycle.test.js +0 -80
  212. package/dist/hooks/sync/recovery.test.d.ts +0 -1
  213. package/dist/hooks/sync/recovery.test.js +0 -292
  214. package/dist/hooks/sync/transfers.test.d.ts +0 -1
  215. package/dist/hooks/sync/transfers.test.js +0 -928
  216. package/dist/hooks/sync/useRecentSyncEvents.test.d.ts +0 -1
  217. package/dist/hooks/sync/useRecentSyncEvents.test.js +0 -124
  218. package/dist/hooks/sync/useSyncStatusActions.test.d.ts +0 -1
  219. package/dist/hooks/sync/useSyncStatusActions.test.js +0 -133
  220. package/dist/hooks/sync/useSyncStatusControls.test.d.ts +0 -1
  221. package/dist/hooks/sync/useSyncStatusControls.test.js +0 -88
  222. package/dist/hooks/useFilterSort.test.d.ts +0 -1
  223. package/dist/hooks/useFilterSort.test.js +0 -419
  224. package/dist/hooks/useRealtimeSync.test.d.ts +0 -1
  225. package/dist/hooks/useRealtimeSync.test.js +0 -311
  226. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.d.ts +0 -1
  227. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.js +0 -54
  228. package/dist/hooks/useSyncOrchestrator.context-assets.test.d.ts +0 -1
  229. package/dist/hooks/useSyncOrchestrator.context-assets.test.js +0 -228
  230. package/dist/hooks/useSyncOrchestrator.retry-closure.test.d.ts +0 -1
  231. package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +0 -2027
  232. package/dist/hooks/useTaskData.test.d.ts +0 -1
  233. package/dist/hooks/useTaskData.test.js +0 -291
  234. package/dist/hooks/useTaskMutations.test.d.ts +0 -1
  235. package/dist/hooks/useTaskMutations.test.js +0 -256
  236. package/dist/hooks/useTaskforce.contract.test.d.ts +0 -1
  237. package/dist/hooks/useTaskforce.contract.test.js +0 -7
  238. package/dist/hooks/useTaskforce.priority-filters.test.d.ts +0 -1
  239. package/dist/hooks/useTaskforce.priority-filters.test.js +0 -28
  240. package/dist/hooks/useTaskforce.runtime-routing.test.d.ts +0 -1
  241. package/dist/hooks/useTaskforce.runtime-routing.test.js +0 -246
  242. package/dist/hooks/useTaskforce.sync-behavior.test.d.ts +0 -1
  243. package/dist/hooks/useTaskforce.sync-behavior.test.js +0 -3644
  244. package/dist/hooks/useWorkspaceSyncController.test.d.ts +0 -1
  245. package/dist/hooks/useWorkspaceSyncController.test.js +0 -192
  246. package/dist/hooks/workspace/useTaskforceApiRouting.test.d.ts +0 -1
  247. package/dist/hooks/workspace/useTaskforceApiRouting.test.js +0 -77
  248. package/dist/hooks/workspace/workspaceLocalState.test.d.ts +0 -1
  249. package/dist/hooks/workspace/workspaceLocalState.test.js +0 -59
  250. package/dist/localization/localizationCatalogs.test.d.ts +0 -1
  251. package/dist/localization/localizationCatalogs.test.js +0 -37
  252. package/dist/mcp/aiProfileBootstrap.test.d.ts +0 -1
  253. package/dist/mcp/aiProfileBootstrap.test.js +0 -68
  254. package/dist/mcp/canonicalAssetHelpers.test.d.ts +0 -1
  255. package/dist/mcp/canonicalAssetHelpers.test.js +0 -67
  256. package/dist/mcp/clientIntegrations.test.d.ts +0 -1
  257. package/dist/mcp/clientIntegrations.test.js +0 -219
  258. package/dist/mcp/optionResolution.test.d.ts +0 -1
  259. package/dist/mcp/optionResolution.test.js +0 -43
  260. package/dist/mcp/runtime.test.d.ts +0 -1
  261. package/dist/mcp/runtime.test.js +0 -5120
  262. package/dist/mcp/structuredCommentValidation.test.d.ts +0 -1
  263. package/dist/mcp/structuredCommentValidation.test.js +0 -31
  264. package/dist/mcp/structuredDocValidation.test.d.ts +0 -1
  265. package/dist/mcp/structuredDocValidation.test.js +0 -35
  266. package/dist/mcp/toolRegistry.test.d.ts +0 -1
  267. package/dist/mcp/toolRegistry.test.js +0 -34
  268. package/dist/migrations/billingSchemaParity.test.d.ts +0 -1
  269. package/dist/migrations/billingSchemaParity.test.js +0 -160
  270. package/dist/migrations/taskSchemaMigrations.test.d.ts +0 -1
  271. package/dist/migrations/taskSchemaMigrations.test.js +0 -225
  272. package/dist/qaOpen.test.d.ts +0 -1
  273. package/dist/qaOpen.test.js +0 -56
  274. package/dist/releaseVersion.test.d.ts +0 -1
  275. package/dist/releaseVersion.test.js +0 -32
  276. package/dist/runtime/appGates.test.d.ts +0 -1
  277. package/dist/runtime/appGates.test.js +0 -42
  278. package/dist/server/aiProfileAvatarAssets.test.d.ts +0 -1
  279. package/dist/server/aiProfileAvatarAssets.test.js +0 -213
  280. package/dist/server/annotatedAttachmentsRoutes.test.d.ts +0 -1
  281. package/dist/server/annotatedAttachmentsRoutes.test.js +0 -532
  282. package/dist/server/auth.test.d.ts +0 -1
  283. package/dist/server/auth.test.js +0 -131
  284. package/dist/server/buildInfo.test.d.ts +0 -1
  285. package/dist/server/buildInfo.test.js +0 -29
  286. package/dist/server/cors.test.d.ts +0 -1
  287. package/dist/server/cors.test.js +0 -77
  288. package/dist/server/documentReviewRoutes.test.d.ts +0 -1
  289. package/dist/server/documentReviewRoutes.test.js +0 -190
  290. package/dist/server/email.test.d.ts +0 -1
  291. package/dist/server/email.test.js +0 -113
  292. package/dist/server/index.cookieProxy.test.d.ts +0 -1
  293. package/dist/server/index.cookieProxy.test.js +0 -67
  294. package/dist/server/index.rateLimit.test.d.ts +0 -1
  295. package/dist/server/index.rateLimit.test.js +0 -22
  296. package/dist/server/index.test.d.ts +0 -1
  297. package/dist/server/index.test.js +0 -283
  298. package/dist/server/rateLimit.test.d.ts +0 -1
  299. package/dist/server/rateLimit.test.js +0 -107
  300. package/dist/server/realtimeSync.auth.test.d.ts +0 -1
  301. package/dist/server/realtimeSync.auth.test.js +0 -62
  302. package/dist/server/realtimeSync.replay.test.d.ts +0 -1
  303. package/dist/server/realtimeSync.replay.test.js +0 -192
  304. package/dist/server/realtimeSync.workspaceIsolation.test.d.ts +0 -1
  305. package/dist/server/realtimeSync.workspaceIsolation.test.js +0 -101
  306. package/dist/server/routes/billing.test.d.ts +0 -1
  307. package/dist/server/routes/billing.test.js +0 -3455
  308. package/dist/server/routes/shared.test.d.ts +0 -1
  309. package/dist/server/routes/shared.test.js +0 -32
  310. package/dist/server/routes/sync.integration.test.d.ts +0 -1
  311. package/dist/server/routes/sync.integration.test.js +0 -2932
  312. package/dist/server/routes/syncAuxRoutes.test.d.ts +0 -1
  313. package/dist/server/routes/syncAuxRoutes.test.js +0 -158
  314. package/dist/server/routes/syncRouteGuards.test.d.ts +0 -1
  315. package/dist/server/routes/syncRouteGuards.test.js +0 -94
  316. package/dist/server/routes.test.d.ts +0 -1
  317. package/dist/server/routes.test.js +0 -15612
  318. package/dist/server/runtimeMode.test.d.ts +0 -1
  319. package/dist/server/runtimeMode.test.js +0 -26
  320. package/dist/server/securityHeaders.test.d.ts +0 -1
  321. package/dist/server/securityHeaders.test.js +0 -70
  322. package/dist/services/templateEngine.test.d.ts +0 -1
  323. package/dist/services/templateEngine.test.js +0 -150
  324. package/dist/services/templates.test.d.ts +0 -1
  325. package/dist/services/templates.test.js +0 -45
  326. package/dist/services/workflowDocumentFixtures.test.d.ts +0 -1
  327. package/dist/services/workflowDocumentFixtures.test.js +0 -78
  328. package/dist/services/workflowExportMatrix.test.d.ts +0 -1
  329. package/dist/services/workflowExportMatrix.test.js +0 -113
  330. package/dist/services/workflowExportSnapshots.test.d.ts +0 -1
  331. package/dist/services/workflowExportSnapshots.test.js +0 -30
  332. package/dist/services/workflowGeneration.test.d.ts +0 -1
  333. package/dist/services/workflowGeneration.test.js +0 -12
  334. package/dist/services/workflowSimulation.test.d.ts +0 -1
  335. package/dist/services/workflowSimulation.test.js +0 -113
  336. package/dist/services/workflowV2Policy.test.d.ts +0 -1
  337. package/dist/services/workflowV2Policy.test.js +0 -80
  338. package/dist/shared/customTaxonomyLibrary.test.d.ts +0 -1
  339. package/dist/shared/customTaxonomyLibrary.test.js +0 -20
  340. package/dist/shared/passwordPolicy.test.d.ts +0 -1
  341. package/dist/shared/passwordPolicy.test.js +0 -34
  342. package/dist/shared/runtimeContract.test.d.ts +0 -1
  343. package/dist/shared/runtimeContract.test.js +0 -23
  344. package/dist/shared/taxonomyLibrary.test.d.ts +0 -1
  345. package/dist/shared/taxonomyLibrary.test.js +0 -26
  346. package/dist/shared/taxonomyState.test.d.ts +0 -1
  347. package/dist/shared/taxonomyState.test.js +0 -71
  348. package/dist/soak/preflight.cli.d.ts +0 -1
  349. package/dist/soak/preflight.cli.js +0 -28
  350. package/dist/soak/preflight.d.ts +0 -26
  351. package/dist/soak/preflight.js +0 -113
  352. package/dist/soak/preflight.test.d.ts +0 -1
  353. package/dist/soak/preflight.test.js +0 -39
  354. package/dist/storage/objectStorageClient.test.d.ts +0 -1
  355. package/dist/storage/objectStorageClient.test.js +0 -82
  356. package/dist/storage/objectStorageConfig.test.d.ts +0 -1
  357. package/dist/storage/objectStorageConfig.test.js +0 -50
  358. package/dist/storage/postgresAdapter.test.d.ts +0 -1
  359. package/dist/storage/postgresAdapter.test.js +0 -29
  360. package/dist/storage/workspaceAssetStore.test.d.ts +0 -1
  361. package/dist/storage/workspaceAssetStore.test.js +0 -588
  362. package/dist/sync/cloudSyncApi.test.d.ts +0 -1
  363. package/dist/sync/cloudSyncApi.test.js +0 -111
  364. package/dist/sync/collaborationSyncPayload.test.d.ts +0 -1
  365. package/dist/sync/collaborationSyncPayload.test.js +0 -125
  366. package/dist/sync/contentSyncPayload.test.d.ts +0 -1
  367. package/dist/sync/contentSyncPayload.test.js +0 -143
  368. package/dist/sync/encryptionService.test.d.ts +0 -1
  369. package/dist/sync/encryptionService.test.js +0 -52
  370. package/dist/sync/planningSyncPayload.test.d.ts +0 -1
  371. package/dist/sync/planningSyncPayload.test.js +0 -92
  372. package/dist/sync/realtimeFeature.test.d.ts +0 -1
  373. package/dist/sync/realtimeFeature.test.js +0 -30
  374. package/dist/sync/realtimeReconcile.test.d.ts +0 -1
  375. package/dist/sync/realtimeReconcile.test.js +0 -43
  376. package/dist/sync/syncApplyHandlers.test.d.ts +0 -1
  377. package/dist/sync/syncApplyHandlers.test.js +0 -626
  378. package/dist/sync/syncService.test.d.ts +0 -1
  379. package/dist/sync/syncService.test.js +0 -903
  380. package/dist/sync/taskSyncPayload.test.d.ts +0 -1
  381. package/dist/sync/taskSyncPayload.test.js +0 -54
  382. package/dist/sync/workspacePullFeed.test.d.ts +0 -1
  383. package/dist/sync/workspacePullFeed.test.js +0 -438
  384. package/dist/sync/workspaceSyncModel.test.d.ts +0 -1
  385. package/dist/sync/workspaceSyncModel.test.js +0 -1442
  386. package/dist/test/setup.d.ts +0 -1
  387. package/dist/test/setup.js +0 -15
  388. package/dist/ui/assets/AgentsModule-BS4Pi_nC.js +0 -1
  389. package/dist/ui/assets/ContextAttachmentManager-CfG_ER7C.js +0 -3
  390. package/dist/ui/assets/PlansPage-B_z-D6Nh.css +0 -1
  391. package/dist/ui/assets/PlansPage-Ndt7mYfo.js +0 -1
  392. package/dist/ui/assets/documentReferences-BOUcJm6-.js +0 -1
  393. package/dist/ui/assets/index-MAHKvFqp.js +0 -4
  394. package/dist/utils/accountProfileSummaryCache.test.d.ts +0 -1
  395. package/dist/utils/accountProfileSummaryCache.test.js +0 -63
  396. package/dist/utils/annotatedAttachments.test.d.ts +0 -1
  397. package/dist/utils/annotatedAttachments.test.js +0 -108
  398. package/dist/utils/assignees.test.d.ts +0 -1
  399. package/dist/utils/assignees.test.js +0 -25
  400. package/dist/utils/avatarUpload.test.d.ts +0 -1
  401. package/dist/utils/avatarUpload.test.js +0 -40
  402. package/dist/utils/canonicalAssetKind.test.d.ts +0 -1
  403. package/dist/utils/canonicalAssetKind.test.js +0 -24
  404. package/dist/utils/coalescedRefresh.test.d.ts +0 -1
  405. package/dist/utils/coalescedRefresh.test.js +0 -30
  406. package/dist/utils/constants.icons.test.d.ts +0 -1
  407. package/dist/utils/constants.icons.test.js +0 -41
  408. package/dist/utils/planParser.test.d.ts +0 -1
  409. package/dist/utils/planParser.test.js +0 -183
  410. package/dist/utils/planningReferences.test.d.ts +0 -1
  411. package/dist/utils/planningReferences.test.js +0 -17
  412. package/dist/utils/syncEventDetails.test.d.ts +0 -1
  413. package/dist/utils/syncEventDetails.test.js +0 -23
  414. package/dist/utils/syncEventPresentation.test.d.ts +0 -1
  415. package/dist/utils/syncEventPresentation.test.js +0 -64
  416. package/dist/utils/syncStatusPresentation.test.d.ts +0 -1
  417. package/dist/utils/syncStatusPresentation.test.js +0 -164
  418. package/dist/utils/taskActivity.test.d.ts +0 -1
  419. package/dist/utils/taskActivity.test.js +0 -218
  420. package/dist/utils/taskDraftDefaults.test.d.ts +0 -1
  421. package/dist/utils/taskDraftDefaults.test.js +0 -34
  422. package/dist/utils/taskDragZones.test.d.ts +0 -1
  423. package/dist/utils/taskDragZones.test.js +0 -14
  424. package/dist/utils/taskNormalization.test.d.ts +0 -1
  425. package/dist/utils/taskNormalization.test.js +0 -158
  426. package/dist/utils/taskSearch.test.d.ts +0 -1
  427. package/dist/utils/taskSearch.test.js +0 -69
  428. package/dist/utils/taskUtils.test.d.ts +0 -1
  429. package/dist/utils/taskUtils.test.js +0 -19
  430. package/dist/utils/taskforceApiClient.test.d.ts +0 -1
  431. package/dist/utils/taskforceApiClient.test.js +0 -44
  432. package/dist/utils/taxonomyFormDefaults.test.d.ts +0 -1
  433. package/dist/utils/taxonomyFormDefaults.test.js +0 -63
  434. package/dist/utils/uiNotice.test.d.ts +0 -1
  435. package/dist/utils/uiNotice.test.js +0 -18
  436. package/dist/utils/workspaceIdentity.test.d.ts +0 -1
  437. package/dist/utils/workspaceIdentity.test.js +0 -61
  438. package/dist/utils/workspaceLifecycle.test.d.ts +0 -1
  439. package/dist/utils/workspaceLifecycle.test.js +0 -64
  440. package/dist/utils/workspaceSyncPresentation.test.d.ts +0 -1
  441. package/dist/utils/workspaceSyncPresentation.test.js +0 -71
  442. package/scripts/bootstrap-playwright-auth.mjs +0 -155
  443. package/scripts/check-cloud-mcp.mjs +0 -83
  444. package/scripts/check-compat-boundaries.mjs +0 -41
  445. package/scripts/check-env.ts +0 -31
  446. package/scripts/check-localization-strings.mjs +0 -49
  447. package/scripts/check-runtime-boundaries.mjs +0 -44
  448. package/scripts/debug-global.mjs +0 -34
  449. package/scripts/debug-login.mjs +0 -32
  450. package/scripts/debug-server.mjs +0 -36
  451. package/scripts/deploy-prod.sh +0 -41
  452. package/scripts/deploy-staging.sh +0 -23
  453. package/scripts/export-sqlite-to-postgres.mjs +0 -123
  454. package/scripts/generate-env-example.ts +0 -8
  455. package/scripts/mcp-stdio-adapter.mjs +0 -160
  456. package/scripts/migrate-task-data-assets.mjs +0 -408
  457. package/scripts/playwright-auth.sh +0 -19
  458. package/scripts/qa-open-lib.mjs +0 -175
  459. package/scripts/qa-open-lib.mjs.d.ts +0 -49
  460. package/scripts/qa-open.mjs +0 -352
  461. package/scripts/release-version-lib.mjs +0 -88
  462. package/scripts/release-version.mjs +0 -72
  463. package/scripts/run-billing-performance-smoke.sh +0 -24
  464. package/scripts/run-dev-proxy.sh +0 -51
  465. package/scripts/run-e2e-realtime.sh +0 -30
  466. package/scripts/run-smoke.sh +0 -35
  467. package/scripts/run-soak.sh +0 -41
  468. package/scripts/test-global.js +0 -143
  469. package/scripts/update-homebrew-formula.sh +0 -108
  470. package/scripts/with-esbuild.sh +0 -11
@@ -1,83 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- const DEFAULT_ENDPOINTS = {
4
- production: 'https://mcp.taskforcehq.ai/mcp',
5
- staging: 'https://staging-mcp.taskforcehq.ai/mcp',
6
- performance: 'https://performance-mcp.taskforcehq.ai/mcp'
7
- };
8
-
9
- const REQUEST_TIMEOUT_MS = 10000;
10
-
11
- function normalizeTargets(argv) {
12
- const values = argv.length > 0 ? argv : Object.keys(DEFAULT_ENDPOINTS);
13
- return values.map((value) => {
14
- const normalized = String(value || '').trim().toLowerCase();
15
- if (DEFAULT_ENDPOINTS[normalized]) {
16
- return {
17
- label: normalized,
18
- url: DEFAULT_ENDPOINTS[normalized]
19
- };
20
- }
21
- return {
22
- label: normalized || 'custom',
23
- url: String(value || '').trim()
24
- };
25
- });
26
- }
27
-
28
- async function checkEndpoint(target) {
29
- const controller = new AbortController();
30
- const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
31
- try {
32
- const response = await fetch(target.url, {
33
- method: 'GET',
34
- headers: {
35
- Accept: 'application/json'
36
- },
37
- signal: controller.signal
38
- });
39
- const contentType = String(response.headers.get('content-type') || '');
40
- const responseText = await response.text();
41
- let payload = null;
42
- try {
43
- payload = responseText ? JSON.parse(responseText) : null;
44
- } catch {
45
- payload = null;
46
- }
47
- const message = typeof payload?.error?.message === 'string'
48
- ? payload.error.message.trim()
49
- : '';
50
-
51
- if (response.status !== 401) {
52
- throw new Error(`expected HTTP 401 but received ${response.status}`);
53
- }
54
- if (!contentType.includes('application/json')) {
55
- throw new Error(`expected application/json response but received ${contentType || 'unknown content-type'}`);
56
- }
57
- if (message !== 'Unauthorized.') {
58
- throw new Error(`expected MCP Unauthorized. payload but received message=${JSON.stringify(message || responseText.slice(0, 200))}`);
59
- }
60
-
61
- console.log(`[mcp-smoke] ${target.label} ok ${target.url} -> 401 Unauthorized.`);
62
- } catch (error) {
63
- const message = error instanceof Error ? error.message : String(error);
64
- throw new Error(`[mcp-smoke] ${target.label} failed ${target.url}: ${message}`);
65
- } finally {
66
- clearTimeout(timeout);
67
- }
68
- }
69
-
70
- async function main() {
71
- const targets = normalizeTargets(process.argv.slice(2));
72
- for (const target of targets) {
73
- if (!target.url) {
74
- throw new Error(`[mcp-smoke] ${target.label} has no URL to check.`);
75
- }
76
- await checkEndpoint(target);
77
- }
78
- }
79
-
80
- main().catch((error) => {
81
- console.error(error instanceof Error ? error.message : String(error));
82
- process.exitCode = 1;
83
- });
@@ -1,41 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
-
4
- const projectRoot = process.cwd();
5
- const sourceRoot = path.join(projectRoot, 'src');
6
- const allowedExtensions = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', '.md']);
7
- const compatMarkers = ['COMPAT_TRACK:', 'COMPAT_REMOVE_AFTER:'];
8
- const allowedPrefixes = [
9
- path.join(projectRoot, 'src', 'compat'),
10
- path.join(projectRoot, 'src', 'migrations')
11
- ];
12
- const violations = [];
13
-
14
- function walk(dir) {
15
- const entries = fs.readdirSync(dir, { withFileTypes: true });
16
- for (const entry of entries) {
17
- const fullPath = path.join(dir, entry.name);
18
- if (entry.isDirectory()) {
19
- walk(fullPath);
20
- continue;
21
- }
22
- if (!allowedExtensions.has(path.extname(entry.name))) continue;
23
- const content = fs.readFileSync(fullPath, 'utf8');
24
- if (!compatMarkers.some((marker) => content.includes(marker))) continue;
25
- const normalized = path.normalize(fullPath);
26
- if (allowedPrefixes.some((prefix) => normalized.startsWith(prefix))) continue;
27
- violations.push(path.relative(projectRoot, fullPath));
28
- }
29
- }
30
-
31
- walk(sourceRoot);
32
-
33
- if (violations.length > 0) {
34
- console.error('[compat-boundaries] Compat markers found outside src/compat or src/migrations:');
35
- for (const violation of violations) {
36
- console.error(`- ${violation}`);
37
- }
38
- process.exit(1);
39
- }
40
-
41
- console.log('[compat-boundaries] OK');
@@ -1,31 +0,0 @@
1
- import { type EnvValidationTarget, validateEnvironment } from '../src/config/envSchema.js';
2
-
3
- function readArg(name: string): string | null {
4
- const prefix = `${name}=`;
5
- const found = process.argv.find((arg) => arg.startsWith(prefix));
6
- return found ? found.slice(prefix.length) : null;
7
- }
8
-
9
- const targetRaw = (readArg('--target') || process.env.TASKFORCE_ENV_CHECK_TARGET || 'all').trim().toLowerCase();
10
- const strictRaw = (readArg('--strict') || process.env.TASKFORCE_ENV_CHECK_STRICT || 'true').trim().toLowerCase();
11
-
12
- const target: EnvValidationTarget = (targetRaw === 'server' || targetRaw === 'soak' || targetRaw === 'all')
13
- ? targetRaw
14
- : 'all';
15
- const strictUnknown = ['1', 'true', 'yes', 'on'].includes(strictRaw);
16
-
17
- try {
18
- const result = validateEnvironment(process.env, { target, strictUnknown });
19
- if (!result.ok) {
20
- const details = result.errors.map((entry) => `- ${entry}`).join('\n');
21
- throw new Error(`Environment validation failed:\n${details}`);
22
- }
23
- for (const warning of result.warnings) {
24
- console.warn(`[env] warning: ${warning}`);
25
- }
26
- console.log(`[env] validation passed (target=${target}, strictUnknown=${strictUnknown})`);
27
- } catch (error) {
28
- const message = String((error as Error)?.message || error);
29
- console.error(message);
30
- process.exit(1);
31
- }
@@ -1,49 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import fs from 'node:fs';
4
- import path from 'node:path';
5
-
6
- const ROOT = path.resolve(path.dirname(new URL(import.meta.url).pathname), '..');
7
- const FILES = [
8
- 'src/components/task/TaskList.tsx',
9
- 'src/components/task/TaskActionHeader.tsx'
10
- ];
11
-
12
- const PATTERNS = [
13
- {
14
- name: 'attribute string literal',
15
- regex: /\b(?:title|placeholder|aria-label)\s*=\s*"[^"]*[A-Za-z][^"]*"/g
16
- }
17
- ];
18
-
19
- const failures = [];
20
-
21
- for (const relPath of FILES) {
22
- const filePath = path.join(ROOT, relPath);
23
- const source = fs.readFileSync(filePath, 'utf8');
24
- const lines = source.split('\n');
25
-
26
- for (const { name, regex } of PATTERNS) {
27
- let match;
28
- while ((match = regex.exec(source)) !== null) {
29
- const start = match.index;
30
- const line = source.slice(0, start).split('\n').length;
31
- failures.push({
32
- file: relPath,
33
- line,
34
- rule: name,
35
- snippet: lines[line - 1]?.trim() || ''
36
- });
37
- }
38
- }
39
- }
40
-
41
- if (failures.length > 0) {
42
- console.error('Localization string check failed. Use translation keys via t(...):');
43
- for (const failure of failures) {
44
- console.error(`- ${failure.file}:${failure.line} [${failure.rule}] ${failure.snippet}`);
45
- }
46
- process.exit(1);
47
- }
48
-
49
- console.log(`Localization string check passed (${FILES.length} files).`);
@@ -1,44 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
-
4
- const projectRoot = process.cwd();
5
- const sourceRoot = path.join(projectRoot, 'src');
6
- const allowedExtensions = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']);
7
- const importPattern = /\bfrom\s+['"]([^'"]+)['"]|\brequire\(\s*['"]([^'"]+)['"]\s*\)/g;
8
- const forbiddenSegments = ['apps/admin', 'apps/site'];
9
- const violations = [];
10
-
11
- function walk(dir) {
12
- const entries = fs.readdirSync(dir, { withFileTypes: true });
13
- for (const entry of entries) {
14
- const fullPath = path.join(dir, entry.name);
15
- if (entry.isDirectory()) {
16
- walk(fullPath);
17
- continue;
18
- }
19
- if (!allowedExtensions.has(path.extname(entry.name))) continue;
20
- const content = fs.readFileSync(fullPath, 'utf8');
21
- let match;
22
- while ((match = importPattern.exec(content)) !== null) {
23
- const specifier = String(match[1] || match[2] || '').trim();
24
- if (!specifier) continue;
25
- if (!forbiddenSegments.some((segment) => specifier.includes(segment))) continue;
26
- violations.push({
27
- file: path.relative(projectRoot, fullPath),
28
- specifier
29
- });
30
- }
31
- }
32
- }
33
-
34
- walk(sourceRoot);
35
-
36
- if (violations.length > 0) {
37
- console.error('[runtime-boundaries] Found forbidden cross-surface imports:');
38
- for (const violation of violations) {
39
- console.error(`- ${violation.file}: ${violation.specifier}`);
40
- }
41
- process.exit(1);
42
- }
43
-
44
- console.log('[runtime-boundaries] OK');
@@ -1,34 +0,0 @@
1
- import { TaskforceCore } from '/Users/rossburke/.npm-global/lib/node_modules/taskforce/dist/core/Taskforce.js';
2
- import path from 'path';
3
- import fs from 'fs';
4
-
5
- const projectRoot = process.cwd();
6
- console.log('Current Working Directory:', projectRoot);
7
-
8
- const core = new TaskforceCore({ projectRoot });
9
- console.log('Core initialized.');
10
- console.log('Expected Todo File Path:', core.todoFile);
11
-
12
- if (fs.existsSync(core.todoFile)) {
13
- console.log('File exists on disk.');
14
- const stats = fs.statSync(core.todoFile);
15
- console.log('File size:', stats.size);
16
- } else {
17
- console.error('File DOES NOT EXIST at path!');
18
- }
19
-
20
- try {
21
- const data = core.listTodos();
22
- console.log('Read success!');
23
- console.log('Todos found:', data.todos.length);
24
- if (data.todos.length > 0) {
25
- console.log('First todo ID:', data.todos[0].id);
26
- console.log('First todo Title:', data.todos[0].title);
27
- }
28
-
29
- // Check config too
30
- const config = core.readConfig();
31
- console.log('Config loaded:', Object.keys(config));
32
- } catch (e) {
33
- console.error('Error executing method:', e);
34
- }
@@ -1,32 +0,0 @@
1
- // One-off Playwright script to inspect login form inputs on the production app.
2
- // Run with: node scripts/debug-login.mjs
3
- import { chromium } from 'playwright';
4
-
5
- (async () => {
6
- const browser = await chromium.launch();
7
- const context = await browser.newContext();
8
- const page = await context.newPage();
9
- try {
10
- await page.goto('https://app.taskforcehq.ai/taskforce/login', { timeout: 15000 });
11
- console.log("Navigated to /taskforce/login");
12
- await page.waitForTimeout(2000);
13
- const inputs = await page.locator('input').evaluateAll(els => els.map(e => ({ type: e.type, placeholder: e.placeholder, name: e.name })));
14
- console.log("Inputs on /taskforce/login:", inputs);
15
-
16
- await page.goto('https://app.taskforcehq.ai/taskforce/', { timeout: 15000 });
17
- console.log("Navigated to /taskforce/");
18
- await page.waitForTimeout(2000);
19
- const inputs2 = await page.locator('input').evaluateAll(els => els.map(e => ({ type: e.type, placeholder: e.placeholder, name: e.name })));
20
- console.log("Inputs on /taskforce/:", inputs2);
21
-
22
- await page.goto('https://app.taskforcehq.ai/taskforce/', { timeout: 15000 });
23
- console.log("Navigated to /taskforce/");
24
- await page.waitForTimeout(2000);
25
- const inputs3 = await page.locator('input').evaluateAll(els => els.map(e => ({ type: e.type, placeholder: e.placeholder, name: e.name })));
26
- console.log("Inputs on /taskforce/:", inputs3);
27
- } catch (e) {
28
- console.error(e);
29
- } finally {
30
- await browser.close();
31
- }
32
- })();
@@ -1,36 +0,0 @@
1
-
2
- import { createStandaloneServer } from '/Users/rossburke/.npm-global/lib/node_modules/taskforce/dist/server/index.js';
3
- import http from 'http';
4
-
5
- const projectRoot = process.cwd();
6
- const PORT = 5177;
7
-
8
- console.log('Project Root:', projectRoot);
9
-
10
- try {
11
- const server = createStandaloneServer({
12
- projectRoot,
13
- port: PORT
14
- });
15
-
16
- server.listen(PORT, async () => {
17
- console.log(`Server listening on ${PORT}`);
18
-
19
- const res = await fetch(`http://localhost:${PORT}/api/taskforce/todos`);
20
- if (res.ok) {
21
- const todos = await res.json();
22
- console.log('API Response Status:', res.status);
23
- console.log('Todos count from API:', todos.length);
24
- if (todos.length > 0) {
25
- console.log('First todo:', todos[0].title);
26
- }
27
- } else {
28
- console.error('API Error:', res.status, res.statusText);
29
- }
30
-
31
- server.close();
32
- process.exit(0);
33
- });
34
- } catch (e) {
35
- console.error('Server error:', e);
36
- }
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5
- cd "$ROOT_DIR"
6
-
7
- BUMP_TYPE="${1:-patch}"
8
- ORIGINAL_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
9
-
10
- case "$BUMP_TYPE" in
11
- patch|minor|major)
12
- ;;
13
- *)
14
- echo "Invalid version bump '$BUMP_TYPE'. Use patch, minor, or major." >&2
15
- exit 1
16
- ;;
17
- esac
18
-
19
- if ! git diff --quiet || ! git diff --cached --quiet; then
20
- echo "Working tree is not clean. Commit or stash changes before deploying to production." >&2
21
- exit 1
22
- fi
23
-
24
- git checkout main
25
- git pull --ff-only origin main
26
- git merge --no-ff --no-commit staging
27
- npm version "$BUMP_TYPE" --no-git-tag-version
28
-
29
- VERSION="$(node -p "JSON.parse(require('fs').readFileSync('package.json','utf8')).version")"
30
-
31
- git add package.json package-lock.json
32
- git commit -m "chore(release): v${VERSION}"
33
- git tag "v${VERSION}"
34
- git push origin main
35
- git push origin "v${VERSION}"
36
-
37
- if [[ "$ORIGINAL_BRANCH" != "main" ]]; then
38
- git checkout "$ORIGINAL_BRANCH"
39
- fi
40
-
41
- echo "Promoted staging to main, bumped version to ${VERSION}, and pushed tag v${VERSION}."
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5
- cd "$ROOT_DIR"
6
-
7
- ORIGINAL_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
8
-
9
- if ! git diff --quiet || ! git diff --cached --quiet; then
10
- echo "Working tree is not clean. Commit or stash changes before deploying to staging." >&2
11
- exit 1
12
- fi
13
-
14
- git checkout staging
15
- git pull --ff-only origin staging
16
- git merge --no-ff dev -m "chore(release): promote dev to staging"
17
- git push origin staging
18
-
19
- if [[ "$ORIGINAL_BRANCH" != "staging" ]]; then
20
- git checkout "$ORIGINAL_BRANCH"
21
- fi
22
-
23
- echo "Promoted dev to staging."
@@ -1,123 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'fs';
3
- import path from 'path';
4
- import Database from 'better-sqlite3';
5
-
6
- function getArg(name, fallback) {
7
- const idx = process.argv.findIndex(a => a === `--${name}`);
8
- if (idx >= 0 && process.argv[idx + 1]) return process.argv[idx + 1];
9
- return fallback;
10
- }
11
-
12
- function sqlString(value) {
13
- if (value === null || value === undefined) return 'NULL';
14
- return `'${String(value).replace(/'/g, "''")}'`;
15
- }
16
-
17
- function sqlNumber(value) {
18
- if (value === null || value === undefined || value === '') return 'NULL';
19
- const num = Number(value);
20
- return Number.isFinite(num) ? String(num) : 'NULL';
21
- }
22
-
23
- function sqlBool(value) {
24
- if (value === null || value === undefined) return 'FALSE';
25
- return Number(value) === 1 || value === true ? 'TRUE' : 'FALSE';
26
- }
27
-
28
- const sqlitePath = path.resolve(getArg('sqlite', '.taskforce/taskforce.db'));
29
- const outPath = path.resolve(getArg('out', '.taskforce/postgres-bootstrap.sql'));
30
-
31
- if (!fs.existsSync(sqlitePath)) {
32
- console.error(`[Taskforce] SQLite DB not found: ${sqlitePath}`);
33
- process.exit(1);
34
- }
35
-
36
- const db = new Database(sqlitePath, { readonly: true });
37
-
38
- const tasks = db.prepare('SELECT * FROM tasks ORDER BY id ASC').all();
39
- const comments = db.prepare('SELECT * FROM comments ORDER BY id ASC').all();
40
- const screenshots = db.prepare('SELECT * FROM screenshots ORDER BY id ASC').all();
41
-
42
- const lines = [];
43
- lines.push('-- Generated by scripts/export-sqlite-to-postgres.mjs');
44
- lines.push(`-- Source SQLite: ${sqlitePath}`);
45
- lines.push(`-- Generated at: ${new Date().toISOString()}`);
46
- lines.push('-- Apply schema first: src/migrations/postgres/001_init.sql');
47
- lines.push('BEGIN;');
48
- lines.push('');
49
-
50
- for (const t of tasks) {
51
- lines.push(`INSERT INTO tasks (
52
- id, tenant_id, workspace_id, title, description, status, priority, complexity, type, category,
53
- approach, created_at, updated_at, completed_at, canceled_reason,
54
- is_archived, specialists, taxonomies, created_by,
55
- scheduled_date, due_date, scheduled_week_key, order_in_day
56
- ) VALUES (
57
- ${sqlString(t.id)}, ${sqlString(t.tenant_id || 'default')}, ${sqlString(t.workspace_id || 'default')}, ${sqlString(t.title)}, ${sqlString(t.description)}, ${sqlString(t.status)}, ${sqlNumber(t.priority)}, ${sqlNumber(t.complexity)}, ${sqlString(t.type)}, ${sqlString(t.category)},
58
- ${sqlString(t.approach)}, ${sqlString(t.created_at)}, ${sqlString(t.updated_at)}, ${sqlString(t.completed_at)}, ${sqlString(t.canceled_reason)},
59
- ${sqlBool(t.is_archived)}, ${sqlString(t.specialists)}, ${sqlString(t.taxonomies)}, ${sqlString(t.created_by)},
60
- ${sqlString(t.scheduled_date)}, ${sqlString(t.due_date)}, ${sqlString(t.scheduled_week_key)}, ${sqlNumber(t.order_in_day)}
61
- )
62
- ON CONFLICT (id) DO UPDATE SET
63
- tenant_id = EXCLUDED.tenant_id,
64
- workspace_id = EXCLUDED.workspace_id,
65
- title = EXCLUDED.title,
66
- description = EXCLUDED.description,
67
- status = EXCLUDED.status,
68
- priority = EXCLUDED.priority,
69
- complexity = EXCLUDED.complexity,
70
- type = EXCLUDED.type,
71
- category = EXCLUDED.category,
72
- approach = EXCLUDED.approach,
73
- created_at = EXCLUDED.created_at,
74
- updated_at = EXCLUDED.updated_at,
75
- completed_at = EXCLUDED.completed_at,
76
- canceled_reason = EXCLUDED.canceled_reason,
77
- is_archived = EXCLUDED.is_archived,
78
- specialists = EXCLUDED.specialists,
79
- taxonomies = EXCLUDED.taxonomies,
80
- created_by = EXCLUDED.created_by,
81
- scheduled_date = EXCLUDED.scheduled_date,
82
- due_date = EXCLUDED.due_date,
83
- scheduled_week_key = EXCLUDED.scheduled_week_key,
84
- order_in_day = EXCLUDED.order_in_day;`);
85
- }
86
-
87
- for (const c of comments) {
88
- lines.push(`INSERT INTO comments (id, tenant_id, task_id, text, author, timestamp) VALUES (
89
- ${sqlString(c.id)}, ${sqlString(c.tenant_id || 'default')}, ${sqlString(c.task_id)}, ${sqlString(c.text)}, ${sqlString(c.author)}, ${sqlString(c.timestamp)}
90
- )
91
- ON CONFLICT (id) DO UPDATE SET
92
- tenant_id = EXCLUDED.tenant_id,
93
- task_id = EXCLUDED.task_id,
94
- text = EXCLUDED.text,
95
- author = EXCLUDED.author,
96
- timestamp = EXCLUDED.timestamp;`);
97
- }
98
-
99
- for (const s of screenshots) {
100
- lines.push(`INSERT INTO screenshots (id, tenant_id, task_id, path, fs_path, caption, timestamp) VALUES (
101
- ${sqlString(s.id)}, ${sqlString(s.tenant_id || 'default')}, ${sqlString(s.task_id)}, ${sqlString(s.path)}, ${sqlString(s.fs_path)}, ${sqlString(s.caption)}, ${sqlString(s.timestamp)}
102
- )
103
- ON CONFLICT (id) DO UPDATE SET
104
- tenant_id = EXCLUDED.tenant_id,
105
- task_id = EXCLUDED.task_id,
106
- path = EXCLUDED.path,
107
- fs_path = EXCLUDED.fs_path,
108
- caption = EXCLUDED.caption,
109
- timestamp = EXCLUDED.timestamp;`);
110
- }
111
-
112
- lines.push('');
113
- lines.push('COMMIT;');
114
- lines.push('');
115
-
116
- fs.mkdirSync(path.dirname(outPath), { recursive: true });
117
- fs.writeFileSync(outPath, `${lines.join('\n')}\n`, 'utf8');
118
-
119
- console.log(`[Taskforce] Export complete:`);
120
- console.log(` tasks: ${tasks.length}`);
121
- console.log(` comments: ${comments.length}`);
122
- console.log(` screenshots: ${screenshots.length}`);
123
- console.log(` output: ${outPath}`);
@@ -1,8 +0,0 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import { renderEnvExample } from '../src/config/envSchema.js';
4
-
5
- const outputPath = path.resolve(process.cwd(), '.env.example');
6
- const contents = renderEnvExample('all');
7
- fs.writeFileSync(outputPath, contents, 'utf8');
8
- console.log(`[env] wrote ${outputPath}`);