@taskforcehq/taskforce 0.3.309 → 0.3.313
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -127
- package/dist/TaskforceCore.js +1 -1
- package/dist/components/context/ContextAttachmentManager.js +4 -3
- package/dist/components/features/InitiativesModule.js +1 -1
- package/dist/components/features/TaskSettings.js +1 -1
- package/dist/components/ui/DisclosureSectionHeader.d.ts +12 -0
- package/dist/components/ui/DisclosureSectionHeader.js +8 -0
- package/dist/components/views/PlanComparisonPage.js +1 -1
- package/dist/components/views/StandaloneLayout.js +18 -4
- package/dist/components/views/panels/PlanningDrawer.js +2 -1
- package/dist/components/views/standalone/modals/AccountHubModal.js +1 -1
- package/dist/components/views/standalone/modals/HelpModal.d.ts +3 -1
- package/dist/components/views/standalone/modals/HelpModal.js +17 -2
- package/dist/core/PlanEntitlementService.d.ts +2 -0
- package/dist/core/PlanEntitlementService.js +57 -4
- package/dist/hooks/useFilterSort.js +1 -1
- package/dist/hooks/useTaskforce.js +2 -2
- package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +5 -2
- package/dist/localization/locales/en-US.js +1 -1
- package/dist/localization/locales/es-419.js +1 -1
- package/dist/localization/locales/pt-BR.js +1 -1
- package/dist/mcp/runtime.js +49 -14
- package/dist/server/routes/billing.js +0 -1
- package/dist/ui/assets/AgentsModule-BULqIo8e.js +1 -0
- package/dist/ui/assets/{AnnotatedAttachmentWorkspace-CCckzWYZ.js → AnnotatedAttachmentWorkspace-DHr4rHK9.js} +1 -1
- package/dist/ui/assets/ContextAttachmentManager-DoMe2OpY.js +3 -0
- package/dist/ui/assets/{DocumentWorkspace-BVaWPA25.js → DocumentWorkspace-DumBWhvb.js} +1 -1
- package/dist/ui/assets/{EntityActivityTimeline-DSj0ThaK.js → EntityActivityTimeline-sHk8Nzbq.js} +1 -1
- package/dist/ui/assets/{InitiativesModule-AxMkWtxH.js → InitiativesModule-3X9UNzHh.js} +1 -1
- package/dist/ui/assets/PlansPage-C3A3EYaV.js +1 -0
- package/dist/ui/assets/PlansPage-DeAzWYTb.css +1 -0
- package/dist/ui/assets/{TaskContextUpload-Dw4rTF4i.js → TaskContextUpload-C8G7pWkX.js} +1 -1
- package/dist/ui/assets/{TaskSettings-f2ga42_V.js → TaskSettings-DM1o9Wla.js} +2 -2
- package/dist/ui/assets/{WorkflowsModule-E4UL3mov.js → WorkflowsModule-CW0crzvD.js} +1 -1
- package/dist/ui/assets/documentReferences-BZB3nMRb.js +1 -0
- package/dist/ui/assets/index-BWFQ9mGn.js +5 -0
- package/dist/ui/assets/{index-BvAbqx5Q.css → index-DcK_8tuE.css} +1 -1
- package/dist/ui/assets/{vendor-icons-B32hGuF2.js → vendor-icons-CLnehDTw.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/utils/supportContact.d.ts +9 -0
- package/dist/utils/supportContact.js +32 -0
- package/package.json +12 -4
- package/scripts/postinstall.js +4 -3
- package/dist/TaskforceCore.CategoryFallback.test.d.ts +0 -1
- package/dist/TaskforceCore.CategoryFallback.test.js +0 -101
- package/dist/TaskforceCore.filter-persistence.test.d.ts +0 -1
- package/dist/TaskforceCore.filter-persistence.test.js +0 -402
- package/dist/TaskforceCore.routing.test.d.ts +0 -1
- package/dist/TaskforceCore.routing.test.js +0 -311
- package/dist/TaskforceCore.test.d.ts +0 -1
- package/dist/TaskforceCore.test.js +0 -7910
- package/dist/TaskforceWidget.test.d.ts +0 -1
- package/dist/TaskforceWidget.test.js +0 -92
- package/dist/UnsavedChangesRelaxed.test.d.ts +0 -1
- package/dist/UnsavedChangesRelaxed.test.js +0 -16
- package/dist/__tests__/localizationCatalogs.test.d.ts +0 -1
- package/dist/__tests__/localizationCatalogs.test.js +0 -54
- package/dist/__tests__/workflowSimulation.test.d.ts +0 -1
- package/dist/__tests__/workflowSimulation.test.js +0 -113
- package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.d.ts +0 -1
- package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.js +0 -278
- package/dist/annotatedAttachments/payload.test.d.ts +0 -1
- package/dist/annotatedAttachments/payload.test.js +0 -67
- package/dist/compat/workspaceSyncCompat.test.d.ts +0 -1
- package/dist/compat/workspaceSyncCompat.test.js +0 -124
- package/dist/components/features/AgentsModule.test.d.ts +0 -1
- package/dist/components/features/AgentsModule.test.js +0 -601
- package/dist/components/features/AnnotatedAttachmentWorkspace.test.d.ts +0 -1
- package/dist/components/features/AnnotatedAttachmentWorkspace.test.js +0 -2883
- package/dist/components/features/DocumentWorkspace.test.d.ts +0 -1
- package/dist/components/features/DocumentWorkspace.test.js +0 -1439
- package/dist/components/features/TaskSettings.test.d.ts +0 -1
- package/dist/components/features/TaskSettings.test.js +0 -1674
- package/dist/components/features/settings/TaxonomyLibraryManager.test.d.ts +0 -1
- package/dist/components/features/settings/TaxonomyLibraryManager.test.js +0 -141
- package/dist/components/task/TaskActionHeader.test.d.ts +0 -1
- package/dist/components/task/TaskActionHeader.test.js +0 -91
- package/dist/components/task/TaskCard.test.d.ts +0 -1
- package/dist/components/task/TaskCard.test.js +0 -513
- package/dist/components/task/TaskContextUpload.test.d.ts +0 -1
- package/dist/components/task/TaskContextUpload.test.js +0 -506
- package/dist/components/task/TaskForm.test.d.ts +0 -1
- package/dist/components/task/TaskForm.test.js +0 -946
- package/dist/components/task/TaskKanban.empty-column-drop.test.d.ts +0 -1
- package/dist/components/task/TaskKanban.empty-column-drop.test.js +0 -66
- package/dist/components/task/TaskKanban.planning-drop.test.d.ts +0 -1
- package/dist/components/task/TaskKanban.planning-drop.test.js +0 -93
- package/dist/components/task/TaskKanban.test.d.ts +0 -1
- package/dist/components/task/TaskKanban.test.js +0 -99
- package/dist/components/task/TaskList.test.d.ts +0 -1
- package/dist/components/task/TaskList.test.js +0 -473
- package/dist/components/task/TaskStatusActions.test.d.ts +0 -1
- package/dist/components/task/TaskStatusActions.test.js +0 -54
- package/dist/components/task/taskKanbanDropRules.test.d.ts +0 -1
- package/dist/components/task/taskKanbanDropRules.test.js +0 -114
- package/dist/components/ui/LevelSelector.test.d.ts +0 -1
- package/dist/components/ui/LevelSelector.test.js +0 -55
- package/dist/components/ui/Markdown.test.d.ts +0 -1
- package/dist/components/ui/Markdown.test.js +0 -38
- package/dist/components/ui/MultiSelectFilter.test.d.ts +0 -1
- package/dist/components/ui/MultiSelectFilter.test.js +0 -74
- package/dist/components/ui/TaxonomyDropdown.test.d.ts +0 -1
- package/dist/components/ui/TaxonomyDropdown.test.js +0 -130
- package/dist/components/ui/TopNoticeLayer.test.d.ts +0 -1
- package/dist/components/ui/TopNoticeLayer.test.js +0 -25
- package/dist/components/views/AppShellHeader.test.d.ts +0 -1
- package/dist/components/views/AppShellHeader.test.js +0 -42
- package/dist/components/views/PlanComparisonPage.test.d.ts +0 -1
- package/dist/components/views/PlanComparisonPage.test.js +0 -757
- package/dist/components/views/PlansPage.test.d.ts +0 -1
- package/dist/components/views/PlansPage.test.js +0 -710
- package/dist/components/views/chrome/WorkspaceChromeSections.test.d.ts +0 -1
- package/dist/components/views/chrome/WorkspaceChromeSections.test.js +0 -54
- package/dist/components/views/chrome/workspaceChrome.test.d.ts +0 -1
- package/dist/components/views/chrome/workspaceChrome.test.js +0 -52
- package/dist/components/views/panels/DocumentFilterToolbar.test.d.ts +0 -1
- package/dist/components/views/panels/DocumentFilterToolbar.test.js +0 -19
- package/dist/components/views/panels/FilterToolbar.test.d.ts +0 -1
- package/dist/components/views/panels/FilterToolbar.test.js +0 -47
- package/dist/components/views/panels/PlanningDrawer.test.d.ts +0 -1
- package/dist/components/views/panels/PlanningDrawer.test.js +0 -529
- package/dist/components/views/planningScope.test.d.ts +0 -1
- package/dist/components/views/planningScope.test.js +0 -60
- package/dist/components/views/standalone/modals/AccountHubModal.test.d.ts +0 -1
- package/dist/components/views/standalone/modals/AccountHubModal.test.js +0 -66
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.d.ts +0 -1
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.js +0 -24
- package/dist/components/views/teamManagementAccess.test.d.ts +0 -1
- package/dist/components/views/teamManagementAccess.test.js +0 -44
- package/dist/config/deployment.test.d.ts +0 -1
- package/dist/config/deployment.test.js +0 -90
- package/dist/config/envSchema.test.d.ts +0 -1
- package/dist/config/envSchema.test.js +0 -125
- package/dist/core/AiProfileService.test.d.ts +0 -1
- package/dist/core/AiProfileService.test.js +0 -184
- package/dist/core/AiProfiles.test.d.ts +0 -1
- package/dist/core/AiProfiles.test.js +0 -1873
- package/dist/core/AuthTokenService.test.d.ts +0 -1
- package/dist/core/AuthTokenService.test.js +0 -78
- package/dist/core/BulkUpdateFieldsPreview.test.d.ts +0 -1
- package/dist/core/BulkUpdateFieldsPreview.test.js +0 -62
- package/dist/core/CompletedAt.test.d.ts +0 -1
- package/dist/core/CompletedAt.test.js +0 -44
- package/dist/core/CreatedBy.test.d.ts +0 -1
- package/dist/core/CreatedBy.test.js +0 -188
- package/dist/core/DeletedTaskTrash.test.d.ts +0 -1
- package/dist/core/DeletedTaskTrash.test.js +0 -104
- package/dist/core/EntitlementsPolicy.test.d.ts +0 -1
- package/dist/core/EntitlementsPolicy.test.js +0 -280
- package/dist/core/GlobalSettingsService.test.d.ts +0 -1
- package/dist/core/GlobalSettingsService.test.js +0 -45
- package/dist/core/JsonBackupRuntime.test.d.ts +0 -1
- package/dist/core/JsonBackupRuntime.test.js +0 -155
- package/dist/core/PlanFeatureCatalog.test.d.ts +0 -1
- package/dist/core/PlanFeatureCatalog.test.js +0 -139
- package/dist/core/PlanVersionPolicy.test.d.ts +0 -1
- package/dist/core/PlanVersionPolicy.test.js +0 -204
- package/dist/core/PlanningEntities.test.d.ts +0 -1
- package/dist/core/PlanningEntities.test.js +0 -509
- package/dist/core/ScheduleFields.test.d.ts +0 -1
- package/dist/core/ScheduleFields.test.js +0 -193
- package/dist/core/SetupState.test.d.ts +0 -1
- package/dist/core/SetupState.test.js +0 -113
- package/dist/core/SignupMonetizationSettings.test.d.ts +0 -1
- package/dist/core/SignupMonetizationSettings.test.js +0 -515
- package/dist/core/Stats.test.d.ts +0 -1
- package/dist/core/Stats.test.js +0 -36
- package/dist/core/SystemAdmin.test.d.ts +0 -1
- package/dist/core/SystemAdmin.test.js +0 -1106
- package/dist/core/TaskActivitySync.test.d.ts +0 -1
- package/dist/core/TaskActivitySync.test.js +0 -90
- package/dist/core/TaskAttachmentsCanonical.test.d.ts +0 -1
- package/dist/core/TaskAttachmentsCanonical.test.js +0 -356
- package/dist/core/TaskAuditTimeline.test.d.ts +0 -1
- package/dist/core/TaskAuditTimeline.test.js +0 -319
- package/dist/core/TaskTaxonomyValidation.test.d.ts +0 -1
- package/dist/core/TaskTaxonomyValidation.test.js +0 -440
- package/dist/core/Taskforce.ids.test.d.ts +0 -1
- package/dist/core/Taskforce.ids.test.js +0 -611
- package/dist/core/Taskforce.listTasksSlim.test.d.ts +0 -1
- package/dist/core/Taskforce.listTasksSlim.test.js +0 -91
- package/dist/core/Taskforce.mcpAuth.test.d.ts +0 -1
- package/dist/core/Taskforce.mcpAuth.test.js +0 -450
- package/dist/core/Taskforce.realtimeMutation.test.d.ts +0 -1
- package/dist/core/Taskforce.realtimeMutation.test.js +0 -131
- package/dist/core/UserProfileAvatarDrafts.test.d.ts +0 -1
- package/dist/core/UserProfileAvatarDrafts.test.js +0 -138
- package/dist/core/WorkspaceDelete.test.d.ts +0 -1
- package/dist/core/WorkspaceDelete.test.js +0 -159
- package/dist/core/WorkspacePermissions.test.d.ts +0 -1
- package/dist/core/WorkspacePermissions.test.js +0 -270
- package/dist/core/WorkspacePlanMode.test.d.ts +0 -1
- package/dist/core/WorkspacePlanMode.test.js +0 -383
- package/dist/core/WorkspaceSyncSettings.test.d.ts +0 -1
- package/dist/core/WorkspaceSyncSettings.test.js +0 -65
- package/dist/core/__tests__/TaskAttachmentsCanonical.test.d.ts +0 -1
- package/dist/core/__tests__/TaskAttachmentsCanonical.test.js +0 -212
- package/dist/documentReviews/DocumentReviewSessionStore.test.d.ts +0 -1
- package/dist/documentReviews/DocumentReviewSessionStore.test.js +0 -127
- package/dist/hooks/authGuardPolicy.test.d.ts +0 -1
- package/dist/hooks/authGuardPolicy.test.js +0 -76
- package/dist/hooks/bootstrapTimeouts.test.d.ts +0 -1
- package/dist/hooks/bootstrapTimeouts.test.js +0 -12
- package/dist/hooks/sync/controlPlane.test.d.ts +0 -1
- package/dist/hooks/sync/controlPlane.test.js +0 -121
- package/dist/hooks/sync/lifecyclePolicy.test.d.ts +0 -1
- package/dist/hooks/sync/lifecyclePolicy.test.js +0 -124
- package/dist/hooks/sync/orchestratorShared.test.d.ts +0 -1
- package/dist/hooks/sync/orchestratorShared.test.js +0 -98
- package/dist/hooks/sync/pullLifecycle.test.d.ts +0 -1
- package/dist/hooks/sync/pullLifecycle.test.js +0 -80
- package/dist/hooks/sync/recovery.test.d.ts +0 -1
- package/dist/hooks/sync/recovery.test.js +0 -292
- package/dist/hooks/sync/transfers.test.d.ts +0 -1
- package/dist/hooks/sync/transfers.test.js +0 -928
- package/dist/hooks/sync/useRecentSyncEvents.test.d.ts +0 -1
- package/dist/hooks/sync/useRecentSyncEvents.test.js +0 -124
- package/dist/hooks/sync/useSyncStatusActions.test.d.ts +0 -1
- package/dist/hooks/sync/useSyncStatusActions.test.js +0 -133
- package/dist/hooks/sync/useSyncStatusControls.test.d.ts +0 -1
- package/dist/hooks/sync/useSyncStatusControls.test.js +0 -88
- package/dist/hooks/useFilterSort.test.d.ts +0 -1
- package/dist/hooks/useFilterSort.test.js +0 -419
- package/dist/hooks/useRealtimeSync.test.d.ts +0 -1
- package/dist/hooks/useRealtimeSync.test.js +0 -311
- package/dist/hooks/useSyncOrchestrator.aiProfiles.test.d.ts +0 -1
- package/dist/hooks/useSyncOrchestrator.aiProfiles.test.js +0 -54
- package/dist/hooks/useSyncOrchestrator.context-assets.test.d.ts +0 -1
- package/dist/hooks/useSyncOrchestrator.context-assets.test.js +0 -228
- package/dist/hooks/useSyncOrchestrator.retry-closure.test.d.ts +0 -1
- package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +0 -2027
- package/dist/hooks/useTaskData.test.d.ts +0 -1
- package/dist/hooks/useTaskData.test.js +0 -291
- package/dist/hooks/useTaskMutations.test.d.ts +0 -1
- package/dist/hooks/useTaskMutations.test.js +0 -256
- package/dist/hooks/useTaskforce.contract.test.d.ts +0 -1
- package/dist/hooks/useTaskforce.contract.test.js +0 -7
- package/dist/hooks/useTaskforce.priority-filters.test.d.ts +0 -1
- package/dist/hooks/useTaskforce.priority-filters.test.js +0 -28
- package/dist/hooks/useTaskforce.runtime-routing.test.d.ts +0 -1
- package/dist/hooks/useTaskforce.runtime-routing.test.js +0 -246
- package/dist/hooks/useTaskforce.sync-behavior.test.d.ts +0 -1
- package/dist/hooks/useTaskforce.sync-behavior.test.js +0 -3644
- package/dist/hooks/useWorkspaceSyncController.test.d.ts +0 -1
- package/dist/hooks/useWorkspaceSyncController.test.js +0 -192
- package/dist/hooks/workspace/useTaskforceApiRouting.test.d.ts +0 -1
- package/dist/hooks/workspace/useTaskforceApiRouting.test.js +0 -77
- package/dist/hooks/workspace/workspaceLocalState.test.d.ts +0 -1
- package/dist/hooks/workspace/workspaceLocalState.test.js +0 -59
- package/dist/localization/localizationCatalogs.test.d.ts +0 -1
- package/dist/localization/localizationCatalogs.test.js +0 -37
- package/dist/mcp/aiProfileBootstrap.test.d.ts +0 -1
- package/dist/mcp/aiProfileBootstrap.test.js +0 -68
- package/dist/mcp/canonicalAssetHelpers.test.d.ts +0 -1
- package/dist/mcp/canonicalAssetHelpers.test.js +0 -67
- package/dist/mcp/clientIntegrations.test.d.ts +0 -1
- package/dist/mcp/clientIntegrations.test.js +0 -219
- package/dist/mcp/optionResolution.test.d.ts +0 -1
- package/dist/mcp/optionResolution.test.js +0 -43
- package/dist/mcp/runtime.test.d.ts +0 -1
- package/dist/mcp/runtime.test.js +0 -5120
- package/dist/mcp/structuredCommentValidation.test.d.ts +0 -1
- package/dist/mcp/structuredCommentValidation.test.js +0 -31
- package/dist/mcp/structuredDocValidation.test.d.ts +0 -1
- package/dist/mcp/structuredDocValidation.test.js +0 -35
- package/dist/mcp/toolRegistry.test.d.ts +0 -1
- package/dist/mcp/toolRegistry.test.js +0 -34
- package/dist/migrations/billingSchemaParity.test.d.ts +0 -1
- package/dist/migrations/billingSchemaParity.test.js +0 -160
- package/dist/migrations/taskSchemaMigrations.test.d.ts +0 -1
- package/dist/migrations/taskSchemaMigrations.test.js +0 -225
- package/dist/qaOpen.test.d.ts +0 -1
- package/dist/qaOpen.test.js +0 -56
- package/dist/releaseVersion.test.d.ts +0 -1
- package/dist/releaseVersion.test.js +0 -32
- package/dist/runtime/appGates.test.d.ts +0 -1
- package/dist/runtime/appGates.test.js +0 -42
- package/dist/server/aiProfileAvatarAssets.test.d.ts +0 -1
- package/dist/server/aiProfileAvatarAssets.test.js +0 -213
- package/dist/server/annotatedAttachmentsRoutes.test.d.ts +0 -1
- package/dist/server/annotatedAttachmentsRoutes.test.js +0 -532
- package/dist/server/auth.test.d.ts +0 -1
- package/dist/server/auth.test.js +0 -131
- package/dist/server/buildInfo.test.d.ts +0 -1
- package/dist/server/buildInfo.test.js +0 -29
- package/dist/server/cors.test.d.ts +0 -1
- package/dist/server/cors.test.js +0 -77
- package/dist/server/documentReviewRoutes.test.d.ts +0 -1
- package/dist/server/documentReviewRoutes.test.js +0 -190
- package/dist/server/email.test.d.ts +0 -1
- package/dist/server/email.test.js +0 -113
- package/dist/server/index.cookieProxy.test.d.ts +0 -1
- package/dist/server/index.cookieProxy.test.js +0 -67
- package/dist/server/index.rateLimit.test.d.ts +0 -1
- package/dist/server/index.rateLimit.test.js +0 -22
- package/dist/server/index.test.d.ts +0 -1
- package/dist/server/index.test.js +0 -283
- package/dist/server/rateLimit.test.d.ts +0 -1
- package/dist/server/rateLimit.test.js +0 -107
- package/dist/server/realtimeSync.auth.test.d.ts +0 -1
- package/dist/server/realtimeSync.auth.test.js +0 -62
- package/dist/server/realtimeSync.replay.test.d.ts +0 -1
- package/dist/server/realtimeSync.replay.test.js +0 -192
- package/dist/server/realtimeSync.workspaceIsolation.test.d.ts +0 -1
- package/dist/server/realtimeSync.workspaceIsolation.test.js +0 -101
- package/dist/server/routes/billing.test.d.ts +0 -1
- package/dist/server/routes/billing.test.js +0 -3455
- package/dist/server/routes/shared.test.d.ts +0 -1
- package/dist/server/routes/shared.test.js +0 -32
- package/dist/server/routes/sync.integration.test.d.ts +0 -1
- package/dist/server/routes/sync.integration.test.js +0 -2932
- package/dist/server/routes/syncAuxRoutes.test.d.ts +0 -1
- package/dist/server/routes/syncAuxRoutes.test.js +0 -158
- package/dist/server/routes/syncRouteGuards.test.d.ts +0 -1
- package/dist/server/routes/syncRouteGuards.test.js +0 -94
- package/dist/server/routes.test.d.ts +0 -1
- package/dist/server/routes.test.js +0 -15612
- package/dist/server/runtimeMode.test.d.ts +0 -1
- package/dist/server/runtimeMode.test.js +0 -26
- package/dist/server/securityHeaders.test.d.ts +0 -1
- package/dist/server/securityHeaders.test.js +0 -70
- package/dist/services/templateEngine.test.d.ts +0 -1
- package/dist/services/templateEngine.test.js +0 -150
- package/dist/services/templates.test.d.ts +0 -1
- package/dist/services/templates.test.js +0 -45
- package/dist/services/workflowDocumentFixtures.test.d.ts +0 -1
- package/dist/services/workflowDocumentFixtures.test.js +0 -78
- package/dist/services/workflowExportMatrix.test.d.ts +0 -1
- package/dist/services/workflowExportMatrix.test.js +0 -113
- package/dist/services/workflowExportSnapshots.test.d.ts +0 -1
- package/dist/services/workflowExportSnapshots.test.js +0 -30
- package/dist/services/workflowGeneration.test.d.ts +0 -1
- package/dist/services/workflowGeneration.test.js +0 -12
- package/dist/services/workflowSimulation.test.d.ts +0 -1
- package/dist/services/workflowSimulation.test.js +0 -113
- package/dist/services/workflowV2Policy.test.d.ts +0 -1
- package/dist/services/workflowV2Policy.test.js +0 -80
- package/dist/shared/customTaxonomyLibrary.test.d.ts +0 -1
- package/dist/shared/customTaxonomyLibrary.test.js +0 -20
- package/dist/shared/passwordPolicy.test.d.ts +0 -1
- package/dist/shared/passwordPolicy.test.js +0 -34
- package/dist/shared/runtimeContract.test.d.ts +0 -1
- package/dist/shared/runtimeContract.test.js +0 -23
- package/dist/shared/taxonomyLibrary.test.d.ts +0 -1
- package/dist/shared/taxonomyLibrary.test.js +0 -26
- package/dist/shared/taxonomyState.test.d.ts +0 -1
- package/dist/shared/taxonomyState.test.js +0 -71
- package/dist/soak/preflight.cli.d.ts +0 -1
- package/dist/soak/preflight.cli.js +0 -28
- package/dist/soak/preflight.d.ts +0 -26
- package/dist/soak/preflight.js +0 -113
- package/dist/soak/preflight.test.d.ts +0 -1
- package/dist/soak/preflight.test.js +0 -39
- package/dist/storage/objectStorageClient.test.d.ts +0 -1
- package/dist/storage/objectStorageClient.test.js +0 -82
- package/dist/storage/objectStorageConfig.test.d.ts +0 -1
- package/dist/storage/objectStorageConfig.test.js +0 -50
- package/dist/storage/postgresAdapter.test.d.ts +0 -1
- package/dist/storage/postgresAdapter.test.js +0 -29
- package/dist/storage/workspaceAssetStore.test.d.ts +0 -1
- package/dist/storage/workspaceAssetStore.test.js +0 -588
- package/dist/sync/cloudSyncApi.test.d.ts +0 -1
- package/dist/sync/cloudSyncApi.test.js +0 -111
- package/dist/sync/collaborationSyncPayload.test.d.ts +0 -1
- package/dist/sync/collaborationSyncPayload.test.js +0 -125
- package/dist/sync/contentSyncPayload.test.d.ts +0 -1
- package/dist/sync/contentSyncPayload.test.js +0 -143
- package/dist/sync/encryptionService.test.d.ts +0 -1
- package/dist/sync/encryptionService.test.js +0 -52
- package/dist/sync/planningSyncPayload.test.d.ts +0 -1
- package/dist/sync/planningSyncPayload.test.js +0 -92
- package/dist/sync/realtimeFeature.test.d.ts +0 -1
- package/dist/sync/realtimeFeature.test.js +0 -30
- package/dist/sync/realtimeReconcile.test.d.ts +0 -1
- package/dist/sync/realtimeReconcile.test.js +0 -43
- package/dist/sync/syncApplyHandlers.test.d.ts +0 -1
- package/dist/sync/syncApplyHandlers.test.js +0 -626
- package/dist/sync/syncService.test.d.ts +0 -1
- package/dist/sync/syncService.test.js +0 -903
- package/dist/sync/taskSyncPayload.test.d.ts +0 -1
- package/dist/sync/taskSyncPayload.test.js +0 -54
- package/dist/sync/workspacePullFeed.test.d.ts +0 -1
- package/dist/sync/workspacePullFeed.test.js +0 -438
- package/dist/sync/workspaceSyncModel.test.d.ts +0 -1
- package/dist/sync/workspaceSyncModel.test.js +0 -1442
- package/dist/test/setup.d.ts +0 -1
- package/dist/test/setup.js +0 -15
- package/dist/ui/assets/AgentsModule-BS4Pi_nC.js +0 -1
- package/dist/ui/assets/ContextAttachmentManager-CfG_ER7C.js +0 -3
- package/dist/ui/assets/PlansPage-B_z-D6Nh.css +0 -1
- package/dist/ui/assets/PlansPage-Ndt7mYfo.js +0 -1
- package/dist/ui/assets/documentReferences-BOUcJm6-.js +0 -1
- package/dist/ui/assets/index-MAHKvFqp.js +0 -4
- package/dist/utils/accountProfileSummaryCache.test.d.ts +0 -1
- package/dist/utils/accountProfileSummaryCache.test.js +0 -63
- package/dist/utils/annotatedAttachments.test.d.ts +0 -1
- package/dist/utils/annotatedAttachments.test.js +0 -108
- package/dist/utils/assignees.test.d.ts +0 -1
- package/dist/utils/assignees.test.js +0 -25
- package/dist/utils/avatarUpload.test.d.ts +0 -1
- package/dist/utils/avatarUpload.test.js +0 -40
- package/dist/utils/canonicalAssetKind.test.d.ts +0 -1
- package/dist/utils/canonicalAssetKind.test.js +0 -24
- package/dist/utils/coalescedRefresh.test.d.ts +0 -1
- package/dist/utils/coalescedRefresh.test.js +0 -30
- package/dist/utils/constants.icons.test.d.ts +0 -1
- package/dist/utils/constants.icons.test.js +0 -41
- package/dist/utils/planParser.test.d.ts +0 -1
- package/dist/utils/planParser.test.js +0 -183
- package/dist/utils/planningReferences.test.d.ts +0 -1
- package/dist/utils/planningReferences.test.js +0 -17
- package/dist/utils/syncEventDetails.test.d.ts +0 -1
- package/dist/utils/syncEventDetails.test.js +0 -23
- package/dist/utils/syncEventPresentation.test.d.ts +0 -1
- package/dist/utils/syncEventPresentation.test.js +0 -64
- package/dist/utils/syncStatusPresentation.test.d.ts +0 -1
- package/dist/utils/syncStatusPresentation.test.js +0 -164
- package/dist/utils/taskActivity.test.d.ts +0 -1
- package/dist/utils/taskActivity.test.js +0 -218
- package/dist/utils/taskDraftDefaults.test.d.ts +0 -1
- package/dist/utils/taskDraftDefaults.test.js +0 -34
- package/dist/utils/taskDragZones.test.d.ts +0 -1
- package/dist/utils/taskDragZones.test.js +0 -14
- package/dist/utils/taskNormalization.test.d.ts +0 -1
- package/dist/utils/taskNormalization.test.js +0 -158
- package/dist/utils/taskSearch.test.d.ts +0 -1
- package/dist/utils/taskSearch.test.js +0 -69
- package/dist/utils/taskUtils.test.d.ts +0 -1
- package/dist/utils/taskUtils.test.js +0 -19
- package/dist/utils/taskforceApiClient.test.d.ts +0 -1
- package/dist/utils/taskforceApiClient.test.js +0 -44
- package/dist/utils/taxonomyFormDefaults.test.d.ts +0 -1
- package/dist/utils/taxonomyFormDefaults.test.js +0 -63
- package/dist/utils/uiNotice.test.d.ts +0 -1
- package/dist/utils/uiNotice.test.js +0 -18
- package/dist/utils/workspaceIdentity.test.d.ts +0 -1
- package/dist/utils/workspaceIdentity.test.js +0 -61
- package/dist/utils/workspaceLifecycle.test.d.ts +0 -1
- package/dist/utils/workspaceLifecycle.test.js +0 -64
- package/dist/utils/workspaceSyncPresentation.test.d.ts +0 -1
- package/dist/utils/workspaceSyncPresentation.test.js +0 -71
- package/scripts/bootstrap-playwright-auth.mjs +0 -155
- package/scripts/check-cloud-mcp.mjs +0 -83
- package/scripts/check-compat-boundaries.mjs +0 -41
- package/scripts/check-env.ts +0 -31
- package/scripts/check-localization-strings.mjs +0 -49
- package/scripts/check-runtime-boundaries.mjs +0 -44
- package/scripts/debug-global.mjs +0 -34
- package/scripts/debug-login.mjs +0 -32
- package/scripts/debug-server.mjs +0 -36
- package/scripts/deploy-prod.sh +0 -41
- package/scripts/deploy-staging.sh +0 -23
- package/scripts/export-sqlite-to-postgres.mjs +0 -123
- package/scripts/generate-env-example.ts +0 -8
- package/scripts/mcp-stdio-adapter.mjs +0 -160
- package/scripts/migrate-task-data-assets.mjs +0 -408
- package/scripts/playwright-auth.sh +0 -19
- package/scripts/qa-open-lib.mjs +0 -175
- package/scripts/qa-open-lib.mjs.d.ts +0 -49
- package/scripts/qa-open.mjs +0 -352
- package/scripts/release-version-lib.mjs +0 -88
- package/scripts/release-version.mjs +0 -72
- package/scripts/run-billing-performance-smoke.sh +0 -24
- package/scripts/run-dev-proxy.sh +0 -51
- package/scripts/run-e2e-realtime.sh +0 -30
- package/scripts/run-smoke.sh +0 -35
- package/scripts/run-soak.sh +0 -41
- package/scripts/test-global.js +0 -143
- package/scripts/update-homebrew-formula.sh +0 -108
- 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');
|
package/scripts/check-env.ts
DELETED
|
@@ -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');
|
package/scripts/debug-global.mjs
DELETED
|
@@ -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
|
-
}
|
package/scripts/debug-login.mjs
DELETED
|
@@ -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
|
-
})();
|
package/scripts/debug-server.mjs
DELETED
|
@@ -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
|
-
}
|
package/scripts/deploy-prod.sh
DELETED
|
@@ -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}`);
|