@taskforcehq/taskforce 0.3.304 → 0.3.306

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 (383) hide show
  1. package/README.md +140 -247
  2. package/dist/Taskforce.module.css +295 -89
  3. package/dist/TaskforceCore.js +378 -111
  4. package/dist/TaskforceCore.test.js +1221 -107
  5. package/dist/assets/fonts/CourierPrime-Bold.woff2 +0 -0
  6. package/dist/assets/fonts/CourierPrime-BoldItalic.woff2 +0 -0
  7. package/dist/assets/fonts/CourierPrime-Italic.woff2 +0 -0
  8. package/dist/assets/fonts/CourierPrime-Regular.woff2 +0 -0
  9. package/dist/assets/fonts/Noir_medium.woff2 +0 -0
  10. package/dist/assets/fonts/Noir_regular.woff2 +0 -0
  11. package/dist/assets/fonts/RussoOne-Regular.woff2 +0 -0
  12. package/dist/assets/fonts/SpecialElite-Regular.woff2 +0 -0
  13. package/dist/compat/workspaceSyncCompat.js +52 -2
  14. package/dist/compat/workspaceSyncCompat.test.js +38 -1
  15. package/dist/components/context/ContextAttachmentManager.d.ts +14 -0
  16. package/dist/components/context/ContextAttachmentManager.js +549 -0
  17. package/dist/components/features/AgentsModule.d.ts +10 -1
  18. package/dist/components/features/AgentsModule.js +260 -15
  19. package/dist/components/features/AgentsModule.test.js +255 -5
  20. package/dist/components/features/DocumentIndex.d.ts +1 -1
  21. package/dist/components/features/DocumentIndex.js +1 -1
  22. package/dist/components/features/DocumentViewer.d.ts +6 -2
  23. package/dist/components/features/DocumentViewer.js +90 -10
  24. package/dist/components/features/DocumentWorkspace.d.ts +5 -22
  25. package/dist/components/features/DocumentWorkspace.js +12 -155
  26. package/dist/components/features/DocumentWorkspace.test.js +226 -6
  27. package/dist/components/features/TaskSettings.js +29 -3
  28. package/dist/components/features/TaskSettings.test.js +42 -1
  29. package/dist/components/features/documentWorkspaceModel.d.ts +24 -0
  30. package/dist/components/features/documentWorkspaceModel.js +57 -0
  31. package/dist/components/features/useDocumentWorkspaceController.d.ts +34 -0
  32. package/dist/components/features/useDocumentWorkspaceController.js +113 -0
  33. package/dist/components/task/TaskCard.js +19 -28
  34. package/dist/components/task/TaskCard.test.js +38 -3
  35. package/dist/components/task/TaskContextUpload.js +4 -526
  36. package/dist/components/task/TaskForm.d.ts +8 -8
  37. package/dist/components/task/TaskForm.js +362 -230
  38. package/dist/components/task/TaskForm.test.js +558 -381
  39. package/dist/components/task/TaskKanban.d.ts +2 -1
  40. package/dist/components/task/TaskKanban.js +96 -14
  41. package/dist/components/task/TaskKanban.test.js +36 -0
  42. package/dist/components/ui/EditableAvatarButton.d.ts +18 -0
  43. package/dist/components/ui/EditableAvatarButton.js +18 -0
  44. package/dist/components/views/PlanComparisonPage.d.ts +9 -1
  45. package/dist/components/views/PlanComparisonPage.js +70 -17
  46. package/dist/components/views/PlanComparisonPage.test.js +289 -41
  47. package/dist/components/views/PlansPage.js +239 -106
  48. package/dist/components/views/PlansPage.test.js +593 -42
  49. package/dist/components/views/StandaloneLayout.js +310 -554
  50. package/dist/components/views/panels/FilterToolbar.test.js +6 -4
  51. package/dist/components/views/panels/PlanningDrawer.d.ts +8 -1
  52. package/dist/components/views/panels/PlanningDrawer.js +18 -11
  53. package/dist/components/views/panels/PlanningDrawer.test.d.ts +1 -0
  54. package/dist/components/views/panels/PlanningDrawer.test.js +141 -0
  55. package/dist/components/views/planningScope.d.ts +20 -0
  56. package/dist/components/views/planningScope.js +25 -0
  57. package/dist/components/views/planningScope.test.d.ts +1 -0
  58. package/dist/components/views/planningScope.test.js +60 -0
  59. package/dist/components/views/standalone/modals/AccountHubModal.d.ts +27 -14
  60. package/dist/components/views/standalone/modals/AccountHubModal.js +87 -15
  61. package/dist/components/views/standalone/modals/AccountHubModal.test.js +42 -2
  62. package/dist/components/views/standalone/modals/AvatarImageManagerModal.d.ts +20 -0
  63. package/dist/components/views/standalone/modals/AvatarImageManagerModal.js +127 -0
  64. package/dist/components/views/standalone/modals/EditProfileModal.d.ts +2 -9
  65. package/dist/components/views/standalone/modals/EditProfileModal.js +3 -2
  66. package/dist/components/views/standalone/modals/SyncEnableWarningModal.d.ts +9 -0
  67. package/dist/components/views/standalone/modals/SyncEnableWarningModal.js +6 -0
  68. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.d.ts +1 -0
  69. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.js +24 -0
  70. package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +2 -1
  71. package/dist/components/views/standalone/modals/SyncStatusModal.js +2 -2
  72. package/dist/config/envSchema.js +1 -1
  73. package/dist/core/AiProfileService.d.ts +45 -3
  74. package/dist/core/AiProfileService.js +774 -63
  75. package/dist/core/AiProfileService.test.js +22 -2
  76. package/dist/core/AiProfiles.test.js +761 -2
  77. package/dist/core/AttachmentLinkService.js +57 -15
  78. package/dist/core/AuthIdentityService.d.ts +107 -0
  79. package/dist/core/AuthIdentityService.js +284 -0
  80. package/dist/core/AuthTokenService.d.ts +4 -0
  81. package/dist/core/AuthTokenService.js +34 -6
  82. package/dist/core/AuthTokenService.test.d.ts +1 -0
  83. package/dist/core/AuthTokenService.test.js +78 -0
  84. package/dist/core/EntitlementsPolicy.test.js +77 -15
  85. package/dist/core/GlobalSettingsService.js +115 -6
  86. package/dist/core/PlanEntitlementService.d.ts +30 -3
  87. package/dist/core/PlanEntitlementService.js +454 -93
  88. package/dist/core/PlanFeatureCatalog.test.d.ts +1 -0
  89. package/dist/core/PlanFeatureCatalog.test.js +84 -0
  90. package/dist/core/PlanVersionPolicy.test.js +54 -28
  91. package/dist/core/PlanningEntities.test.js +52 -0
  92. package/dist/core/SignupMonetizationSettings.test.js +241 -44
  93. package/dist/core/SyncReconciliationService.js +2 -65
  94. package/dist/core/SystemAdmin.test.js +244 -88
  95. package/dist/core/TaskAttachmentsCanonical.test.js +51 -1
  96. package/dist/core/TaskTaxonomyValidation.test.js +53 -0
  97. package/dist/core/Taskforce.d.ts +228 -14
  98. package/dist/core/Taskforce.js +814 -201
  99. package/dist/core/Taskforce.listTasksSlim.test.d.ts +1 -0
  100. package/dist/core/Taskforce.listTasksSlim.test.js +91 -0
  101. package/dist/core/UserProfileAvatarDrafts.test.js +30 -3
  102. package/dist/core/WorkspaceLifecycleService.js +0 -5
  103. package/dist/core/WorkspacePermissions.test.js +25 -1
  104. package/dist/core/WorkspacePlanMode.test.js +128 -27
  105. package/dist/core/shared.d.ts +3 -1
  106. package/dist/core/shared.js +16 -1
  107. package/dist/core/types.d.ts +68 -2
  108. package/dist/hooks/auth/useTaskforceAuthBootstrap.js +26 -1
  109. package/dist/hooks/sync/auth.js +3 -1
  110. package/dist/hooks/sync/bootstrap.js +2 -0
  111. package/dist/hooks/sync/controlPlane.d.ts +37 -0
  112. package/dist/hooks/sync/controlPlane.js +78 -0
  113. package/dist/hooks/sync/controlPlane.test.d.ts +1 -0
  114. package/dist/hooks/sync/controlPlane.test.js +121 -0
  115. package/dist/hooks/sync/lifecyclePolicy.d.ts +45 -0
  116. package/dist/hooks/sync/lifecyclePolicy.js +93 -0
  117. package/dist/hooks/sync/lifecyclePolicy.test.d.ts +1 -0
  118. package/dist/hooks/sync/lifecyclePolicy.test.js +124 -0
  119. package/dist/hooks/sync/orchestratorShared.d.ts +10 -1
  120. package/dist/hooks/sync/orchestratorShared.js +68 -47
  121. package/dist/hooks/sync/orchestratorShared.test.js +50 -1
  122. package/dist/hooks/sync/pullLifecycle.d.ts +31 -0
  123. package/dist/hooks/sync/pullLifecycle.js +24 -0
  124. package/dist/hooks/sync/pullLifecycle.test.d.ts +1 -0
  125. package/dist/hooks/sync/pullLifecycle.test.js +80 -0
  126. package/dist/hooks/sync/recovery.d.ts +16 -2
  127. package/dist/hooks/sync/recovery.js +171 -53
  128. package/dist/hooks/sync/recovery.test.d.ts +1 -0
  129. package/dist/hooks/sync/recovery.test.js +292 -0
  130. package/dist/hooks/sync/transfers.d.ts +16 -3
  131. package/dist/hooks/sync/transfers.js +186 -65
  132. package/dist/hooks/sync/transfers.test.d.ts +1 -0
  133. package/dist/hooks/sync/transfers.test.js +396 -0
  134. package/dist/hooks/sync/useRecentSyncEvents.d.ts +21 -0
  135. package/dist/hooks/sync/useRecentSyncEvents.js +92 -0
  136. package/dist/hooks/sync/useRecentSyncEvents.test.d.ts +1 -0
  137. package/dist/hooks/sync/useRecentSyncEvents.test.js +124 -0
  138. package/dist/hooks/sync/useSyncStatusActions.d.ts +30 -0
  139. package/dist/hooks/sync/useSyncStatusActions.js +88 -0
  140. package/dist/hooks/sync/useSyncStatusActions.test.d.ts +1 -0
  141. package/dist/hooks/sync/useSyncStatusActions.test.js +133 -0
  142. package/dist/hooks/sync/useSyncStatusControls.d.ts +25 -0
  143. package/dist/hooks/sync/useSyncStatusControls.js +60 -0
  144. package/dist/hooks/sync/useSyncStatusControls.test.d.ts +1 -0
  145. package/dist/hooks/sync/useSyncStatusControls.test.js +88 -0
  146. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.js +12 -0
  147. package/dist/hooks/useSyncOrchestrator.d.ts +16 -6
  148. package/dist/hooks/useSyncOrchestrator.js +424 -175
  149. package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +487 -10
  150. package/dist/hooks/useTaskData.js +8 -3
  151. package/dist/hooks/useTaskData.test.js +45 -0
  152. package/dist/hooks/useTaskMutations.d.ts +2 -1
  153. package/dist/hooks/useTaskMutations.js +12 -1
  154. package/dist/hooks/useTaskMutations.test.js +30 -1
  155. package/dist/hooks/useTaskforce.d.ts +65 -4
  156. package/dist/hooks/useTaskforce.js +564 -243
  157. package/dist/hooks/useTaskforce.runtime-routing.test.d.ts +1 -0
  158. package/dist/hooks/useTaskforce.runtime-routing.test.js +152 -0
  159. package/dist/hooks/useTaskforce.sync-behavior.test.js +2454 -208
  160. package/dist/hooks/useWorkspaceSyncController.d.ts +4 -1
  161. package/dist/hooks/useWorkspaceSyncController.js +17 -2
  162. package/dist/hooks/useWorkspaceSyncController.test.js +1 -0
  163. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.d.ts +16 -0
  164. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +316 -35
  165. package/dist/localization/locales/en-US.d.ts +0 -1
  166. package/dist/localization/locales/en-US.js +0 -1
  167. package/dist/localization/locales/es-419.js +0 -1
  168. package/dist/localization/locales/pt-BR.js +0 -1
  169. package/dist/mcp/adminWorkspaceRegistrar.d.ts +2 -0
  170. package/dist/mcp/adminWorkspaceRegistrar.js +154 -0
  171. package/dist/mcp/collaborationRegistrar.d.ts +2 -0
  172. package/dist/mcp/collaborationRegistrar.js +71 -0
  173. package/dist/mcp/documentAssetRegistrar.d.ts +2 -0
  174. package/dist/mcp/documentAssetRegistrar.js +346 -0
  175. package/dist/mcp/runtime.d.ts +2 -0
  176. package/dist/mcp/runtime.js +2433 -3534
  177. package/dist/mcp/runtime.test.js +440 -2
  178. package/dist/mcp/taskPlanningRegistrar.d.ts +2 -0
  179. package/dist/mcp/taskPlanningRegistrar.js +418 -0
  180. package/dist/mcp/toolCatalog.d.ts +35 -0
  181. package/dist/mcp/toolCatalog.js +3 -0
  182. package/dist/migrations/taskSchemaMigrations.d.ts +1 -1
  183. package/dist/migrations/taskSchemaMigrations.js +171 -61
  184. package/dist/migrations/taskSchemaMigrations.test.js +15 -0
  185. package/dist/resources/templates/workflow-sources/workflowDocs.mjs +6 -6
  186. package/dist/resources/templates/workflows/collaborate.yaml +1 -1
  187. package/dist/resources/templates/workflows/evaluate.yaml +2 -2
  188. package/dist/resources/templates/workflows/plan.yaml +1 -1
  189. package/dist/resources/templates/workflows/review.yaml +2 -2
  190. package/dist/server/annotatedAttachmentsRoutes.test.js +3 -3
  191. package/dist/server/auth/providers/apple.d.ts +33 -0
  192. package/dist/server/auth/providers/apple.js +82 -0
  193. package/dist/server/auth/providers/appleClientSecret.d.ts +37 -0
  194. package/dist/server/auth/providers/appleClientSecret.js +65 -0
  195. package/dist/server/auth/providers/github.d.ts +26 -0
  196. package/dist/server/auth/providers/github.js +86 -0
  197. package/dist/server/auth/providers/google.d.ts +21 -0
  198. package/dist/server/auth/providers/google.js +56 -0
  199. package/dist/server/auth/providers/types.d.ts +21 -0
  200. package/dist/server/auth/providers/types.js +1 -0
  201. package/dist/server/auth.d.ts +2 -0
  202. package/dist/server/auth.js +6 -3
  203. package/dist/server/documentReviewRoutes.test.js +36 -3
  204. package/dist/server/index.cookieProxy.test.js +1 -0
  205. package/dist/server/index.d.ts +12 -0
  206. package/dist/server/index.js +120 -9
  207. package/dist/server/index.rateLimit.test.js +3 -0
  208. package/dist/server/index.test.js +106 -3
  209. package/dist/server/routes/admin.d.ts +4 -5
  210. package/dist/server/routes/admin.js +410 -80
  211. package/dist/server/routes/annotatedAttachments.d.ts +1 -1
  212. package/dist/server/routes/annotatedAttachments.js +1 -1
  213. package/dist/server/routes/auth.d.ts +16 -6
  214. package/dist/server/routes/auth.js +1015 -118
  215. package/dist/server/routes/authSupport.d.ts +30 -0
  216. package/dist/server/routes/authSupport.js +81 -0
  217. package/dist/server/routes/billing.d.ts +1 -1
  218. package/dist/server/routes/billing.js +276 -34
  219. package/dist/server/routes/billing.test.js +760 -52
  220. package/dist/server/routes/documentReviews.d.ts +1 -1
  221. package/dist/server/routes/documentReviews.js +1 -1
  222. package/dist/server/routes/documents.d.ts +5 -2
  223. package/dist/server/routes/documents.js +242 -74
  224. package/dist/server/routes/primitives.d.ts +11 -0
  225. package/dist/server/routes/primitives.js +73 -0
  226. package/dist/server/routes/resources.d.ts +1 -1
  227. package/dist/server/routes/resources.js +1 -1
  228. package/dist/server/routes/shared.d.ts +29 -3
  229. package/dist/server/routes/shared.js +69 -4
  230. package/dist/server/routes/sync.d.ts +1 -1
  231. package/dist/server/routes/sync.integration.test.js +437 -39
  232. package/dist/server/routes/sync.js +62 -606
  233. package/dist/server/routes/syncAuxRoutes.d.ts +15 -0
  234. package/dist/server/routes/syncAuxRoutes.js +91 -0
  235. package/dist/server/routes/syncAuxRoutes.test.d.ts +1 -0
  236. package/dist/server/routes/syncAuxRoutes.test.js +158 -0
  237. package/dist/server/routes/syncPullApplyRoutes.d.ts +36 -0
  238. package/dist/server/routes/syncPullApplyRoutes.js +204 -0
  239. package/dist/server/routes/syncPushRoutes.d.ts +24 -0
  240. package/dist/server/routes/syncPushRoutes.js +212 -0
  241. package/dist/server/routes/syncRouteGuards.d.ts +36 -0
  242. package/dist/server/routes/syncRouteGuards.js +67 -0
  243. package/dist/server/routes/syncRouteGuards.test.d.ts +1 -0
  244. package/dist/server/routes/syncRouteGuards.test.js +94 -0
  245. package/dist/server/routes/syncRouteTypes.d.ts +13 -0
  246. package/dist/server/routes/syncRouteTypes.js +1 -0
  247. package/dist/server/routes/syncSnapshotRoutes.d.ts +66 -0
  248. package/dist/server/routes/syncSnapshotRoutes.js +180 -0
  249. package/dist/server/routes/tasks.d.ts +1 -1
  250. package/dist/server/routes/tasks.js +44 -2
  251. package/dist/server/routes/workspaces.d.ts +1 -1
  252. package/dist/server/routes/workspaces.js +37 -6
  253. package/dist/server/routes.d.ts +2 -9
  254. package/dist/server/routes.js +136 -165
  255. package/dist/server/routes.test.js +2457 -162
  256. package/dist/services/workflowExportSnapshots.test.js +2 -0
  257. package/dist/shared/aiProfileSeatScope.d.ts +5 -0
  258. package/dist/shared/aiProfileSeatScope.js +21 -0
  259. package/dist/shared/passwordPolicy.d.ts +13 -0
  260. package/dist/shared/passwordPolicy.js +84 -0
  261. package/dist/shared/passwordPolicy.test.d.ts +1 -0
  262. package/dist/shared/passwordPolicy.test.js +34 -0
  263. package/dist/storage/workspaceAssetStore.d.ts +15 -3
  264. package/dist/storage/workspaceAssetStore.js +132 -44
  265. package/dist/storage/workspaceAssetStore.test.js +93 -6
  266. package/dist/styles/fonts.css +70 -0
  267. package/dist/sync/collaborationSyncPayload.d.ts +6 -1
  268. package/dist/sync/collaborationSyncPayload.js +17 -11
  269. package/dist/sync/collaborationSyncPayload.test.js +13 -1
  270. package/dist/sync/contentSyncState.d.ts +4 -8
  271. package/dist/sync/contentSyncState.js +33 -77
  272. package/dist/sync/syncApplyHandlers.d.ts +7 -0
  273. package/dist/sync/syncApplyHandlers.js +28 -13
  274. package/dist/sync/syncApplyHandlers.test.js +72 -3
  275. package/dist/sync/syncFieldSemantics.d.ts +12 -0
  276. package/dist/sync/syncFieldSemantics.js +55 -0
  277. package/dist/sync/syncResourceAdapters.d.ts +44 -0
  278. package/dist/sync/syncResourceAdapters.js +77 -0
  279. package/dist/sync/syncService.d.ts +6 -0
  280. package/dist/sync/syncService.js +60 -0
  281. package/dist/sync/syncService.test.js +71 -3
  282. package/dist/sync/taskSyncChangeKey.d.ts +2 -0
  283. package/dist/sync/taskSyncChangeKey.js +143 -0
  284. package/dist/sync/taskSyncPayload.js +3 -8
  285. package/dist/sync/workspacePullFeed.js +4 -3
  286. package/dist/sync/workspacePullFeed.test.js +43 -0
  287. package/dist/sync/workspaceRepair.js +5 -2
  288. package/dist/sync/workspaceSyncModel.d.ts +48 -0
  289. package/dist/sync/workspaceSyncModel.js +195 -31
  290. package/dist/sync/workspaceSyncModel.test.js +325 -12
  291. package/dist/sync/workspaceSyncState.d.ts +19 -0
  292. package/dist/sync/workspaceSyncState.js +3 -1
  293. package/dist/sync/workspaceSyncSurface.js +3 -8
  294. package/dist/types.d.ts +17 -0
  295. package/dist/ui/assets/AgentsModule-DrLawwNl.js +1 -0
  296. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-BlS-cqnl.js → AnnotatedAttachmentWorkspace-Z9_whf7F.js} +1 -1
  297. package/dist/ui/assets/CourierPrime-Bold-BuLj_dpw.woff2 +0 -0
  298. package/dist/ui/assets/CourierPrime-BoldItalic-BrK2pUkZ.woff2 +0 -0
  299. package/dist/ui/assets/CourierPrime-Italic-DFUZK5Ey.woff2 +0 -0
  300. package/dist/ui/assets/CourierPrime-Regular-BsKphzVf.woff2 +0 -0
  301. package/dist/ui/assets/DocumentWorkspace-B03MaSkw.js +252 -0
  302. package/dist/ui/assets/DocumentWorkspace-Dhdso07p.css +1 -0
  303. package/dist/ui/assets/{InitiativesModule-BjR6iBf9.js → InitiativesModule-9E6ParrY.js} +1 -1
  304. package/dist/ui/assets/Noir_medium-bxQwKGzB.woff2 +0 -0
  305. package/dist/ui/assets/Noir_regular-ojf2kxlG.woff2 +0 -0
  306. package/dist/ui/assets/PlansPage-CvfnMiWq.css +1 -0
  307. package/dist/ui/assets/PlansPage-DRXscYxH.js +1 -0
  308. package/dist/ui/assets/RussoOne-Regular-Cu_qq_qC.woff2 +0 -0
  309. package/dist/ui/assets/SpecialElite-Regular-Di6gSvAS.woff2 +0 -0
  310. package/dist/ui/assets/TaskSettings-DZX4jk7e.js +9 -0
  311. package/dist/ui/assets/{WorkflowsModule-DnFqdUME.js → WorkflowsModule-BA7jcEpH.js} +1 -1
  312. package/dist/ui/assets/index-9eT8e0Lu.css +1 -0
  313. package/dist/ui/assets/index-C6k75jr8.js +6 -0
  314. package/dist/ui/assets/{vendor-icons-I7ZwG1z_.js → vendor-icons-DuEd_65c.js} +1 -1
  315. package/dist/ui/fonts/CourierPrime-Bold.ttf +0 -0
  316. package/dist/ui/fonts/CourierPrime-Bold.woff2 +0 -0
  317. package/dist/ui/fonts/CourierPrime-BoldItalic.ttf +0 -0
  318. package/dist/ui/fonts/CourierPrime-BoldItalic.woff2 +0 -0
  319. package/dist/ui/fonts/CourierPrime-Italic.ttf +0 -0
  320. package/dist/ui/fonts/CourierPrime-Italic.woff2 +0 -0
  321. package/dist/ui/fonts/CourierPrime-Regular.ttf +0 -0
  322. package/dist/ui/fonts/CourierPrime-Regular.woff2 +0 -0
  323. package/dist/ui/fonts/Noir_medium.otf +0 -0
  324. package/dist/ui/fonts/Noir_medium.woff2 +0 -0
  325. package/dist/ui/fonts/Noir_regular.otf +0 -0
  326. package/dist/ui/fonts/Noir_regular.woff2 +0 -0
  327. package/dist/ui/fonts/RussoOne-Regular.woff2 +0 -0
  328. package/dist/ui/fonts/SpecialElite-Regular.ttf +0 -0
  329. package/dist/ui/fonts/SpecialElite-Regular.woff2 +0 -0
  330. package/dist/ui/index.html +3 -3
  331. package/dist/utils/accountProfileSummaryCache.d.ts +5 -0
  332. package/dist/utils/assignees.d.ts +2 -0
  333. package/dist/utils/assignees.js +2 -0
  334. package/dist/utils/avatarUpload.d.ts +27 -0
  335. package/dist/utils/avatarUpload.js +132 -0
  336. package/dist/utils/avatarUpload.test.d.ts +1 -0
  337. package/dist/utils/avatarUpload.test.js +40 -0
  338. package/dist/utils/bootstrapTrace.d.ts +7 -0
  339. package/dist/utils/bootstrapTrace.js +29 -0
  340. package/dist/utils/commercialLifecyclePresentation.d.ts +19 -0
  341. package/dist/utils/commercialLifecyclePresentation.js +199 -0
  342. package/dist/utils/contextAssetEvents.d.ts +2 -0
  343. package/dist/utils/syncEventDetails.d.ts +3 -0
  344. package/dist/utils/syncEventDetails.js +64 -0
  345. package/dist/utils/syncEventDetails.test.d.ts +1 -0
  346. package/dist/utils/syncEventDetails.test.js +23 -0
  347. package/dist/utils/syncEventPresentation.d.ts +15 -0
  348. package/dist/utils/syncEventPresentation.js +129 -0
  349. package/dist/utils/syncEventPresentation.test.d.ts +1 -0
  350. package/dist/utils/syncEventPresentation.test.js +64 -0
  351. package/dist/utils/syncStatusPresentation.d.ts +72 -0
  352. package/dist/utils/syncStatusPresentation.js +217 -0
  353. package/dist/utils/syncStatusPresentation.test.d.ts +1 -0
  354. package/dist/utils/syncStatusPresentation.test.js +164 -0
  355. package/dist/utils/taskActivity.d.ts +2 -0
  356. package/dist/utils/taskActivity.js +228 -22
  357. package/dist/utils/taskActivity.test.js +119 -8
  358. package/dist/utils/workspaceSyncPresentation.d.ts +4 -0
  359. package/dist/utils/workspaceSyncPresentation.js +68 -2
  360. package/dist/utils/workspaceSyncPresentation.test.js +36 -1
  361. package/package.json +10 -2
  362. package/scripts/check-cloud-mcp.mjs +83 -0
  363. package/scripts/export-sqlite-to-postgres.mjs +7 -9
  364. package/scripts/playwright-auth.sh +5 -1
  365. package/scripts/run-billing-performance-smoke.sh +24 -0
  366. package/scripts/run-e2e-realtime.sh +17 -3
  367. package/scripts/run-smoke.sh +17 -5
  368. package/scripts/run-soak.sh +17 -5
  369. package/src/resources/templates/workflow-sources/workflowDocs.mjs +6 -6
  370. package/src/resources/templates/workflows/collaborate.yaml +1 -1
  371. package/src/resources/templates/workflows/evaluate.yaml +2 -2
  372. package/src/resources/templates/workflows/plan.yaml +1 -1
  373. package/src/resources/templates/workflows/review.yaml +2 -2
  374. package/dist/ui/assets/AgentsModule-BLWVbuKP.js +0 -1
  375. package/dist/ui/assets/DocumentWorkspace-BH_6DF6x.js +0 -250
  376. package/dist/ui/assets/DocumentWorkspace-C_8T8oz-.css +0 -1
  377. package/dist/ui/assets/PlansPage-C2dd2n1X.css +0 -1
  378. package/dist/ui/assets/PlansPage-CSDQ4sLa.js +0 -1
  379. package/dist/ui/assets/RussoOne-Regular-C3BxZIj7.ttf +0 -0
  380. package/dist/ui/assets/TaskSettings-CEDy34Jo.js +0 -9
  381. package/dist/ui/assets/index-DXUdtH1B.js +0 -6
  382. package/dist/ui/assets/index-Ii0B0rTO.css +0 -1
  383. package/scripts/migrate-planning-model.ts +0 -233
package/README.md CHANGED
@@ -1,291 +1,184 @@
1
1
  # Taskforce
2
2
 
3
- <p align="center">
4
- <img src="https://img.shields.io/npm/v/%40taskforcehq%2Ftaskforce?style=for-the-badge&color=8b5cf6" alt="NPM Version" />
5
- <img src="https://img.shields.io/npm/l/%40taskforcehq%2Ftaskforce?style=for-the-badge&color=14b8a6" alt="License" />
6
- <img src="https://img.shields.io/badge/Status-Beta-amber?style=for-the-badge" alt="Status" />
7
- <img src="https://img.shields.io/badge/Powered%20By-Vite-646CFF?style=for-the-badge&logo=vite" alt="Powered by Vite" />
8
- </p>
9
-
10
- <h3 align="center">The High-Bandwidth Collaborative Synapse for AI-Developer Pairs</h3>
11
-
12
- ---
13
-
14
- > **Beta Release:** Taskforce is under active development. For the latest experimental features, use `npm i -g @taskforcehq/taskforce@beta`.
15
- > **Development Tooling:** This is strictly a development-time tool. It is designed to automatically **not render** in production environments to ensure zero overhead.
16
-
17
- Taskforce is more than just a task manager; it's a **contextual bridge**. In the age of AI-assisted coding, the gap between "what needs to be done" and "how it was implemented" can grow exponentially.
18
-
19
- Taskforce bridges this gap by providing a persistent, AI-accessible layer of intent that sits directly atop your live application during development. It transforms ephemeral chat history into structured project state.
20
-
21
- ## Key Features
22
-
23
- - 📍 **Intelligent Context Capture**: Automatically tracks URLs, timestamps, and contextual metadata. Screenshots can be attached directly to tasks for visual debugging.
24
- - ⚡ **Model Context Protocol (MCP)**: Built-in MCP server allows AI agents (like Claude) to read from and write to your project's task nexus with full awareness of your workspace.
25
- - 🎨 **Premium Visual Engine**: Hand-crafted Light, Dark, and Midnight themes with a sophisticated token-based color system.
26
- - ⌨️ **Quick-Access Flow**: Configurable global hotkeys (`Alt+T` default) to toggle the nexus without breaking your flow.
27
- - 🤝 **Collaborative Loop**: AI-friendly JSON storage enables "staged" updates—AI suggests changes, and you approve the final state.
3
+ Taskforce is a task management system for humans working with AI.
4
+
5
+ It combines structured task tracking, planning layers, document and image review workflows, and built-in MCP access so AI collaborators can participate in the same operational system instead of living in a separate chat transcript.
6
+
7
+ Taskforce is currently in beta and under active development.
8
+
9
+ ## What Taskforce includes today
10
+
11
+ ### Core task management
12
+ - Tasks with title, description, status, priority, type, category, assignee, due date, scheduled date, and checklist support
13
+ - Custom workspace taxonomy for categories, types, priorities, approaches, and complexity
14
+ - Task comments and task attachments
15
+ - Schedule board for planning work by day
16
+ - Archive and restore flows for completed or cancelled work
17
+
18
+ ### Planning model
19
+ - Initiatives, workstreams, tasks, and checklists
20
+ - Workstream and initiative assignment for tasks
21
+ - Initiative templates for reusable planning structures such as launch, migration, or incident work
22
+
23
+ ### AI collaboration
24
+ - Built-in MCP support for local and cloud usage
25
+ - AI profile resolution and task ownership for agent collaborators
26
+ - MCP tools for reading and updating tasks, planning entities, documents, image reviews, schedules, and attachments
27
+ - Local MCP configuration for local clients such as Codex, Claude Code CLI, and Gemini CLI
28
+ - Cloud MCP token flow for remote clients
29
+
30
+ ### Document and image review
31
+ - Canonical document assets with document review sessions and threaded review comments
32
+ - Image Notes for visual review with saved annotation sessions and markers
33
+ - MCP helper flows for document review and image review
34
+
35
+ ### Runtime and deployment model
36
+ - Local runtime and cloud runtime support
37
+ - Separate app, site, and admin surfaces in the repo
38
+ - Auth, billing, and account flows for the hosted product
39
+ - Workspace sync and cloud/local runtime routing infrastructure
40
+
41
+ ## What is intentionally not part of the product right now
42
+
43
+ These exist in the codebase in some form, but should not be treated as current product surface area.
44
+
45
+ - **Workflow editor**: currently disabled and should not be presented as an active feature
46
+ - **Embedded widget/in-app overlay version**: not part of the product right now, not tested recently, and likely to be deprecated
47
+
48
+ The README below reflects the product that is actually safe to describe today.
49
+
50
+ ## Product surfaces
51
+
52
+ - `apps/app` - the main Taskforce application
53
+ - `apps/site` - the public website / marketing surface
54
+ - `apps/admin` - the admin surface
55
+
56
+ ## Repository structure
57
+
58
+ ```text
59
+ apps/
60
+ app/ Main product app
61
+ site/ Public website
62
+ admin/ Admin surface
63
+ src/
64
+ components/ UI components and product modules
65
+ core/ Core application logic
66
+ server/ Server routes and runtime logic
67
+ mcp/ MCP runtime and tool registry
68
+ sync/ Sync model and transfer logic
69
+ storage/ Persistence and asset storage
70
+ tests/
71
+ e2e/ Playwright realtime and interactive browser scenarios
72
+ soak/ Playwright soak and endurance scenarios
73
+ ```
28
74
 
29
- ---
75
+ Most fast regression coverage is colocated beside the code under `src/` and `apps/` as `*.test.ts` and `*.test.tsx` files.
30
76
 
31
- ## 🛠️ Getting Started
77
+ ## Getting started
32
78
 
33
- ### Installation
79
+ ### Prerequisites
80
+ - Node.js 20+
81
+ - npm
34
82
 
35
- Recommendation: Install **globally** to use the CLI and MCP server across any project:
83
+ ### Install dependencies
36
84
 
37
85
  ```bash
38
- npm i -g @taskforcehq/taskforce
86
+ npm ci
39
87
  ```
40
88
 
41
- #### 🧪 Trying the Latest Unstable Features
42
- If you want to test the latest untested/beta version (e.g., `v0.3.13-beta.0`):
89
+ ### Run the main app locally
43
90
 
44
91
  ```bash
45
- npm i -g @taskforcehq/taskforce@beta
92
+ npm run dev
46
93
  ```
47
94
 
48
- Taskforce is installed globally for all supported usage patterns:
95
+ If you need the runtime-oriented local flow used by the product rather than simple frontend dev mode, use the repo scripts documented in `package.json` and the active docs under `docs/reference/` and `docs/runbooks/`.
96
+
97
+ ### Build
49
98
 
50
99
  ```bash
51
- npm i -g @taskforcehq/taskforce
100
+ npm run build
52
101
  ```
53
102
 
54
- *Note: Taskforce includes a dashboard server, so you can use it with ANY framework (Next.js, Angular, Python, etc.) without needing Vite config.*
55
-
56
- ### Database Backend (Preparation)
57
-
58
- Taskforce currently runs on SQLite by default. Backend selection is scaffolded:
59
-
60
- - `TASKFORCE_DB_PROVIDER=sqlite` (default)
61
- - `TASKFORCE_DB_PROVIDER=postgres` (requires `TASKFORCE_DATABASE_URL`)
62
- - `TASKFORCE_TENANT_ID=default` (optional; enables tenant scoping groundwork)
63
-
64
- Readiness endpoint:
65
-
66
- - `GET /api/taskforce/health` returns API + database health state.
67
-
68
- Migration prep utilities:
69
-
70
- - Postgres schema: `src/migrations/postgres/001_init.sql`
71
- - SQLite export script: `npm run db:export:postgres` (writes `.taskforce/postgres-bootstrap.sql` by default)
103
+ ## MCP
72
104
 
73
- ### Cloud App Endpoint Configuration
105
+ Taskforce includes built-in MCP support so AI clients can operate directly against the workspace.
74
106
 
75
- Canonical selectors:
76
-
77
- - `TASKFORCE_RUNTIME_MODE=local|cloud`
78
- - `TASKFORCE_CLOUD_ENVIRONMENT=production|staging|performance`
79
-
80
- For cloud deployments where the frontend host differs from the API/websocket host, set:
81
-
82
- - `VITE_TASKFORCE_API_BASE_URL` (example: `https://app-api.taskforcehq.ai`)
83
- - `VITE_TASKFORCE_WS_BASE_URL` (optional; defaults to `VITE_TASKFORCE_API_BASE_URL`)
84
-
85
- These `VITE_TASKFORCE_*` variables are endpoint overrides. They are still supported, but `TASKFORCE_CLOUD_ENVIRONMENT` is now the canonical cloud target selector.
86
-
87
- For local runtime with cloud-only authentication (while keeping local SQLite task APIs):
88
-
89
- - The standalone app is configured to use `https://app.taskforcehq.ai` for cloud auth by default (see `apps/app/main.tsx`).
90
- - No environment-variable setup is required for end users of the packaged local app.
91
-
92
- Behavior:
107
+ ### Local MCP
108
+ Use Local MCP for local stdio-based clients. This is the intended path for tools such as:
109
+ - Codex
110
+ - Claude Code CLI
111
+ - Gemini CLI
93
112
 
94
- - `/api/taskforce/*` requests are routed to `VITE_TASKFORCE_API_BASE_URL` when set.
95
- - websocket connects to `${VITE_TASKFORCE_WS_BASE_URL}/taskforce-ws` using `wss` on HTTPS pages.
113
+ Local MCP does not require a cloud token.
96
114
 
97
- ### API Auth Gate (Cloud Hardening)
115
+ ### Cloud MCP
116
+ Use Cloud MCP for hosted remote clients. Cloud MCP uses token-based access and the hosted MCP endpoint.
98
117
 
99
- To protect API routes at the application layer (in addition to Cloudflare Access), configure:
118
+ ## Major product capabilities
100
119
 
101
- - `TASKFORCE_RUNTIME_MODE=cloud` (recommended for hosted app; `local` for standalone/local usage)
102
- - `TASKFORCE_CLOUD_ENVIRONMENT=production|staging|performance`
103
- - `TASKFORCE_AUTH_ENABLED=true`
104
- - `TASKFORCE_AUTH_SESSION_SECRET=<strong-random-secret>`
105
- - `TASKFORCE_EMAIL_PROVIDER=console|resend|google-workspace` (default: `console`)
106
- - `TASKFORCE_EMAIL_FROM='Taskforce <no-reply@yourdomain.com>'`
107
- - `TASKFORCE_EMAIL_REPLY_TO='support@yourdomain.com'` (optional)
108
- - `TASKFORCE_EMAIL_RESEND_API_KEY=<resend-api-key>` (required when provider=`resend`)
109
- - `TASKFORCE_EMAIL_GOOGLE_APP_PASSWORD=<google-app-password>` (required when provider=`google-workspace`)
110
- - Optional canonical secret key for either live provider: `TASKFORCE_EMAIL_PROVIDER_API_KEY=<provider-secret>`
111
- - Note: live delivery provider settings are only configurable in cloud runtime; local runtime uses `console`.
112
- - For production deliverability, configure sender domain records: SPF, DKIM, and DMARC.
113
- - Rotate `TASKFORCE_EMAIL_PROVIDER_API_KEY` regularly and use Admin > Settings > Email > `Clear Saved Key` during rotation cutovers.
114
- - Optional: `TASKFORCE_AUTH_REQUIRED_FOR_API=true` (default `true`)
115
- - Optional: `TASKFORCE_AUTH_EXCLUDED_PATHS=/api/taskforce/health` (comma-separated)
116
- - Optional: `TASKFORCE_API_RATE_LIMIT_ENABLED=true` (default `true`)
117
- - Optional: `TASKFORCE_API_RATE_LIMIT_MAX_REQUESTS=120` (default `120` per `60s`)
118
- - Optional: `TASKFORCE_API_RATE_LIMIT_WINDOW_MS=60000`
119
- - Auth rate-limit controls are configured in Admin > System Settings and persisted in Taskforce global settings.
120
+ ### 1. Shared task system for humans and AI
121
+ Taskforce is designed so people and AI agents can work from the same task graph, rather than forcing humans to maintain one system and agents to operate from another.
120
122
 
121
- Defaults:
122
- - `cloud` mode: auth defaults to enabled + required for API routes.
123
- - `local` mode: guest usage is allowed unless auth is explicitly enabled.
123
+ ### 2. Planning beyond flat tasks
124
+ Taskforce supports a planning hierarchy that can represent real work:
125
+ - Initiative
126
+ - Workstream
127
+ - Task
128
+ - Checklist
124
129
 
125
- Request auth options:
130
+ This is meant to support launch work, migrations, larger feature tracks, and other multi-layer efforts.
126
131
 
127
- - `Cookie: taskforce_session=<signed-session-cookie>`
132
+ ### 3. Review-native workflows
133
+ Taskforce includes first-class review surfaces for:
134
+ - documents, via document review sessions and comments
135
+ - images, via Image Notes sessions and markers
128
136
 
129
- ### Integration
137
+ These are not decorative attachments. They are structured review workflows.
130
138
 
131
- Wrap your app or specific routes with the Taskforce component. It's designed to be transparent.
139
+ ### 4. AI-operable product state
140
+ Taskforce exposes product state through MCP so agents can:
141
+ - read tasks and planning structures
142
+ - update status and ownership
143
+ - create and comment on review sessions
144
+ - work with schedules and attachments
132
145
 
133
- Standalone app guide: `docs/guides/widget-standalone-integration.md`
146
+ ## What to avoid saying about Taskforce right now
134
147
 
135
- ```tsx
136
- import { Taskforce } from '@taskforcehq/taskforce';
148
+ Do not describe Taskforce as:
149
+ - a production-ready embedded widget product
150
+ - a workflow editor product
151
+ - a generic developer overlay tool
152
+ - something centered only on AI-developer pairs
137
153
 
138
- const App = () => {
139
- return (
140
- <BrowserRouter>
141
- {/* Your Application Logic */}
142
- <Taskforce config={{
143
- theme: 'midnight',
144
- categories: ['Frontend', 'Backend', 'Refactor'],
145
- position: 'bottom-right'
146
- }} />
147
- </BrowserRouter>
148
- );
149
- };
150
- ```
154
+ That undersells or misstates where the product is now.
151
155
 
152
- ---
156
+ A better framing is:
153
157
 
154
- ## 🖥️ Usage Modes
158
+ > Taskforce is a task and planning system for humans collaborating with AI, with built-in review workflows and MCP access.
155
159
 
156
- Taskforce adapts to your current working style.
160
+ ## Development notes
157
161
 
158
- ### 📊 The Dashboard
159
- For heavy-duty project management. Drag-and-drop task prioritization, bulk archiving, and deep-linking support for sharing specific tasks.
162
+ ### Validation
163
+ Useful local checks include:
160
164
 
161
- To launch dashboard mode (works in any project folder):
162
165
  ```bash
163
- npx @taskforcehq/taskforce open [port]
164
- # Example: npx @taskforcehq/taskforce open 5174
166
+ npm run build
167
+ npm run test
165
168
  ```
166
169
 
167
- ### App/Website Surfaces
168
-
169
- - `apps/app` - full product app source (built to `dist/ui`, served by standalone server / Railway runtime).
170
- - `apps/site` - public website/landing source (Cloudflare Pages).
171
- - `apps/admin` - admin web surface source (Cloudflare Pages).
172
- - `taskforce open` behavior is unchanged and continues to use the built app bundle in `dist/ui`.
173
-
174
- ### Local Runtime Sync Troubleshooting
175
-
176
- - `npm run dev:runtime` serves the built app output from `dist`, while `vite build --watch` keeps that bundle fresh.
177
- - Before changing sync logic, confirm the watched build actually rebuilt, restart the local CLI/runtime if behavior still looks stale, and then retest sync.
178
- - If a sync bug seems "fixed in code but still reproducible," treat stale build output or a long-lived local runtime process as the first thing to rule out.
179
-
180
- ### Local Validation Runbooks
181
-
182
- These checks used to exist as manual-only GitHub Actions workflows, but they now live as local runbooks to avoid burning Actions credits.
183
-
184
- - Full surface validation:
185
- - `npm ci`
186
- - `npm run check:deploy-preflight`
187
- - `npm run build:app`
188
- - `npm run build:site`
189
- - `npm run build:admin`
190
- - `npm run test -- src/server/auth.test.ts src/server/routes.test.ts src/server/cors.test.ts`
191
- - Auth and runtime guard:
192
- - `npm ci`
193
- - `npm run test:auth-runtime-guard`
194
- - Sync regression guard:
195
- - `npm ci`
196
- - `npx vitest src/sync/workspaceSyncModel.test.ts src/sync/syncService.test.ts src/sync/cloudSyncApi.test.ts src/hooks/useWorkspaceSyncController.test.ts src/hooks/useSyncOrchestrator.retry-closure.test.tsx src/server/routes.sync.integration.test.ts src/server/routes.test.ts`
197
- - optional realtime attachment check: `npm run test:e2e:realtime:attachments`
198
-
199
- ### 🧭 Initiatives
200
- Initiatives provide template-based planning for complex work (for example `launch`, `migration`, `incident`) with reusable Definition of Done and Rollback checklist blocks.
201
-
202
- Guide: `docs/guides/initiatives-guide.md`
203
-
204
- Initiative API endpoints:
205
- - `GET /api/taskforce/initiative-templates`
206
- - `POST /api/taskforce/initiative-templates/create`
207
- - `POST /api/taskforce/initiative-templates/clone-checklists`
208
-
209
- ---
210
-
211
- ## 🤖 AI Superpowers (MCP Server)
212
-
213
- Empower your AI agents to be productive members of your team. By exposing Taskforce via the Model Context Protocol, your agent can:
214
-
215
- - **Discover**: Find where tasks are stored and what specialists are available.
216
- - **Plan**: Create complex multi-step choreographies for large features.
217
- - **Refine**: Update task statuses as code is written and tests are passed.
218
-
219
- ### Local MCP
220
- Use `Settings > MCP > Local MCP` for local stdio clients. Taskforce generates the config for you, including:
221
-
222
- - the local command and args
223
- - any required env vars
224
- - optional advanced path-mapping guidance for Docker / WSL / remote-dev setups
225
-
226
- Local MCP does **not** require a cloud token.
227
- Local runtime uses MCP over stdio, not over the app's HTTP server. In local runtime, `taskforce mcp <project-path>` is the MCP entrypoint; the app's `/mcp` HTTP endpoint is cloud-only.
228
-
229
- ### Cloud MCP
230
- Use `Settings > MCP > Cloud MCP` for remote MCP clients. The app provides:
231
-
232
- - workspace-scoped token generation
233
- - client-specific configuration output and instructions
234
- - a `Test Connection` flow for troubleshooting
235
-
236
- Cloud MCP uses the hosted `/mcp` endpoint and a bearer token instead of local filesystem paths.
237
- If you see `/mcp` return a cloud-runtime-only error on a local app instance, that is expected behavior: use Local MCP (stdio) for local clients and Cloud MCP (hosted `/mcp`) for remote clients.
238
-
239
- ### Current client status
240
- Validated cloud/client paths:
241
- - Antigravity
242
- - Codex
243
- - Claude Code CLI
244
- - Gemini CLI
245
-
246
- Implemented cloud config output, still worth manual validation in your environment:
247
- - Cursor
248
- - Cline
249
- - VS Code / Copilot
250
- - Windsurf
251
-
252
- Not yet supported in the cloud flow:
253
- - Claude Desktop
254
- - ChatGPT Desktop
255
-
256
- ChatGPT support is blocked on OAuth. Claude Desktop remains disabled until connector-auth behavior is validated for Taskforce.
257
-
258
- ---
259
-
260
- ## ⚙️ Configuration
261
-
262
- | Option | Type | Default | Description |
263
- |:---|:---|:---|:---|
264
- | `theme` | `'dark' \| 'light' \| 'midnight'` | `'dark'` | Visual aesthetic style. |
265
- | `categories` | `CategoryConfig[]` | `['General']` | Custom groupings with specific path mapping. |
266
- | `taxonomies` | `TaxonomyDefinition[]` | `[]` | Advanced custom metadata fields for tasks. |
267
-
268
- ---
269
-
270
- ## 🧱 Project Architecture
170
+ Testing guidance lives in:
271
171
 
272
- - `apps/app/` - Product app entrypoint (`index.html`, `main.tsx`, websocket hook).
273
- - `apps/site/` - Public website source.
274
- - `apps/admin/` - Admin web surface source.
275
- - `src/config/surfaceBase.ts` - single source-of-truth for Vite surface base paths (`app`, `site`, `admin`).
276
- - `src/StandalonePage.tsx` - High-density management board.
277
- - `src/TaskforceCore.tsx` - Shared state and UI primitives.
278
- - `src/mcp/` - Native Model Context Protocol implementation.
279
- - `src/types.ts` - Centralized contract for project state.
172
+ - `docs/reference/engineering/test-infrastructure.md`
173
+ - `docs/runbooks/sync-soak-runbook.md`
174
+ - `docs/reference/operations/external-qa-workflow.md`
280
175
 
281
- Deployment runbooks:
282
- - `docs/launch/deployment-surfaces.md`
283
- - `docs/launch/runtime-boundaries.md`
284
- - `docs/launch/stage0-slo-observability.md`
285
- - `docs/launch/docker-runtime-runbook.md`
176
+ ### Important docs
177
+ - `docs/reference/engineering/test-infrastructure.md`
178
+ - `docs/reference/platform/runtime-modes-contract.md`
179
+ - `docs/reference/operations/external-qa-workflow.md`
180
+ - `docs/runbooks/sync-soak-runbook.md`
286
181
 
287
- ---
182
+ ## Status
288
183
 
289
- <p align="center">
290
- Built with ❤️ by <a href="https://taskforcehq.ai">Taskforce HQ</a>.
291
- </p>
184
+ Taskforce is in active beta development. The product surface is moving, so this README is intentionally conservative and only describes capabilities that are complete enough to stand behind today.