@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.
- package/README.md +140 -247
- package/dist/Taskforce.module.css +295 -89
- package/dist/TaskforceCore.js +378 -111
- package/dist/TaskforceCore.test.js +1221 -107
- package/dist/assets/fonts/CourierPrime-Bold.woff2 +0 -0
- package/dist/assets/fonts/CourierPrime-BoldItalic.woff2 +0 -0
- package/dist/assets/fonts/CourierPrime-Italic.woff2 +0 -0
- package/dist/assets/fonts/CourierPrime-Regular.woff2 +0 -0
- package/dist/assets/fonts/Noir_medium.woff2 +0 -0
- package/dist/assets/fonts/Noir_regular.woff2 +0 -0
- package/dist/assets/fonts/RussoOne-Regular.woff2 +0 -0
- package/dist/assets/fonts/SpecialElite-Regular.woff2 +0 -0
- package/dist/compat/workspaceSyncCompat.js +52 -2
- package/dist/compat/workspaceSyncCompat.test.js +38 -1
- package/dist/components/context/ContextAttachmentManager.d.ts +14 -0
- package/dist/components/context/ContextAttachmentManager.js +549 -0
- package/dist/components/features/AgentsModule.d.ts +10 -1
- package/dist/components/features/AgentsModule.js +260 -15
- package/dist/components/features/AgentsModule.test.js +255 -5
- package/dist/components/features/DocumentIndex.d.ts +1 -1
- package/dist/components/features/DocumentIndex.js +1 -1
- package/dist/components/features/DocumentViewer.d.ts +6 -2
- package/dist/components/features/DocumentViewer.js +90 -10
- package/dist/components/features/DocumentWorkspace.d.ts +5 -22
- package/dist/components/features/DocumentWorkspace.js +12 -155
- package/dist/components/features/DocumentWorkspace.test.js +226 -6
- package/dist/components/features/TaskSettings.js +29 -3
- package/dist/components/features/TaskSettings.test.js +42 -1
- package/dist/components/features/documentWorkspaceModel.d.ts +24 -0
- package/dist/components/features/documentWorkspaceModel.js +57 -0
- package/dist/components/features/useDocumentWorkspaceController.d.ts +34 -0
- package/dist/components/features/useDocumentWorkspaceController.js +113 -0
- package/dist/components/task/TaskCard.js +19 -28
- package/dist/components/task/TaskCard.test.js +38 -3
- package/dist/components/task/TaskContextUpload.js +4 -526
- package/dist/components/task/TaskForm.d.ts +8 -8
- package/dist/components/task/TaskForm.js +362 -230
- package/dist/components/task/TaskForm.test.js +558 -381
- package/dist/components/task/TaskKanban.d.ts +2 -1
- package/dist/components/task/TaskKanban.js +96 -14
- package/dist/components/task/TaskKanban.test.js +36 -0
- package/dist/components/ui/EditableAvatarButton.d.ts +18 -0
- package/dist/components/ui/EditableAvatarButton.js +18 -0
- package/dist/components/views/PlanComparisonPage.d.ts +9 -1
- package/dist/components/views/PlanComparisonPage.js +70 -17
- package/dist/components/views/PlanComparisonPage.test.js +289 -41
- package/dist/components/views/PlansPage.js +239 -106
- package/dist/components/views/PlansPage.test.js +593 -42
- package/dist/components/views/StandaloneLayout.js +310 -554
- package/dist/components/views/panels/FilterToolbar.test.js +6 -4
- package/dist/components/views/panels/PlanningDrawer.d.ts +8 -1
- package/dist/components/views/panels/PlanningDrawer.js +18 -11
- package/dist/components/views/panels/PlanningDrawer.test.d.ts +1 -0
- package/dist/components/views/panels/PlanningDrawer.test.js +141 -0
- package/dist/components/views/planningScope.d.ts +20 -0
- package/dist/components/views/planningScope.js +25 -0
- package/dist/components/views/planningScope.test.d.ts +1 -0
- package/dist/components/views/planningScope.test.js +60 -0
- package/dist/components/views/standalone/modals/AccountHubModal.d.ts +27 -14
- package/dist/components/views/standalone/modals/AccountHubModal.js +87 -15
- package/dist/components/views/standalone/modals/AccountHubModal.test.js +42 -2
- package/dist/components/views/standalone/modals/AvatarImageManagerModal.d.ts +20 -0
- package/dist/components/views/standalone/modals/AvatarImageManagerModal.js +127 -0
- package/dist/components/views/standalone/modals/EditProfileModal.d.ts +2 -9
- package/dist/components/views/standalone/modals/EditProfileModal.js +3 -2
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.d.ts +9 -0
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.js +6 -0
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.d.ts +1 -0
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.js +24 -0
- package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +2 -1
- package/dist/components/views/standalone/modals/SyncStatusModal.js +2 -2
- package/dist/config/envSchema.js +1 -1
- package/dist/core/AiProfileService.d.ts +45 -3
- package/dist/core/AiProfileService.js +774 -63
- package/dist/core/AiProfileService.test.js +22 -2
- package/dist/core/AiProfiles.test.js +761 -2
- package/dist/core/AttachmentLinkService.js +57 -15
- package/dist/core/AuthIdentityService.d.ts +107 -0
- package/dist/core/AuthIdentityService.js +284 -0
- package/dist/core/AuthTokenService.d.ts +4 -0
- package/dist/core/AuthTokenService.js +34 -6
- package/dist/core/AuthTokenService.test.d.ts +1 -0
- package/dist/core/AuthTokenService.test.js +78 -0
- package/dist/core/EntitlementsPolicy.test.js +77 -15
- package/dist/core/GlobalSettingsService.js +115 -6
- package/dist/core/PlanEntitlementService.d.ts +30 -3
- package/dist/core/PlanEntitlementService.js +454 -93
- package/dist/core/PlanFeatureCatalog.test.d.ts +1 -0
- package/dist/core/PlanFeatureCatalog.test.js +84 -0
- package/dist/core/PlanVersionPolicy.test.js +54 -28
- package/dist/core/PlanningEntities.test.js +52 -0
- package/dist/core/SignupMonetizationSettings.test.js +241 -44
- package/dist/core/SyncReconciliationService.js +2 -65
- package/dist/core/SystemAdmin.test.js +244 -88
- package/dist/core/TaskAttachmentsCanonical.test.js +51 -1
- package/dist/core/TaskTaxonomyValidation.test.js +53 -0
- package/dist/core/Taskforce.d.ts +228 -14
- package/dist/core/Taskforce.js +814 -201
- package/dist/core/Taskforce.listTasksSlim.test.d.ts +1 -0
- package/dist/core/Taskforce.listTasksSlim.test.js +91 -0
- package/dist/core/UserProfileAvatarDrafts.test.js +30 -3
- package/dist/core/WorkspaceLifecycleService.js +0 -5
- package/dist/core/WorkspacePermissions.test.js +25 -1
- package/dist/core/WorkspacePlanMode.test.js +128 -27
- package/dist/core/shared.d.ts +3 -1
- package/dist/core/shared.js +16 -1
- package/dist/core/types.d.ts +68 -2
- package/dist/hooks/auth/useTaskforceAuthBootstrap.js +26 -1
- package/dist/hooks/sync/auth.js +3 -1
- package/dist/hooks/sync/bootstrap.js +2 -0
- package/dist/hooks/sync/controlPlane.d.ts +37 -0
- package/dist/hooks/sync/controlPlane.js +78 -0
- package/dist/hooks/sync/controlPlane.test.d.ts +1 -0
- package/dist/hooks/sync/controlPlane.test.js +121 -0
- package/dist/hooks/sync/lifecyclePolicy.d.ts +45 -0
- package/dist/hooks/sync/lifecyclePolicy.js +93 -0
- package/dist/hooks/sync/lifecyclePolicy.test.d.ts +1 -0
- package/dist/hooks/sync/lifecyclePolicy.test.js +124 -0
- package/dist/hooks/sync/orchestratorShared.d.ts +10 -1
- package/dist/hooks/sync/orchestratorShared.js +68 -47
- package/dist/hooks/sync/orchestratorShared.test.js +50 -1
- package/dist/hooks/sync/pullLifecycle.d.ts +31 -0
- package/dist/hooks/sync/pullLifecycle.js +24 -0
- package/dist/hooks/sync/pullLifecycle.test.d.ts +1 -0
- package/dist/hooks/sync/pullLifecycle.test.js +80 -0
- package/dist/hooks/sync/recovery.d.ts +16 -2
- package/dist/hooks/sync/recovery.js +171 -53
- package/dist/hooks/sync/recovery.test.d.ts +1 -0
- package/dist/hooks/sync/recovery.test.js +292 -0
- package/dist/hooks/sync/transfers.d.ts +16 -3
- package/dist/hooks/sync/transfers.js +186 -65
- package/dist/hooks/sync/transfers.test.d.ts +1 -0
- package/dist/hooks/sync/transfers.test.js +396 -0
- package/dist/hooks/sync/useRecentSyncEvents.d.ts +21 -0
- package/dist/hooks/sync/useRecentSyncEvents.js +92 -0
- package/dist/hooks/sync/useRecentSyncEvents.test.d.ts +1 -0
- package/dist/hooks/sync/useRecentSyncEvents.test.js +124 -0
- package/dist/hooks/sync/useSyncStatusActions.d.ts +30 -0
- package/dist/hooks/sync/useSyncStatusActions.js +88 -0
- package/dist/hooks/sync/useSyncStatusActions.test.d.ts +1 -0
- package/dist/hooks/sync/useSyncStatusActions.test.js +133 -0
- package/dist/hooks/sync/useSyncStatusControls.d.ts +25 -0
- package/dist/hooks/sync/useSyncStatusControls.js +60 -0
- package/dist/hooks/sync/useSyncStatusControls.test.d.ts +1 -0
- package/dist/hooks/sync/useSyncStatusControls.test.js +88 -0
- package/dist/hooks/useSyncOrchestrator.aiProfiles.test.js +12 -0
- package/dist/hooks/useSyncOrchestrator.d.ts +16 -6
- package/dist/hooks/useSyncOrchestrator.js +424 -175
- package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +487 -10
- package/dist/hooks/useTaskData.js +8 -3
- package/dist/hooks/useTaskData.test.js +45 -0
- package/dist/hooks/useTaskMutations.d.ts +2 -1
- package/dist/hooks/useTaskMutations.js +12 -1
- package/dist/hooks/useTaskMutations.test.js +30 -1
- package/dist/hooks/useTaskforce.d.ts +65 -4
- package/dist/hooks/useTaskforce.js +564 -243
- package/dist/hooks/useTaskforce.runtime-routing.test.d.ts +1 -0
- package/dist/hooks/useTaskforce.runtime-routing.test.js +152 -0
- package/dist/hooks/useTaskforce.sync-behavior.test.js +2454 -208
- package/dist/hooks/useWorkspaceSyncController.d.ts +4 -1
- package/dist/hooks/useWorkspaceSyncController.js +17 -2
- package/dist/hooks/useWorkspaceSyncController.test.js +1 -0
- package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.d.ts +16 -0
- package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +316 -35
- package/dist/localization/locales/en-US.d.ts +0 -1
- package/dist/localization/locales/en-US.js +0 -1
- package/dist/localization/locales/es-419.js +0 -1
- package/dist/localization/locales/pt-BR.js +0 -1
- package/dist/mcp/adminWorkspaceRegistrar.d.ts +2 -0
- package/dist/mcp/adminWorkspaceRegistrar.js +154 -0
- package/dist/mcp/collaborationRegistrar.d.ts +2 -0
- package/dist/mcp/collaborationRegistrar.js +71 -0
- package/dist/mcp/documentAssetRegistrar.d.ts +2 -0
- package/dist/mcp/documentAssetRegistrar.js +346 -0
- package/dist/mcp/runtime.d.ts +2 -0
- package/dist/mcp/runtime.js +2433 -3534
- package/dist/mcp/runtime.test.js +440 -2
- package/dist/mcp/taskPlanningRegistrar.d.ts +2 -0
- package/dist/mcp/taskPlanningRegistrar.js +418 -0
- package/dist/mcp/toolCatalog.d.ts +35 -0
- package/dist/mcp/toolCatalog.js +3 -0
- package/dist/migrations/taskSchemaMigrations.d.ts +1 -1
- package/dist/migrations/taskSchemaMigrations.js +171 -61
- package/dist/migrations/taskSchemaMigrations.test.js +15 -0
- package/dist/resources/templates/workflow-sources/workflowDocs.mjs +6 -6
- package/dist/resources/templates/workflows/collaborate.yaml +1 -1
- package/dist/resources/templates/workflows/evaluate.yaml +2 -2
- package/dist/resources/templates/workflows/plan.yaml +1 -1
- package/dist/resources/templates/workflows/review.yaml +2 -2
- package/dist/server/annotatedAttachmentsRoutes.test.js +3 -3
- package/dist/server/auth/providers/apple.d.ts +33 -0
- package/dist/server/auth/providers/apple.js +82 -0
- package/dist/server/auth/providers/appleClientSecret.d.ts +37 -0
- package/dist/server/auth/providers/appleClientSecret.js +65 -0
- package/dist/server/auth/providers/github.d.ts +26 -0
- package/dist/server/auth/providers/github.js +86 -0
- package/dist/server/auth/providers/google.d.ts +21 -0
- package/dist/server/auth/providers/google.js +56 -0
- package/dist/server/auth/providers/types.d.ts +21 -0
- package/dist/server/auth/providers/types.js +1 -0
- package/dist/server/auth.d.ts +2 -0
- package/dist/server/auth.js +6 -3
- package/dist/server/documentReviewRoutes.test.js +36 -3
- package/dist/server/index.cookieProxy.test.js +1 -0
- package/dist/server/index.d.ts +12 -0
- package/dist/server/index.js +120 -9
- package/dist/server/index.rateLimit.test.js +3 -0
- package/dist/server/index.test.js +106 -3
- package/dist/server/routes/admin.d.ts +4 -5
- package/dist/server/routes/admin.js +410 -80
- package/dist/server/routes/annotatedAttachments.d.ts +1 -1
- package/dist/server/routes/annotatedAttachments.js +1 -1
- package/dist/server/routes/auth.d.ts +16 -6
- package/dist/server/routes/auth.js +1015 -118
- package/dist/server/routes/authSupport.d.ts +30 -0
- package/dist/server/routes/authSupport.js +81 -0
- package/dist/server/routes/billing.d.ts +1 -1
- package/dist/server/routes/billing.js +276 -34
- package/dist/server/routes/billing.test.js +760 -52
- package/dist/server/routes/documentReviews.d.ts +1 -1
- package/dist/server/routes/documentReviews.js +1 -1
- package/dist/server/routes/documents.d.ts +5 -2
- package/dist/server/routes/documents.js +242 -74
- package/dist/server/routes/primitives.d.ts +11 -0
- package/dist/server/routes/primitives.js +73 -0
- package/dist/server/routes/resources.d.ts +1 -1
- package/dist/server/routes/resources.js +1 -1
- package/dist/server/routes/shared.d.ts +29 -3
- package/dist/server/routes/shared.js +69 -4
- package/dist/server/routes/sync.d.ts +1 -1
- package/dist/server/routes/sync.integration.test.js +437 -39
- package/dist/server/routes/sync.js +62 -606
- package/dist/server/routes/syncAuxRoutes.d.ts +15 -0
- package/dist/server/routes/syncAuxRoutes.js +91 -0
- package/dist/server/routes/syncAuxRoutes.test.d.ts +1 -0
- package/dist/server/routes/syncAuxRoutes.test.js +158 -0
- package/dist/server/routes/syncPullApplyRoutes.d.ts +36 -0
- package/dist/server/routes/syncPullApplyRoutes.js +204 -0
- package/dist/server/routes/syncPushRoutes.d.ts +24 -0
- package/dist/server/routes/syncPushRoutes.js +212 -0
- package/dist/server/routes/syncRouteGuards.d.ts +36 -0
- package/dist/server/routes/syncRouteGuards.js +67 -0
- package/dist/server/routes/syncRouteGuards.test.d.ts +1 -0
- package/dist/server/routes/syncRouteGuards.test.js +94 -0
- package/dist/server/routes/syncRouteTypes.d.ts +13 -0
- package/dist/server/routes/syncRouteTypes.js +1 -0
- package/dist/server/routes/syncSnapshotRoutes.d.ts +66 -0
- package/dist/server/routes/syncSnapshotRoutes.js +180 -0
- package/dist/server/routes/tasks.d.ts +1 -1
- package/dist/server/routes/tasks.js +44 -2
- package/dist/server/routes/workspaces.d.ts +1 -1
- package/dist/server/routes/workspaces.js +37 -6
- package/dist/server/routes.d.ts +2 -9
- package/dist/server/routes.js +136 -165
- package/dist/server/routes.test.js +2457 -162
- package/dist/services/workflowExportSnapshots.test.js +2 -0
- package/dist/shared/aiProfileSeatScope.d.ts +5 -0
- package/dist/shared/aiProfileSeatScope.js +21 -0
- package/dist/shared/passwordPolicy.d.ts +13 -0
- package/dist/shared/passwordPolicy.js +84 -0
- package/dist/shared/passwordPolicy.test.d.ts +1 -0
- package/dist/shared/passwordPolicy.test.js +34 -0
- package/dist/storage/workspaceAssetStore.d.ts +15 -3
- package/dist/storage/workspaceAssetStore.js +132 -44
- package/dist/storage/workspaceAssetStore.test.js +93 -6
- package/dist/styles/fonts.css +70 -0
- package/dist/sync/collaborationSyncPayload.d.ts +6 -1
- package/dist/sync/collaborationSyncPayload.js +17 -11
- package/dist/sync/collaborationSyncPayload.test.js +13 -1
- package/dist/sync/contentSyncState.d.ts +4 -8
- package/dist/sync/contentSyncState.js +33 -77
- package/dist/sync/syncApplyHandlers.d.ts +7 -0
- package/dist/sync/syncApplyHandlers.js +28 -13
- package/dist/sync/syncApplyHandlers.test.js +72 -3
- package/dist/sync/syncFieldSemantics.d.ts +12 -0
- package/dist/sync/syncFieldSemantics.js +55 -0
- package/dist/sync/syncResourceAdapters.d.ts +44 -0
- package/dist/sync/syncResourceAdapters.js +77 -0
- package/dist/sync/syncService.d.ts +6 -0
- package/dist/sync/syncService.js +60 -0
- package/dist/sync/syncService.test.js +71 -3
- package/dist/sync/taskSyncChangeKey.d.ts +2 -0
- package/dist/sync/taskSyncChangeKey.js +143 -0
- package/dist/sync/taskSyncPayload.js +3 -8
- package/dist/sync/workspacePullFeed.js +4 -3
- package/dist/sync/workspacePullFeed.test.js +43 -0
- package/dist/sync/workspaceRepair.js +5 -2
- package/dist/sync/workspaceSyncModel.d.ts +48 -0
- package/dist/sync/workspaceSyncModel.js +195 -31
- package/dist/sync/workspaceSyncModel.test.js +325 -12
- package/dist/sync/workspaceSyncState.d.ts +19 -0
- package/dist/sync/workspaceSyncState.js +3 -1
- package/dist/sync/workspaceSyncSurface.js +3 -8
- package/dist/types.d.ts +17 -0
- package/dist/ui/assets/AgentsModule-DrLawwNl.js +1 -0
- package/dist/ui/assets/{AnnotatedAttachmentWorkspace-BlS-cqnl.js → AnnotatedAttachmentWorkspace-Z9_whf7F.js} +1 -1
- package/dist/ui/assets/CourierPrime-Bold-BuLj_dpw.woff2 +0 -0
- package/dist/ui/assets/CourierPrime-BoldItalic-BrK2pUkZ.woff2 +0 -0
- package/dist/ui/assets/CourierPrime-Italic-DFUZK5Ey.woff2 +0 -0
- package/dist/ui/assets/CourierPrime-Regular-BsKphzVf.woff2 +0 -0
- package/dist/ui/assets/DocumentWorkspace-B03MaSkw.js +252 -0
- package/dist/ui/assets/DocumentWorkspace-Dhdso07p.css +1 -0
- package/dist/ui/assets/{InitiativesModule-BjR6iBf9.js → InitiativesModule-9E6ParrY.js} +1 -1
- package/dist/ui/assets/Noir_medium-bxQwKGzB.woff2 +0 -0
- package/dist/ui/assets/Noir_regular-ojf2kxlG.woff2 +0 -0
- package/dist/ui/assets/PlansPage-CvfnMiWq.css +1 -0
- package/dist/ui/assets/PlansPage-DRXscYxH.js +1 -0
- package/dist/ui/assets/RussoOne-Regular-Cu_qq_qC.woff2 +0 -0
- package/dist/ui/assets/SpecialElite-Regular-Di6gSvAS.woff2 +0 -0
- package/dist/ui/assets/TaskSettings-DZX4jk7e.js +9 -0
- package/dist/ui/assets/{WorkflowsModule-DnFqdUME.js → WorkflowsModule-BA7jcEpH.js} +1 -1
- package/dist/ui/assets/index-9eT8e0Lu.css +1 -0
- package/dist/ui/assets/index-C6k75jr8.js +6 -0
- package/dist/ui/assets/{vendor-icons-I7ZwG1z_.js → vendor-icons-DuEd_65c.js} +1 -1
- package/dist/ui/fonts/CourierPrime-Bold.ttf +0 -0
- package/dist/ui/fonts/CourierPrime-Bold.woff2 +0 -0
- package/dist/ui/fonts/CourierPrime-BoldItalic.ttf +0 -0
- package/dist/ui/fonts/CourierPrime-BoldItalic.woff2 +0 -0
- package/dist/ui/fonts/CourierPrime-Italic.ttf +0 -0
- package/dist/ui/fonts/CourierPrime-Italic.woff2 +0 -0
- package/dist/ui/fonts/CourierPrime-Regular.ttf +0 -0
- package/dist/ui/fonts/CourierPrime-Regular.woff2 +0 -0
- package/dist/ui/fonts/Noir_medium.otf +0 -0
- package/dist/ui/fonts/Noir_medium.woff2 +0 -0
- package/dist/ui/fonts/Noir_regular.otf +0 -0
- package/dist/ui/fonts/Noir_regular.woff2 +0 -0
- package/dist/ui/fonts/RussoOne-Regular.woff2 +0 -0
- package/dist/ui/fonts/SpecialElite-Regular.ttf +0 -0
- package/dist/ui/fonts/SpecialElite-Regular.woff2 +0 -0
- package/dist/ui/index.html +3 -3
- package/dist/utils/accountProfileSummaryCache.d.ts +5 -0
- package/dist/utils/assignees.d.ts +2 -0
- package/dist/utils/assignees.js +2 -0
- package/dist/utils/avatarUpload.d.ts +27 -0
- package/dist/utils/avatarUpload.js +132 -0
- package/dist/utils/avatarUpload.test.d.ts +1 -0
- package/dist/utils/avatarUpload.test.js +40 -0
- package/dist/utils/bootstrapTrace.d.ts +7 -0
- package/dist/utils/bootstrapTrace.js +29 -0
- package/dist/utils/commercialLifecyclePresentation.d.ts +19 -0
- package/dist/utils/commercialLifecyclePresentation.js +199 -0
- package/dist/utils/contextAssetEvents.d.ts +2 -0
- package/dist/utils/syncEventDetails.d.ts +3 -0
- package/dist/utils/syncEventDetails.js +64 -0
- package/dist/utils/syncEventDetails.test.d.ts +1 -0
- package/dist/utils/syncEventDetails.test.js +23 -0
- package/dist/utils/syncEventPresentation.d.ts +15 -0
- package/dist/utils/syncEventPresentation.js +129 -0
- package/dist/utils/syncEventPresentation.test.d.ts +1 -0
- package/dist/utils/syncEventPresentation.test.js +64 -0
- package/dist/utils/syncStatusPresentation.d.ts +72 -0
- package/dist/utils/syncStatusPresentation.js +217 -0
- package/dist/utils/syncStatusPresentation.test.d.ts +1 -0
- package/dist/utils/syncStatusPresentation.test.js +164 -0
- package/dist/utils/taskActivity.d.ts +2 -0
- package/dist/utils/taskActivity.js +228 -22
- package/dist/utils/taskActivity.test.js +119 -8
- package/dist/utils/workspaceSyncPresentation.d.ts +4 -0
- package/dist/utils/workspaceSyncPresentation.js +68 -2
- package/dist/utils/workspaceSyncPresentation.test.js +36 -1
- package/package.json +10 -2
- package/scripts/check-cloud-mcp.mjs +83 -0
- package/scripts/export-sqlite-to-postgres.mjs +7 -9
- package/scripts/playwright-auth.sh +5 -1
- package/scripts/run-billing-performance-smoke.sh +24 -0
- package/scripts/run-e2e-realtime.sh +17 -3
- package/scripts/run-smoke.sh +17 -5
- package/scripts/run-soak.sh +17 -5
- package/src/resources/templates/workflow-sources/workflowDocs.mjs +6 -6
- package/src/resources/templates/workflows/collaborate.yaml +1 -1
- package/src/resources/templates/workflows/evaluate.yaml +2 -2
- package/src/resources/templates/workflows/plan.yaml +1 -1
- package/src/resources/templates/workflows/review.yaml +2 -2
- package/dist/ui/assets/AgentsModule-BLWVbuKP.js +0 -1
- package/dist/ui/assets/DocumentWorkspace-BH_6DF6x.js +0 -250
- package/dist/ui/assets/DocumentWorkspace-C_8T8oz-.css +0 -1
- package/dist/ui/assets/PlansPage-C2dd2n1X.css +0 -1
- package/dist/ui/assets/PlansPage-CSDQ4sLa.js +0 -1
- package/dist/ui/assets/RussoOne-Regular-C3BxZIj7.ttf +0 -0
- package/dist/ui/assets/TaskSettings-CEDy34Jo.js +0 -9
- package/dist/ui/assets/index-DXUdtH1B.js +0 -6
- package/dist/ui/assets/index-Ii0B0rTO.css +0 -1
- package/scripts/migrate-planning-model.ts +0 -233
package/README.md
CHANGED
|
@@ -1,291 +1,184 @@
|
|
|
1
1
|
# Taskforce
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
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
|
-
##
|
|
77
|
+
## Getting started
|
|
32
78
|
|
|
33
|
-
###
|
|
79
|
+
### Prerequisites
|
|
80
|
+
- Node.js 20+
|
|
81
|
+
- npm
|
|
34
82
|
|
|
35
|
-
|
|
83
|
+
### Install dependencies
|
|
36
84
|
|
|
37
85
|
```bash
|
|
38
|
-
npm
|
|
86
|
+
npm ci
|
|
39
87
|
```
|
|
40
88
|
|
|
41
|
-
|
|
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
|
|
92
|
+
npm run dev
|
|
46
93
|
```
|
|
47
94
|
|
|
48
|
-
|
|
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
|
|
100
|
+
npm run build
|
|
52
101
|
```
|
|
53
102
|
|
|
54
|
-
|
|
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
|
-
|
|
105
|
+
Taskforce includes built-in MCP support so AI clients can operate directly against the workspace.
|
|
74
106
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
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
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
118
|
+
## Major product capabilities
|
|
100
119
|
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
122
|
-
|
|
123
|
-
-
|
|
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
|
-
|
|
130
|
+
This is meant to support launch work, migrations, larger feature tracks, and other multi-layer efforts.
|
|
126
131
|
|
|
127
|
-
|
|
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
|
-
|
|
137
|
+
These are not decorative attachments. They are structured review workflows.
|
|
130
138
|
|
|
131
|
-
|
|
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
|
-
|
|
146
|
+
## What to avoid saying about Taskforce right now
|
|
134
147
|
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
|
|
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
|
-
|
|
158
|
+
> Taskforce is a task and planning system for humans collaborating with AI, with built-in review workflows and MCP access.
|
|
155
159
|
|
|
156
|
-
|
|
160
|
+
## Development notes
|
|
157
161
|
|
|
158
|
-
###
|
|
159
|
-
|
|
162
|
+
### Validation
|
|
163
|
+
Useful local checks include:
|
|
160
164
|
|
|
161
|
-
To launch dashboard mode (works in any project folder):
|
|
162
165
|
```bash
|
|
163
|
-
|
|
164
|
-
|
|
166
|
+
npm run build
|
|
167
|
+
npm run test
|
|
165
168
|
```
|
|
166
169
|
|
|
167
|
-
|
|
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
|
-
- `
|
|
273
|
-
- `
|
|
274
|
-
- `
|
|
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
|
-
|
|
282
|
-
- `docs/
|
|
283
|
-
- `docs/
|
|
284
|
-
- `docs/
|
|
285
|
-
- `docs/
|
|
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
|
-
|
|
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.
|