@taskforcehq/taskforce 0.3.311 → 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 (454) hide show
  1. package/README.md +40 -2
  2. package/dist/TaskforceCore.js +1 -1
  3. package/dist/components/features/InitiativesModule.js +1 -1
  4. package/dist/components/features/TaskSettings.js +1 -1
  5. package/dist/components/views/StandaloneLayout.js +3 -6
  6. package/dist/components/views/standalone/modals/AccountHubModal.d.ts +1 -2
  7. package/dist/components/views/standalone/modals/AccountHubModal.js +2 -3
  8. package/dist/components/views/standalone/modals/HelpModal.js +15 -2
  9. package/dist/hooks/useFilterSort.js +1 -1
  10. package/dist/hooks/useTaskforce.js +2 -2
  11. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +5 -2
  12. package/dist/ui/assets/{AgentsModule-D8u9P5dZ.js → AgentsModule-BULqIo8e.js} +1 -1
  13. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-CsUauFA2.js → AnnotatedAttachmentWorkspace-DHr4rHK9.js} +1 -1
  14. package/dist/ui/assets/{ContextAttachmentManager-DbQvDHFz.js → ContextAttachmentManager-DoMe2OpY.js} +1 -1
  15. package/dist/ui/assets/{DocumentWorkspace-BmTkN1A8.js → DocumentWorkspace-DumBWhvb.js} +1 -1
  16. package/dist/ui/assets/{EntityActivityTimeline-BXHTM-Nh.js → EntityActivityTimeline-sHk8Nzbq.js} +1 -1
  17. package/dist/ui/assets/{InitiativesModule-D33RyXx0.js → InitiativesModule-3X9UNzHh.js} +1 -1
  18. package/dist/ui/assets/{PlansPage-D0RXlT9_.js → PlansPage-C3A3EYaV.js} +1 -1
  19. package/dist/ui/assets/{TaskContextUpload-Vsg67lpR.js → TaskContextUpload-C8G7pWkX.js} +1 -1
  20. package/dist/ui/assets/{TaskSettings-DshLw7_d.js → TaskSettings-DM1o9Wla.js} +2 -2
  21. package/dist/ui/assets/{WorkflowsModule-CLM-1BnF.js → WorkflowsModule-CW0crzvD.js} +1 -1
  22. package/dist/ui/assets/documentReferences-BZB3nMRb.js +1 -0
  23. package/dist/ui/assets/index-BWFQ9mGn.js +5 -0
  24. package/dist/ui/assets/{index-DOR9PRqt.css → index-DcK_8tuE.css} +1 -1
  25. package/dist/ui/index.html +2 -2
  26. package/package.json +12 -4
  27. package/scripts/postinstall.js +4 -3
  28. package/dist/TaskforceCore.CategoryFallback.test.d.ts +0 -1
  29. package/dist/TaskforceCore.CategoryFallback.test.js +0 -101
  30. package/dist/TaskforceCore.filter-persistence.test.d.ts +0 -1
  31. package/dist/TaskforceCore.filter-persistence.test.js +0 -402
  32. package/dist/TaskforceCore.routing.test.d.ts +0 -1
  33. package/dist/TaskforceCore.routing.test.js +0 -311
  34. package/dist/TaskforceCore.test.d.ts +0 -1
  35. package/dist/TaskforceCore.test.js +0 -7910
  36. package/dist/TaskforceWidget.test.d.ts +0 -1
  37. package/dist/TaskforceWidget.test.js +0 -92
  38. package/dist/UnsavedChangesRelaxed.test.d.ts +0 -1
  39. package/dist/UnsavedChangesRelaxed.test.js +0 -16
  40. package/dist/__tests__/localizationCatalogs.test.d.ts +0 -1
  41. package/dist/__tests__/localizationCatalogs.test.js +0 -54
  42. package/dist/__tests__/workflowSimulation.test.d.ts +0 -1
  43. package/dist/__tests__/workflowSimulation.test.js +0 -113
  44. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.d.ts +0 -1
  45. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.js +0 -278
  46. package/dist/annotatedAttachments/payload.test.d.ts +0 -1
  47. package/dist/annotatedAttachments/payload.test.js +0 -67
  48. package/dist/compat/workspaceSyncCompat.test.d.ts +0 -1
  49. package/dist/compat/workspaceSyncCompat.test.js +0 -124
  50. package/dist/components/features/AgentsModule.test.d.ts +0 -1
  51. package/dist/components/features/AgentsModule.test.js +0 -601
  52. package/dist/components/features/AnnotatedAttachmentWorkspace.test.d.ts +0 -1
  53. package/dist/components/features/AnnotatedAttachmentWorkspace.test.js +0 -2883
  54. package/dist/components/features/DocumentWorkspace.test.d.ts +0 -1
  55. package/dist/components/features/DocumentWorkspace.test.js +0 -1439
  56. package/dist/components/features/TaskSettings.test.d.ts +0 -1
  57. package/dist/components/features/TaskSettings.test.js +0 -1674
  58. package/dist/components/features/settings/TaxonomyLibraryManager.test.d.ts +0 -1
  59. package/dist/components/features/settings/TaxonomyLibraryManager.test.js +0 -141
  60. package/dist/components/task/TaskActionHeader.test.d.ts +0 -1
  61. package/dist/components/task/TaskActionHeader.test.js +0 -91
  62. package/dist/components/task/TaskCard.test.d.ts +0 -1
  63. package/dist/components/task/TaskCard.test.js +0 -513
  64. package/dist/components/task/TaskContextUpload.test.d.ts +0 -1
  65. package/dist/components/task/TaskContextUpload.test.js +0 -506
  66. package/dist/components/task/TaskForm.test.d.ts +0 -1
  67. package/dist/components/task/TaskForm.test.js +0 -946
  68. package/dist/components/task/TaskKanban.empty-column-drop.test.d.ts +0 -1
  69. package/dist/components/task/TaskKanban.empty-column-drop.test.js +0 -66
  70. package/dist/components/task/TaskKanban.planning-drop.test.d.ts +0 -1
  71. package/dist/components/task/TaskKanban.planning-drop.test.js +0 -93
  72. package/dist/components/task/TaskKanban.test.d.ts +0 -1
  73. package/dist/components/task/TaskKanban.test.js +0 -99
  74. package/dist/components/task/TaskList.test.d.ts +0 -1
  75. package/dist/components/task/TaskList.test.js +0 -473
  76. package/dist/components/task/TaskStatusActions.test.d.ts +0 -1
  77. package/dist/components/task/TaskStatusActions.test.js +0 -54
  78. package/dist/components/task/taskKanbanDropRules.test.d.ts +0 -1
  79. package/dist/components/task/taskKanbanDropRules.test.js +0 -114
  80. package/dist/components/ui/LevelSelector.test.d.ts +0 -1
  81. package/dist/components/ui/LevelSelector.test.js +0 -55
  82. package/dist/components/ui/Markdown.test.d.ts +0 -1
  83. package/dist/components/ui/Markdown.test.js +0 -38
  84. package/dist/components/ui/MultiSelectFilter.test.d.ts +0 -1
  85. package/dist/components/ui/MultiSelectFilter.test.js +0 -74
  86. package/dist/components/ui/TaxonomyDropdown.test.d.ts +0 -1
  87. package/dist/components/ui/TaxonomyDropdown.test.js +0 -130
  88. package/dist/components/ui/TopNoticeLayer.test.d.ts +0 -1
  89. package/dist/components/ui/TopNoticeLayer.test.js +0 -25
  90. package/dist/components/views/AppShellHeader.test.d.ts +0 -1
  91. package/dist/components/views/AppShellHeader.test.js +0 -42
  92. package/dist/components/views/PlanComparisonPage.test.d.ts +0 -1
  93. package/dist/components/views/PlanComparisonPage.test.js +0 -758
  94. package/dist/components/views/PlansPage.test.d.ts +0 -1
  95. package/dist/components/views/PlansPage.test.js +0 -710
  96. package/dist/components/views/chrome/WorkspaceChromeSections.test.d.ts +0 -1
  97. package/dist/components/views/chrome/WorkspaceChromeSections.test.js +0 -54
  98. package/dist/components/views/chrome/workspaceChrome.test.d.ts +0 -1
  99. package/dist/components/views/chrome/workspaceChrome.test.js +0 -52
  100. package/dist/components/views/panels/DocumentFilterToolbar.test.d.ts +0 -1
  101. package/dist/components/views/panels/DocumentFilterToolbar.test.js +0 -19
  102. package/dist/components/views/panels/FilterToolbar.test.d.ts +0 -1
  103. package/dist/components/views/panels/FilterToolbar.test.js +0 -47
  104. package/dist/components/views/panels/PlanningDrawer.test.d.ts +0 -1
  105. package/dist/components/views/panels/PlanningDrawer.test.js +0 -529
  106. package/dist/components/views/planningScope.test.d.ts +0 -1
  107. package/dist/components/views/planningScope.test.js +0 -60
  108. package/dist/components/views/standalone/modals/AccountHubModal.test.d.ts +0 -1
  109. package/dist/components/views/standalone/modals/AccountHubModal.test.js +0 -72
  110. package/dist/components/views/standalone/modals/HelpModal.test.d.ts +0 -1
  111. package/dist/components/views/standalone/modals/HelpModal.test.js +0 -23
  112. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.d.ts +0 -1
  113. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.js +0 -24
  114. package/dist/components/views/teamManagementAccess.test.d.ts +0 -1
  115. package/dist/components/views/teamManagementAccess.test.js +0 -44
  116. package/dist/config/deployment.test.d.ts +0 -1
  117. package/dist/config/deployment.test.js +0 -90
  118. package/dist/config/envSchema.test.d.ts +0 -1
  119. package/dist/config/envSchema.test.js +0 -125
  120. package/dist/core/AiProfileService.test.d.ts +0 -1
  121. package/dist/core/AiProfileService.test.js +0 -184
  122. package/dist/core/AiProfiles.test.d.ts +0 -1
  123. package/dist/core/AiProfiles.test.js +0 -1873
  124. package/dist/core/AuthTokenService.test.d.ts +0 -1
  125. package/dist/core/AuthTokenService.test.js +0 -78
  126. package/dist/core/BulkUpdateFieldsPreview.test.d.ts +0 -1
  127. package/dist/core/BulkUpdateFieldsPreview.test.js +0 -62
  128. package/dist/core/CompletedAt.test.d.ts +0 -1
  129. package/dist/core/CompletedAt.test.js +0 -44
  130. package/dist/core/CreatedBy.test.d.ts +0 -1
  131. package/dist/core/CreatedBy.test.js +0 -188
  132. package/dist/core/DeletedTaskTrash.test.d.ts +0 -1
  133. package/dist/core/DeletedTaskTrash.test.js +0 -104
  134. package/dist/core/EntitlementsPolicy.test.d.ts +0 -1
  135. package/dist/core/EntitlementsPolicy.test.js +0 -280
  136. package/dist/core/GlobalSettingsService.test.d.ts +0 -1
  137. package/dist/core/GlobalSettingsService.test.js +0 -45
  138. package/dist/core/JsonBackupRuntime.test.d.ts +0 -1
  139. package/dist/core/JsonBackupRuntime.test.js +0 -155
  140. package/dist/core/PlanFeatureCatalog.test.d.ts +0 -1
  141. package/dist/core/PlanFeatureCatalog.test.js +0 -139
  142. package/dist/core/PlanVersionPolicy.test.d.ts +0 -1
  143. package/dist/core/PlanVersionPolicy.test.js +0 -236
  144. package/dist/core/PlanningEntities.test.d.ts +0 -1
  145. package/dist/core/PlanningEntities.test.js +0 -509
  146. package/dist/core/ScheduleFields.test.d.ts +0 -1
  147. package/dist/core/ScheduleFields.test.js +0 -193
  148. package/dist/core/SetupState.test.d.ts +0 -1
  149. package/dist/core/SetupState.test.js +0 -113
  150. package/dist/core/SignupMonetizationSettings.test.d.ts +0 -1
  151. package/dist/core/SignupMonetizationSettings.test.js +0 -515
  152. package/dist/core/Stats.test.d.ts +0 -1
  153. package/dist/core/Stats.test.js +0 -36
  154. package/dist/core/SystemAdmin.test.d.ts +0 -1
  155. package/dist/core/SystemAdmin.test.js +0 -1106
  156. package/dist/core/TaskActivitySync.test.d.ts +0 -1
  157. package/dist/core/TaskActivitySync.test.js +0 -90
  158. package/dist/core/TaskAttachmentsCanonical.test.d.ts +0 -1
  159. package/dist/core/TaskAttachmentsCanonical.test.js +0 -356
  160. package/dist/core/TaskAuditTimeline.test.d.ts +0 -1
  161. package/dist/core/TaskAuditTimeline.test.js +0 -319
  162. package/dist/core/TaskTaxonomyValidation.test.d.ts +0 -1
  163. package/dist/core/TaskTaxonomyValidation.test.js +0 -440
  164. package/dist/core/Taskforce.ids.test.d.ts +0 -1
  165. package/dist/core/Taskforce.ids.test.js +0 -611
  166. package/dist/core/Taskforce.listTasksSlim.test.d.ts +0 -1
  167. package/dist/core/Taskforce.listTasksSlim.test.js +0 -91
  168. package/dist/core/Taskforce.mcpAuth.test.d.ts +0 -1
  169. package/dist/core/Taskforce.mcpAuth.test.js +0 -450
  170. package/dist/core/Taskforce.realtimeMutation.test.d.ts +0 -1
  171. package/dist/core/Taskforce.realtimeMutation.test.js +0 -131
  172. package/dist/core/UserProfileAvatarDrafts.test.d.ts +0 -1
  173. package/dist/core/UserProfileAvatarDrafts.test.js +0 -138
  174. package/dist/core/WorkspaceDelete.test.d.ts +0 -1
  175. package/dist/core/WorkspaceDelete.test.js +0 -159
  176. package/dist/core/WorkspacePermissions.test.d.ts +0 -1
  177. package/dist/core/WorkspacePermissions.test.js +0 -270
  178. package/dist/core/WorkspacePlanMode.test.d.ts +0 -1
  179. package/dist/core/WorkspacePlanMode.test.js +0 -383
  180. package/dist/core/WorkspaceSyncSettings.test.d.ts +0 -1
  181. package/dist/core/WorkspaceSyncSettings.test.js +0 -65
  182. package/dist/core/__tests__/TaskAttachmentsCanonical.test.d.ts +0 -1
  183. package/dist/core/__tests__/TaskAttachmentsCanonical.test.js +0 -212
  184. package/dist/documentReviews/DocumentReviewSessionStore.test.d.ts +0 -1
  185. package/dist/documentReviews/DocumentReviewSessionStore.test.js +0 -127
  186. package/dist/hooks/authGuardPolicy.test.d.ts +0 -1
  187. package/dist/hooks/authGuardPolicy.test.js +0 -76
  188. package/dist/hooks/bootstrapTimeouts.test.d.ts +0 -1
  189. package/dist/hooks/bootstrapTimeouts.test.js +0 -12
  190. package/dist/hooks/sync/controlPlane.test.d.ts +0 -1
  191. package/dist/hooks/sync/controlPlane.test.js +0 -121
  192. package/dist/hooks/sync/lifecyclePolicy.test.d.ts +0 -1
  193. package/dist/hooks/sync/lifecyclePolicy.test.js +0 -124
  194. package/dist/hooks/sync/orchestratorShared.test.d.ts +0 -1
  195. package/dist/hooks/sync/orchestratorShared.test.js +0 -98
  196. package/dist/hooks/sync/pullLifecycle.test.d.ts +0 -1
  197. package/dist/hooks/sync/pullLifecycle.test.js +0 -80
  198. package/dist/hooks/sync/recovery.test.d.ts +0 -1
  199. package/dist/hooks/sync/recovery.test.js +0 -292
  200. package/dist/hooks/sync/transfers.test.d.ts +0 -1
  201. package/dist/hooks/sync/transfers.test.js +0 -928
  202. package/dist/hooks/sync/useRecentSyncEvents.test.d.ts +0 -1
  203. package/dist/hooks/sync/useRecentSyncEvents.test.js +0 -124
  204. package/dist/hooks/sync/useSyncStatusActions.test.d.ts +0 -1
  205. package/dist/hooks/sync/useSyncStatusActions.test.js +0 -133
  206. package/dist/hooks/sync/useSyncStatusControls.test.d.ts +0 -1
  207. package/dist/hooks/sync/useSyncStatusControls.test.js +0 -88
  208. package/dist/hooks/useFilterSort.test.d.ts +0 -1
  209. package/dist/hooks/useFilterSort.test.js +0 -419
  210. package/dist/hooks/useRealtimeSync.test.d.ts +0 -1
  211. package/dist/hooks/useRealtimeSync.test.js +0 -311
  212. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.d.ts +0 -1
  213. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.js +0 -54
  214. package/dist/hooks/useSyncOrchestrator.context-assets.test.d.ts +0 -1
  215. package/dist/hooks/useSyncOrchestrator.context-assets.test.js +0 -228
  216. package/dist/hooks/useSyncOrchestrator.retry-closure.test.d.ts +0 -1
  217. package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +0 -2027
  218. package/dist/hooks/useTaskData.test.d.ts +0 -1
  219. package/dist/hooks/useTaskData.test.js +0 -291
  220. package/dist/hooks/useTaskMutations.test.d.ts +0 -1
  221. package/dist/hooks/useTaskMutations.test.js +0 -256
  222. package/dist/hooks/useTaskforce.contract.test.d.ts +0 -1
  223. package/dist/hooks/useTaskforce.contract.test.js +0 -7
  224. package/dist/hooks/useTaskforce.priority-filters.test.d.ts +0 -1
  225. package/dist/hooks/useTaskforce.priority-filters.test.js +0 -28
  226. package/dist/hooks/useTaskforce.runtime-routing.test.d.ts +0 -1
  227. package/dist/hooks/useTaskforce.runtime-routing.test.js +0 -246
  228. package/dist/hooks/useTaskforce.sync-behavior.test.d.ts +0 -1
  229. package/dist/hooks/useTaskforce.sync-behavior.test.js +0 -3644
  230. package/dist/hooks/useWorkspaceSyncController.test.d.ts +0 -1
  231. package/dist/hooks/useWorkspaceSyncController.test.js +0 -192
  232. package/dist/hooks/workspace/useTaskforceApiRouting.test.d.ts +0 -1
  233. package/dist/hooks/workspace/useTaskforceApiRouting.test.js +0 -77
  234. package/dist/hooks/workspace/workspaceLocalState.test.d.ts +0 -1
  235. package/dist/hooks/workspace/workspaceLocalState.test.js +0 -59
  236. package/dist/localization/localizationCatalogs.test.d.ts +0 -1
  237. package/dist/localization/localizationCatalogs.test.js +0 -37
  238. package/dist/mcp/aiProfileBootstrap.test.d.ts +0 -1
  239. package/dist/mcp/aiProfileBootstrap.test.js +0 -68
  240. package/dist/mcp/canonicalAssetHelpers.test.d.ts +0 -1
  241. package/dist/mcp/canonicalAssetHelpers.test.js +0 -67
  242. package/dist/mcp/clientIntegrations.test.d.ts +0 -1
  243. package/dist/mcp/clientIntegrations.test.js +0 -219
  244. package/dist/mcp/optionResolution.test.d.ts +0 -1
  245. package/dist/mcp/optionResolution.test.js +0 -43
  246. package/dist/mcp/runtime.test.d.ts +0 -1
  247. package/dist/mcp/runtime.test.js +0 -5211
  248. package/dist/mcp/structuredCommentValidation.test.d.ts +0 -1
  249. package/dist/mcp/structuredCommentValidation.test.js +0 -31
  250. package/dist/mcp/structuredDocValidation.test.d.ts +0 -1
  251. package/dist/mcp/structuredDocValidation.test.js +0 -35
  252. package/dist/mcp/toolRegistry.test.d.ts +0 -1
  253. package/dist/mcp/toolRegistry.test.js +0 -34
  254. package/dist/migrations/billingSchemaParity.test.d.ts +0 -1
  255. package/dist/migrations/billingSchemaParity.test.js +0 -160
  256. package/dist/migrations/taskSchemaMigrations.test.d.ts +0 -1
  257. package/dist/migrations/taskSchemaMigrations.test.js +0 -225
  258. package/dist/qaOpen.test.d.ts +0 -1
  259. package/dist/qaOpen.test.js +0 -56
  260. package/dist/releaseVersion.test.d.ts +0 -1
  261. package/dist/releaseVersion.test.js +0 -32
  262. package/dist/runtime/appGates.test.d.ts +0 -1
  263. package/dist/runtime/appGates.test.js +0 -42
  264. package/dist/server/aiProfileAvatarAssets.test.d.ts +0 -1
  265. package/dist/server/aiProfileAvatarAssets.test.js +0 -213
  266. package/dist/server/annotatedAttachmentsRoutes.test.d.ts +0 -1
  267. package/dist/server/annotatedAttachmentsRoutes.test.js +0 -532
  268. package/dist/server/auth.test.d.ts +0 -1
  269. package/dist/server/auth.test.js +0 -131
  270. package/dist/server/buildInfo.test.d.ts +0 -1
  271. package/dist/server/buildInfo.test.js +0 -29
  272. package/dist/server/cors.test.d.ts +0 -1
  273. package/dist/server/cors.test.js +0 -77
  274. package/dist/server/documentReviewRoutes.test.d.ts +0 -1
  275. package/dist/server/documentReviewRoutes.test.js +0 -190
  276. package/dist/server/email.test.d.ts +0 -1
  277. package/dist/server/email.test.js +0 -113
  278. package/dist/server/index.cookieProxy.test.d.ts +0 -1
  279. package/dist/server/index.cookieProxy.test.js +0 -67
  280. package/dist/server/index.rateLimit.test.d.ts +0 -1
  281. package/dist/server/index.rateLimit.test.js +0 -22
  282. package/dist/server/index.test.d.ts +0 -1
  283. package/dist/server/index.test.js +0 -283
  284. package/dist/server/rateLimit.test.d.ts +0 -1
  285. package/dist/server/rateLimit.test.js +0 -107
  286. package/dist/server/realtimeSync.auth.test.d.ts +0 -1
  287. package/dist/server/realtimeSync.auth.test.js +0 -62
  288. package/dist/server/realtimeSync.replay.test.d.ts +0 -1
  289. package/dist/server/realtimeSync.replay.test.js +0 -192
  290. package/dist/server/realtimeSync.workspaceIsolation.test.d.ts +0 -1
  291. package/dist/server/realtimeSync.workspaceIsolation.test.js +0 -101
  292. package/dist/server/routes/billing.test.d.ts +0 -1
  293. package/dist/server/routes/billing.test.js +0 -3515
  294. package/dist/server/routes/shared.test.d.ts +0 -1
  295. package/dist/server/routes/shared.test.js +0 -32
  296. package/dist/server/routes/sync.integration.test.d.ts +0 -1
  297. package/dist/server/routes/sync.integration.test.js +0 -2932
  298. package/dist/server/routes/syncAuxRoutes.test.d.ts +0 -1
  299. package/dist/server/routes/syncAuxRoutes.test.js +0 -158
  300. package/dist/server/routes/syncRouteGuards.test.d.ts +0 -1
  301. package/dist/server/routes/syncRouteGuards.test.js +0 -94
  302. package/dist/server/routes.test.d.ts +0 -1
  303. package/dist/server/routes.test.js +0 -15612
  304. package/dist/server/runtimeMode.test.d.ts +0 -1
  305. package/dist/server/runtimeMode.test.js +0 -26
  306. package/dist/server/securityHeaders.test.d.ts +0 -1
  307. package/dist/server/securityHeaders.test.js +0 -70
  308. package/dist/services/templateEngine.test.d.ts +0 -1
  309. package/dist/services/templateEngine.test.js +0 -150
  310. package/dist/services/templates.test.d.ts +0 -1
  311. package/dist/services/templates.test.js +0 -45
  312. package/dist/services/workflowDocumentFixtures.test.d.ts +0 -1
  313. package/dist/services/workflowDocumentFixtures.test.js +0 -78
  314. package/dist/services/workflowExportMatrix.test.d.ts +0 -1
  315. package/dist/services/workflowExportMatrix.test.js +0 -113
  316. package/dist/services/workflowExportSnapshots.test.d.ts +0 -1
  317. package/dist/services/workflowExportSnapshots.test.js +0 -30
  318. package/dist/services/workflowGeneration.test.d.ts +0 -1
  319. package/dist/services/workflowGeneration.test.js +0 -12
  320. package/dist/services/workflowSimulation.test.d.ts +0 -1
  321. package/dist/services/workflowSimulation.test.js +0 -113
  322. package/dist/services/workflowV2Policy.test.d.ts +0 -1
  323. package/dist/services/workflowV2Policy.test.js +0 -80
  324. package/dist/shared/customTaxonomyLibrary.test.d.ts +0 -1
  325. package/dist/shared/customTaxonomyLibrary.test.js +0 -20
  326. package/dist/shared/passwordPolicy.test.d.ts +0 -1
  327. package/dist/shared/passwordPolicy.test.js +0 -34
  328. package/dist/shared/runtimeContract.test.d.ts +0 -1
  329. package/dist/shared/runtimeContract.test.js +0 -23
  330. package/dist/shared/taxonomyLibrary.test.d.ts +0 -1
  331. package/dist/shared/taxonomyLibrary.test.js +0 -26
  332. package/dist/shared/taxonomyState.test.d.ts +0 -1
  333. package/dist/shared/taxonomyState.test.js +0 -71
  334. package/dist/soak/preflight.cli.d.ts +0 -1
  335. package/dist/soak/preflight.cli.js +0 -28
  336. package/dist/soak/preflight.d.ts +0 -26
  337. package/dist/soak/preflight.js +0 -113
  338. package/dist/soak/preflight.test.d.ts +0 -1
  339. package/dist/soak/preflight.test.js +0 -39
  340. package/dist/storage/objectStorageClient.test.d.ts +0 -1
  341. package/dist/storage/objectStorageClient.test.js +0 -82
  342. package/dist/storage/objectStorageConfig.test.d.ts +0 -1
  343. package/dist/storage/objectStorageConfig.test.js +0 -50
  344. package/dist/storage/postgresAdapter.test.d.ts +0 -1
  345. package/dist/storage/postgresAdapter.test.js +0 -29
  346. package/dist/storage/workspaceAssetStore.test.d.ts +0 -1
  347. package/dist/storage/workspaceAssetStore.test.js +0 -588
  348. package/dist/sync/cloudSyncApi.test.d.ts +0 -1
  349. package/dist/sync/cloudSyncApi.test.js +0 -111
  350. package/dist/sync/collaborationSyncPayload.test.d.ts +0 -1
  351. package/dist/sync/collaborationSyncPayload.test.js +0 -125
  352. package/dist/sync/contentSyncPayload.test.d.ts +0 -1
  353. package/dist/sync/contentSyncPayload.test.js +0 -143
  354. package/dist/sync/encryptionService.test.d.ts +0 -1
  355. package/dist/sync/encryptionService.test.js +0 -52
  356. package/dist/sync/planningSyncPayload.test.d.ts +0 -1
  357. package/dist/sync/planningSyncPayload.test.js +0 -92
  358. package/dist/sync/realtimeFeature.test.d.ts +0 -1
  359. package/dist/sync/realtimeFeature.test.js +0 -30
  360. package/dist/sync/realtimeReconcile.test.d.ts +0 -1
  361. package/dist/sync/realtimeReconcile.test.js +0 -43
  362. package/dist/sync/syncApplyHandlers.test.d.ts +0 -1
  363. package/dist/sync/syncApplyHandlers.test.js +0 -626
  364. package/dist/sync/syncService.test.d.ts +0 -1
  365. package/dist/sync/syncService.test.js +0 -903
  366. package/dist/sync/taskSyncPayload.test.d.ts +0 -1
  367. package/dist/sync/taskSyncPayload.test.js +0 -54
  368. package/dist/sync/workspacePullFeed.test.d.ts +0 -1
  369. package/dist/sync/workspacePullFeed.test.js +0 -438
  370. package/dist/sync/workspaceSyncModel.test.d.ts +0 -1
  371. package/dist/sync/workspaceSyncModel.test.js +0 -1442
  372. package/dist/test/setup.d.ts +0 -1
  373. package/dist/test/setup.js +0 -15
  374. package/dist/ui/assets/documentReferences-BPWp6ce0.js +0 -1
  375. package/dist/ui/assets/index-zvbo2Jse.js +0 -5
  376. package/dist/utils/accountProfileSummaryCache.test.d.ts +0 -1
  377. package/dist/utils/accountProfileSummaryCache.test.js +0 -63
  378. package/dist/utils/annotatedAttachments.test.d.ts +0 -1
  379. package/dist/utils/annotatedAttachments.test.js +0 -108
  380. package/dist/utils/assignees.test.d.ts +0 -1
  381. package/dist/utils/assignees.test.js +0 -25
  382. package/dist/utils/avatarUpload.test.d.ts +0 -1
  383. package/dist/utils/avatarUpload.test.js +0 -40
  384. package/dist/utils/canonicalAssetKind.test.d.ts +0 -1
  385. package/dist/utils/canonicalAssetKind.test.js +0 -24
  386. package/dist/utils/coalescedRefresh.test.d.ts +0 -1
  387. package/dist/utils/coalescedRefresh.test.js +0 -30
  388. package/dist/utils/constants.icons.test.d.ts +0 -1
  389. package/dist/utils/constants.icons.test.js +0 -41
  390. package/dist/utils/planParser.test.d.ts +0 -1
  391. package/dist/utils/planParser.test.js +0 -183
  392. package/dist/utils/planningReferences.test.d.ts +0 -1
  393. package/dist/utils/planningReferences.test.js +0 -17
  394. package/dist/utils/supportContact.test.d.ts +0 -1
  395. package/dist/utils/supportContact.test.js +0 -19
  396. package/dist/utils/syncEventDetails.test.d.ts +0 -1
  397. package/dist/utils/syncEventDetails.test.js +0 -23
  398. package/dist/utils/syncEventPresentation.test.d.ts +0 -1
  399. package/dist/utils/syncEventPresentation.test.js +0 -64
  400. package/dist/utils/syncStatusPresentation.test.d.ts +0 -1
  401. package/dist/utils/syncStatusPresentation.test.js +0 -164
  402. package/dist/utils/taskActivity.test.d.ts +0 -1
  403. package/dist/utils/taskActivity.test.js +0 -218
  404. package/dist/utils/taskDraftDefaults.test.d.ts +0 -1
  405. package/dist/utils/taskDraftDefaults.test.js +0 -34
  406. package/dist/utils/taskDragZones.test.d.ts +0 -1
  407. package/dist/utils/taskDragZones.test.js +0 -14
  408. package/dist/utils/taskNormalization.test.d.ts +0 -1
  409. package/dist/utils/taskNormalization.test.js +0 -158
  410. package/dist/utils/taskSearch.test.d.ts +0 -1
  411. package/dist/utils/taskSearch.test.js +0 -69
  412. package/dist/utils/taskUtils.test.d.ts +0 -1
  413. package/dist/utils/taskUtils.test.js +0 -19
  414. package/dist/utils/taskforceApiClient.test.d.ts +0 -1
  415. package/dist/utils/taskforceApiClient.test.js +0 -44
  416. package/dist/utils/taxonomyFormDefaults.test.d.ts +0 -1
  417. package/dist/utils/taxonomyFormDefaults.test.js +0 -63
  418. package/dist/utils/uiNotice.test.d.ts +0 -1
  419. package/dist/utils/uiNotice.test.js +0 -18
  420. package/dist/utils/workspaceIdentity.test.d.ts +0 -1
  421. package/dist/utils/workspaceIdentity.test.js +0 -61
  422. package/dist/utils/workspaceLifecycle.test.d.ts +0 -1
  423. package/dist/utils/workspaceLifecycle.test.js +0 -64
  424. package/dist/utils/workspaceSyncPresentation.test.d.ts +0 -1
  425. package/dist/utils/workspaceSyncPresentation.test.js +0 -71
  426. package/scripts/bootstrap-playwright-auth.mjs +0 -155
  427. package/scripts/check-cloud-mcp.mjs +0 -83
  428. package/scripts/check-compat-boundaries.mjs +0 -41
  429. package/scripts/check-env.ts +0 -31
  430. package/scripts/check-localization-strings.mjs +0 -49
  431. package/scripts/check-runtime-boundaries.mjs +0 -44
  432. package/scripts/debug-global.mjs +0 -34
  433. package/scripts/debug-login.mjs +0 -32
  434. package/scripts/debug-server.mjs +0 -36
  435. package/scripts/deploy-prod.sh +0 -41
  436. package/scripts/deploy-staging.sh +0 -23
  437. package/scripts/export-sqlite-to-postgres.mjs +0 -123
  438. package/scripts/generate-env-example.ts +0 -8
  439. package/scripts/mcp-stdio-adapter.mjs +0 -160
  440. package/scripts/migrate-task-data-assets.mjs +0 -408
  441. package/scripts/playwright-auth.sh +0 -19
  442. package/scripts/qa-open-lib.mjs +0 -175
  443. package/scripts/qa-open-lib.mjs.d.ts +0 -49
  444. package/scripts/qa-open.mjs +0 -352
  445. package/scripts/release-version-lib.mjs +0 -88
  446. package/scripts/release-version.mjs +0 -72
  447. package/scripts/run-billing-performance-smoke.sh +0 -24
  448. package/scripts/run-dev-proxy.sh +0 -51
  449. package/scripts/run-e2e-realtime.sh +0 -30
  450. package/scripts/run-smoke.sh +0 -35
  451. package/scripts/run-soak.sh +0 -41
  452. package/scripts/test-global.js +0 -143
  453. package/scripts/update-homebrew-formula.sh +0 -108
  454. 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}`);