@taskforcehq/taskforce 0.3.168
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 +241 -0
- package/dist/Taskforce.d.ts +3 -0
- package/dist/Taskforce.js +3 -0
- package/dist/Taskforce.module.css +7587 -0
- package/dist/TaskforceCore.CategoryFallback.test.d.ts +1 -0
- package/dist/TaskforceCore.CategoryFallback.test.js +98 -0
- package/dist/TaskforceCore.d.ts +12 -0
- package/dist/TaskforceCore.js +729 -0
- package/dist/TaskforceCore.test.d.ts +1 -0
- package/dist/TaskforceCore.test.js +2132 -0
- package/dist/TaskforceScreenshot.d.ts +11 -0
- package/dist/TaskforceScreenshot.js +113 -0
- package/dist/TaskforceWidget.d.ts +6 -0
- package/dist/TaskforceWidget.js +101 -0
- package/dist/TaskforceWidget.test.d.ts +1 -0
- package/dist/TaskforceWidget.test.js +92 -0
- package/dist/UnsavedChangesRelaxed.test.d.ts +1 -0
- package/dist/UnsavedChangesRelaxed.test.js +16 -0
- package/dist/__tests__/localizationCatalogs.test.d.ts +1 -0
- package/dist/__tests__/localizationCatalogs.test.js +37 -0
- package/dist/__tests__/planParser.test.d.ts +1 -0
- package/dist/__tests__/planParser.test.js +183 -0
- package/dist/__tests__/releaseVersion.test.d.ts +1 -0
- package/dist/__tests__/releaseVersion.test.js +32 -0
- package/dist/__tests__/structuredCommentValidation.test.d.ts +1 -0
- package/dist/__tests__/structuredCommentValidation.test.js +31 -0
- package/dist/__tests__/structuredDocValidation.test.d.ts +1 -0
- package/dist/__tests__/structuredDocValidation.test.js +30 -0
- package/dist/__tests__/templateEngine.test.d.ts +1 -0
- package/dist/__tests__/templateEngine.test.js +150 -0
- package/dist/__tests__/templates.test.d.ts +1 -0
- package/dist/__tests__/templates.test.js +45 -0
- package/dist/__tests__/workflowDocumentFixtures.test.d.ts +1 -0
- package/dist/__tests__/workflowDocumentFixtures.test.js +78 -0
- package/dist/__tests__/workflowExportMatrix.test.d.ts +1 -0
- package/dist/__tests__/workflowExportMatrix.test.js +113 -0
- package/dist/__tests__/workflowExportSnapshots.test.d.ts +1 -0
- package/dist/__tests__/workflowExportSnapshots.test.js +28 -0
- package/dist/__tests__/workflowGeneration.test.d.ts +1 -0
- package/dist/__tests__/workflowGeneration.test.js +12 -0
- package/dist/__tests__/workflowSimulation.test.d.ts +1 -0
- package/dist/__tests__/workflowSimulation.test.js +113 -0
- package/dist/__tests__/workflowV2Policy.test.d.ts +1 -0
- package/dist/__tests__/workflowV2Policy.test.js +80 -0
- package/dist/api.d.ts +30 -0
- package/dist/api.js +85 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +217 -0
- package/dist/compat/priorityCompat.d.ts +2 -0
- package/dist/compat/priorityCompat.js +24 -0
- package/dist/components/features/DocumentGenerateModal.d.ts +9 -0
- package/dist/components/features/DocumentGenerateModal.js +114 -0
- package/dist/components/features/DocumentIndex.d.ts +19 -0
- package/dist/components/features/DocumentIndex.js +51 -0
- package/dist/components/features/DocumentViewer.d.ts +9 -0
- package/dist/components/features/DocumentViewer.js +253 -0
- package/dist/components/features/DocumentWorkspace.d.ts +21 -0
- package/dist/components/features/DocumentWorkspace.js +88 -0
- package/dist/components/features/TaskSettings.d.ts +209 -0
- package/dist/components/features/TaskSettings.js +500 -0
- package/dist/components/features/TaskSettings.test.d.ts +1 -0
- package/dist/components/features/TaskSettings.test.js +308 -0
- package/dist/components/features/settings/CategoryManager.d.ts +19 -0
- package/dist/components/features/settings/CategoryManager.js +113 -0
- package/dist/components/features/settings/TaxonomyEditor.d.ts +8 -0
- package/dist/components/features/settings/TaxonomyEditor.js +98 -0
- package/dist/components/features/settings/TaxonomyManager 2.d.ts +52 -0
- package/dist/components/features/settings/TaxonomyManager 2.js +75 -0
- package/dist/components/features/settings/TaxonomyManager.d.ts +54 -0
- package/dist/components/features/settings/TaxonomyManager.js +77 -0
- package/dist/components/features/settings/TypeManager.d.ts +10 -0
- package/dist/components/features/settings/TypeManager.js +50 -0
- package/dist/components/features/settings/WorkflowEditorPrototype.d.ts +15 -0
- package/dist/components/features/settings/WorkflowEditorPrototype.js +245 -0
- package/dist/components/task/TaskActionHeader.d.ts +20 -0
- package/dist/components/task/TaskActionHeader.js +13 -0
- package/dist/components/task/TaskCard.d.ts +47 -0
- package/dist/components/task/TaskCard.js +326 -0
- package/dist/components/task/TaskCard.test.d.ts +1 -0
- package/dist/components/task/TaskCard.test.js +95 -0
- package/dist/components/task/TaskContextUpload.d.ts +12 -0
- package/dist/components/task/TaskContextUpload.js +393 -0
- package/dist/components/task/TaskContextUpload.test.d.ts +1 -0
- package/dist/components/task/TaskContextUpload.test.js +189 -0
- package/dist/components/task/TaskForm.d.ts +105 -0
- package/dist/components/task/TaskForm.js +241 -0
- package/dist/components/task/TaskForm.test.d.ts +1 -0
- package/dist/components/task/TaskForm.test.js +288 -0
- package/dist/components/task/TaskKanban 2.d.ts +76 -0
- package/dist/components/task/TaskKanban 2.js +1004 -0
- package/dist/components/task/TaskKanban.d.ts +76 -0
- package/dist/components/task/TaskKanban.empty-column-drop.test.d.ts +1 -0
- package/dist/components/task/TaskKanban.empty-column-drop.test.js +66 -0
- package/dist/components/task/TaskKanban.js +1026 -0
- package/dist/components/task/TaskKanban.test.d.ts +1 -0
- package/dist/components/task/TaskKanban.test.js +46 -0
- package/dist/components/task/TaskList.d.ts +74 -0
- package/dist/components/task/TaskList.js +38 -0
- package/dist/components/task/TaskList.test.d.ts +1 -0
- package/dist/components/task/TaskList.test.js +270 -0
- package/dist/components/task/TaskScreenshotSection.d.ts +15 -0
- package/dist/components/task/TaskScreenshotSection.js +22 -0
- package/dist/components/ui/LevelSelector.d.ts +13 -0
- package/dist/components/ui/LevelSelector.js +25 -0
- package/dist/components/ui/LevelSelector.test.d.ts +1 -0
- package/dist/components/ui/LevelSelector.test.js +55 -0
- package/dist/components/ui/Markdown.d.ts +6 -0
- package/dist/components/ui/Markdown.js +94 -0
- package/dist/components/ui/Markdown.test.d.ts +1 -0
- package/dist/components/ui/Markdown.test.js +38 -0
- package/dist/components/ui/Modal.d.ts +16 -0
- package/dist/components/ui/Modal.js +49 -0
- package/dist/components/ui/MultiSelectFilter.d.ts +10 -0
- package/dist/components/ui/MultiSelectFilter.js +71 -0
- package/dist/components/ui/MultiSelectFilter.test.d.ts +1 -0
- package/dist/components/ui/MultiSelectFilter.test.js +74 -0
- package/dist/components/ui/TaxonomyDropdown.d.ts +17 -0
- package/dist/components/ui/TaxonomyDropdown.js +145 -0
- package/dist/components/ui/TaxonomyDropdown.test.d.ts +1 -0
- package/dist/components/ui/TaxonomyDropdown.test.js +130 -0
- package/dist/components/views/StandaloneLayout 2.d.ts +8 -0
- package/dist/components/views/StandaloneLayout 2.js +1660 -0
- package/dist/components/views/StandaloneLayout.d.ts +8 -0
- package/dist/components/views/StandaloneLayout.js +2117 -0
- package/dist/components/views/WidgetView.d.ts +8 -0
- package/dist/components/views/WidgetView.js +221 -0
- package/dist/config/envSchema.d.ts +28 -0
- package/dist/config/envSchema.js +374 -0
- package/dist/config/envSchema.test.d.ts +1 -0
- package/dist/config/envSchema.test.js +97 -0
- package/dist/config/surfaceBase.d.ts +2 -0
- package/dist/config/surfaceBase.js +8 -0
- package/dist/core/BulkUpdateFieldsPreview.test.d.ts +1 -0
- package/dist/core/BulkUpdateFieldsPreview.test.js +62 -0
- package/dist/core/CompletedAt.test.d.ts +1 -0
- package/dist/core/CompletedAt.test.js +44 -0
- package/dist/core/CreatedBy.test.d.ts +1 -0
- package/dist/core/CreatedBy.test.js +60 -0
- package/dist/core/EntitlementsPolicy.test.d.ts +1 -0
- package/dist/core/EntitlementsPolicy.test.js +145 -0
- package/dist/core/InitiativeTemplates.test.d.ts +1 -0
- package/dist/core/InitiativeTemplates.test.js +50 -0
- package/dist/core/ParentLifecycle.test.d.ts +1 -0
- package/dist/core/ParentLifecycle.test.js +98 -0
- package/dist/core/ScheduleFields.test.d.ts +1 -0
- package/dist/core/ScheduleFields.test.js +197 -0
- package/dist/core/SetupState.test.d.ts +1 -0
- package/dist/core/SetupState.test.js +113 -0
- package/dist/core/SystemAdmin.test.d.ts +1 -0
- package/dist/core/SystemAdmin.test.js +295 -0
- package/dist/core/TaskTaxonomyValidation.test.d.ts +1 -0
- package/dist/core/TaskTaxonomyValidation.test.js +64 -0
- package/dist/core/Taskforce.d.ts +1063 -0
- package/dist/core/Taskforce.ids.test.d.ts +1 -0
- package/dist/core/Taskforce.ids.test.js +168 -0
- package/dist/core/Taskforce.js +5981 -0
- package/dist/core/Taskforce.realtimeMutation.test.d.ts +1 -0
- package/dist/core/Taskforce.realtimeMutation.test.js +76 -0
- package/dist/core/WorkspaceDelete.test.d.ts +1 -0
- package/dist/core/WorkspaceDelete.test.js +140 -0
- package/dist/core/WorkspacePermissions.test.d.ts +1 -0
- package/dist/core/WorkspacePermissions.test.js +151 -0
- package/dist/core/WorkspacePlanMode.test.d.ts +1 -0
- package/dist/core/WorkspacePlanMode.test.js +104 -0
- package/dist/hooks/authGuardPolicy.d.ts +26 -0
- package/dist/hooks/authGuardPolicy.js +32 -0
- package/dist/hooks/authGuardPolicy.test.d.ts +1 -0
- package/dist/hooks/authGuardPolicy.test.js +76 -0
- package/dist/hooks/useDraggable.d.ts +12 -0
- package/dist/hooks/useDraggable.js +65 -0
- package/dist/hooks/useRealtimeSync.d.ts +24 -0
- package/dist/hooks/useRealtimeSync.js +275 -0
- package/dist/hooks/useRealtimeSync.test.d.ts +1 -0
- package/dist/hooks/useRealtimeSync.test.js +284 -0
- package/dist/hooks/useSyncOrchestrator.d.ts +164 -0
- package/dist/hooks/useSyncOrchestrator.js +1427 -0
- package/dist/hooks/useSyncOrchestrator.retry-closure.test.d.ts +1 -0
- package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +367 -0
- package/dist/hooks/useTaskforce.d.ts +727 -0
- package/dist/hooks/useTaskforce.js +4396 -0
- package/dist/hooks/useTaskforce.priority-filters.test.d.ts +1 -0
- package/dist/hooks/useTaskforce.priority-filters.test.js +33 -0
- package/dist/hooks/useWorkspaceSyncController.d.ts +80 -0
- package/dist/hooks/useWorkspaceSyncController.js +598 -0
- package/dist/hooks/useWorkspaceSyncController.test.d.ts +1 -0
- package/dist/hooks/useWorkspaceSyncController.test.js +236 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +11 -0
- package/dist/localization/index.d.ts +8 -0
- package/dist/localization/index.js +81 -0
- package/dist/localization/locales/en-US.d.ts +151 -0
- package/dist/localization/locales/en-US.js +150 -0
- package/dist/localization/locales/es-419.d.ts +2 -0
- package/dist/localization/locales/es-419.js +150 -0
- package/dist/localization/locales/pt-BR.d.ts +2 -0
- package/dist/localization/locales/pt-BR.js +150 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +33 -0
- package/dist/mcp/optionResolution.d.ts +14 -0
- package/dist/mcp/optionResolution.js +126 -0
- package/dist/mcp/optionResolution.test.d.ts +1 -0
- package/dist/mcp/optionResolution.test.js +39 -0
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.js +1793 -0
- package/dist/mcp/structuredCommentValidation.d.ts +6 -0
- package/dist/mcp/structuredCommentValidation.js +56 -0
- package/dist/mcp/structuredDocValidation.d.ts +6 -0
- package/dist/mcp/structuredDocValidation.js +75 -0
- package/dist/migrations/billingSchemaParity.test.d.ts +1 -0
- package/dist/migrations/billingSchemaParity.test.js +46 -0
- package/dist/migrations/clientMigrations.d.ts +9 -0
- package/dist/migrations/clientMigrations.js +74 -0
- package/dist/migrations/flags.d.ts +6 -0
- package/dist/migrations/flags.js +8 -0
- package/dist/migrations/taskMigrations.d.ts +71 -0
- package/dist/migrations/taskMigrations.js +236 -0
- package/dist/migrations/taskMigrations.test.d.ts +1 -0
- package/dist/migrations/taskMigrations.test.js +34 -0
- package/dist/migrations/taskSchemaMigrations.d.ts +11 -0
- package/dist/migrations/taskSchemaMigrations.js +453 -0
- package/dist/plugins/index.d.ts +10 -0
- package/dist/plugins/index.js +10 -0
- package/dist/plugins/vite.d.ts +19 -0
- package/dist/plugins/vite.js +271 -0
- package/dist/public/android-chrome-192x192.png +0 -0
- package/dist/public/android-chrome-512x512.png +0 -0
- package/dist/public/apple-touch-icon.png +0 -0
- package/dist/public/favicon-16x16.png +0 -0
- package/dist/public/favicon-32x32.png +0 -0
- package/dist/public/favicon.ico +0 -0
- package/dist/public/favicon.png +0 -0
- package/dist/public/site.webmanifest +1 -0
- package/dist/public/taskforce.png +0 -0
- package/dist/resources/templates/WORKFLOW_V2_POLICY.md +55 -0
- package/dist/resources/templates/environments/aider.yaml +14 -0
- package/dist/resources/templates/environments/antigravity.yaml +10 -0
- package/dist/resources/templates/environments/claude.yaml +10 -0
- package/dist/resources/templates/environments/cline.yaml +10 -0
- package/dist/resources/templates/environments/codex.yaml +13 -0
- package/dist/resources/templates/environments/copilot.yaml +10 -0
- package/dist/resources/templates/environments/cursor.yaml +9 -0
- package/dist/resources/templates/environments/gemini.yaml +9 -0
- package/dist/resources/templates/environments/windsurf.yaml +10 -0
- package/dist/resources/templates/workflow-sources/README.md +9 -0
- package/dist/resources/templates/workflow-sources/workflowDocs.mjs +520 -0
- package/dist/resources/templates/workflow-sources/workflowEditorOverrides.json +1 -0
- package/dist/resources/templates/workflows/collaborate.yaml +104 -0
- package/dist/resources/templates/workflows/do.yaml +82 -0
- package/dist/resources/templates/workflows/evaluate.yaml +111 -0
- package/dist/resources/templates/workflows/execute.yaml +142 -0
- package/dist/resources/templates/workflows/plan.yaml +112 -0
- package/dist/resources/templates/workflows/review.yaml +109 -0
- package/dist/runtime/capabilities.d.ts +8 -0
- package/dist/runtime/capabilities.js +16 -0
- package/dist/security/virusScan.d.ts +16 -0
- package/dist/security/virusScan.js +83 -0
- package/dist/server/auth.d.ts +51 -0
- package/dist/server/auth.js +266 -0
- package/dist/server/auth.test.d.ts +1 -0
- package/dist/server/auth.test.js +111 -0
- package/dist/server/buildInfo.d.ts +7 -0
- package/dist/server/buildInfo.js +100 -0
- package/dist/server/buildInfo.test.d.ts +1 -0
- package/dist/server/buildInfo.test.js +29 -0
- package/dist/server/cors.d.ts +7 -0
- package/dist/server/cors.js +76 -0
- package/dist/server/cors.test.d.ts +1 -0
- package/dist/server/cors.test.js +71 -0
- package/dist/server/email.d.ts +28 -0
- package/dist/server/email.js +138 -0
- package/dist/server/email.test.d.ts +1 -0
- package/dist/server/email.test.js +113 -0
- package/dist/server/index.cookieProxy.test.d.ts +1 -0
- package/dist/server/index.cookieProxy.test.js +19 -0
- package/dist/server/index.d.ts +17 -0
- package/dist/server/index.js +757 -0
- package/dist/server/index.rateLimit.test.d.ts +1 -0
- package/dist/server/index.rateLimit.test.js +13 -0
- package/dist/server/index.test.d.ts +1 -0
- package/dist/server/index.test.js +19 -0
- package/dist/server/rateLimit.d.ts +29 -0
- package/dist/server/rateLimit.js +99 -0
- package/dist/server/rateLimit.test.d.ts +1 -0
- package/dist/server/rateLimit.test.js +107 -0
- package/dist/server/realtimeSync.auth.test.d.ts +1 -0
- package/dist/server/realtimeSync.auth.test.js +62 -0
- package/dist/server/realtimeSync.replay.test.d.ts +1 -0
- package/dist/server/realtimeSync.replay.test.js +192 -0
- package/dist/server/realtimeSync.workspaceIsolation.test.d.ts +1 -0
- package/dist/server/realtimeSync.workspaceIsolation.test.js +101 -0
- package/dist/server/realtimeSyncWs.d.ts +30 -0
- package/dist/server/realtimeSyncWs.js +257 -0
- package/dist/server/routes.billing.d.ts +15 -0
- package/dist/server/routes.billing.js +991 -0
- package/dist/server/routes.billing.test.d.ts +1 -0
- package/dist/server/routes.billing.test.js +387 -0
- package/dist/server/routes.d.ts +72 -0
- package/dist/server/routes.js +4820 -0
- package/dist/server/routes.sync.d.ts +17 -0
- package/dist/server/routes.sync.integration.test.d.ts +1 -0
- package/dist/server/routes.sync.integration.test.js +470 -0
- package/dist/server/routes.sync.js +1141 -0
- package/dist/server/routes.test.d.ts +1 -0
- package/dist/server/routes.test.js +4945 -0
- package/dist/server/runtimeMode.d.ts +4 -0
- package/dist/server/runtimeMode.js +25 -0
- package/dist/server/runtimeMode.test.d.ts +1 -0
- package/dist/server/runtimeMode.test.js +26 -0
- package/dist/server/securityHeaders.d.ts +3 -0
- package/dist/server/securityHeaders.js +25 -0
- package/dist/server/securityHeaders.test.d.ts +1 -0
- package/dist/server/securityHeaders.test.js +32 -0
- package/dist/server/smtpTransport.d.ts +21 -0
- package/dist/server/smtpTransport.js +11 -0
- package/dist/server/start.d.ts +1 -0
- package/dist/server/start.js +17 -0
- package/dist/services/formatTransformers.d.ts +29 -0
- package/dist/services/formatTransformers.js +56 -0
- package/dist/services/templateEngine.d.ts +46 -0
- package/dist/services/templateEngine.js +148 -0
- package/dist/shared/runtimeContract.d.ts +12 -0
- package/dist/shared/runtimeContract.js +23 -0
- package/dist/shared/runtimeContract.test.d.ts +1 -0
- package/dist/shared/runtimeContract.test.js +23 -0
- package/dist/soak/preflight.cli.d.ts +1 -0
- package/dist/soak/preflight.cli.js +28 -0
- package/dist/soak/preflight.d.ts +26 -0
- package/dist/soak/preflight.js +113 -0
- package/dist/soak/preflight.test.d.ts +1 -0
- package/dist/soak/preflight.test.js +39 -0
- package/dist/soak/syncSoakHarness.d.ts +6 -0
- package/dist/soak/syncSoakHarness.js +10 -0
- package/dist/storage/createDatabaseAdapter.d.ts +2 -0
- package/dist/storage/createDatabaseAdapter.js +9 -0
- package/dist/storage/databaseAdapter.d.ts +22 -0
- package/dist/storage/databaseAdapter.js +1 -0
- package/dist/storage/documentIntegrity.d.ts +28 -0
- package/dist/storage/documentIntegrity.js +103 -0
- package/dist/storage/documentPurge.d.ts +14 -0
- package/dist/storage/documentPurge.js +46 -0
- package/dist/storage/documentRegistry.d.ts +39 -0
- package/dist/storage/documentRegistry.js +115 -0
- package/dist/storage/integritySchedule.d.ts +17 -0
- package/dist/storage/integritySchedule.js +62 -0
- package/dist/storage/objectStorage.d.ts +20 -0
- package/dist/storage/objectStorage.js +15 -0
- package/dist/storage/objectStorageClient.d.ts +18 -0
- package/dist/storage/objectStorageClient.js +301 -0
- package/dist/storage/objectStorageConfig.d.ts +2 -0
- package/dist/storage/objectStorageConfig.js +45 -0
- package/dist/storage/postgresAdapter.d.ts +20 -0
- package/dist/storage/postgresAdapter.js +204 -0
- package/dist/storage/postgresWorker.d.ts +1 -0
- package/dist/storage/postgresWorker.js +110 -0
- package/dist/storage/providerConfig.d.ts +6 -0
- package/dist/storage/providerConfig.js +11 -0
- package/dist/storage/sqliteAdapter.d.ts +14 -0
- package/dist/storage/sqliteAdapter.js +28 -0
- package/dist/storage/taskAssetStore.d.ts +56 -0
- package/dist/storage/taskAssetStore.js +297 -0
- package/dist/sync/cloudSyncApi.d.ts +47 -0
- package/dist/sync/cloudSyncApi.js +138 -0
- package/dist/sync/cloudSyncApi.test.d.ts +1 -0
- package/dist/sync/cloudSyncApi.test.js +54 -0
- package/dist/sync/encryptionService.d.ts +11 -0
- package/dist/sync/encryptionService.js +61 -0
- package/dist/sync/encryptionService.test.d.ts +1 -0
- package/dist/sync/encryptionService.test.js +52 -0
- package/dist/sync/realtimeFeature.d.ts +6 -0
- package/dist/sync/realtimeFeature.js +20 -0
- package/dist/sync/realtimeFeature.test.d.ts +1 -0
- package/dist/sync/realtimeFeature.test.js +30 -0
- package/dist/sync/realtimeReconcile.d.ts +30 -0
- package/dist/sync/realtimeReconcile.js +90 -0
- package/dist/sync/realtimeReconcile.test.d.ts +1 -0
- package/dist/sync/realtimeReconcile.test.js +43 -0
- package/dist/sync/syncService.d.ts +96 -0
- package/dist/sync/syncService.js +423 -0
- package/dist/sync/syncService.test.d.ts +1 -0
- package/dist/sync/syncService.test.js +484 -0
- package/dist/sync/workspaceSyncModel.d.ts +61 -0
- package/dist/sync/workspaceSyncModel.js +136 -0
- package/dist/sync/workspaceSyncModel.test.d.ts +1 -0
- package/dist/sync/workspaceSyncModel.test.js +73 -0
- package/dist/test/setup.d.ts +1 -0
- package/dist/test/setup.js +15 -0
- package/dist/types.d.ts +157 -0
- package/dist/types.js +41 -0
- package/dist/ui/assets/RussoOne-Regular-C3BxZIj7.ttf +0 -0
- package/dist/ui/assets/index-0W5vyCpn.css +1 -0
- package/dist/ui/assets/index-MCZuNNfn.js +23 -0
- package/dist/ui/assets/logo_white_01-0Vx-iIIv.png +0 -0
- package/dist/ui/assets/taskforce-BxLPokNB.png +0 -0
- package/dist/ui/assets/vendor-dnd-BI1K77C1.js +5 -0
- package/dist/ui/assets/vendor-icons-ZFG3SGwo.js +1 -0
- package/dist/ui/assets/vendor-markdown-CKYkQHfj.js +29 -0
- package/dist/ui/assets/vendor-react-DdIDsh7f.js +9 -0
- package/dist/ui/assets/vendor-router-BtiNU7Dl.js +3 -0
- package/dist/ui/branding/logos/logo_black_01.png +0 -0
- package/dist/ui/branding/logos/logo_black_02.png +0 -0
- package/dist/ui/branding/logos/logo_white_01.png +0 -0
- package/dist/ui/branding/logos/logo_white_02.png +0 -0
- package/dist/ui/favicon/android-chrome-192x192.png +0 -0
- package/dist/ui/favicon/android-chrome-512x512.png +0 -0
- package/dist/ui/favicon/apple-touch-icon.png +0 -0
- package/dist/ui/favicon/favicon-16x16.png +0 -0
- package/dist/ui/favicon/favicon-32x32.png +0 -0
- package/dist/ui/favicon/favicon.ico +0 -0
- package/dist/ui/favicon/favicon.png +0 -0
- package/dist/ui/favicon/site.webmanifest +1 -0
- package/dist/ui/fonts/RussoOne-Regular.ttf +0 -0
- package/dist/ui/images/taskforce.png +0 -0
- package/dist/ui/index.html +19 -0
- package/dist/utils/checklistMarkdown.d.ts +9 -0
- package/dist/utils/checklistMarkdown.js +46 -0
- package/dist/utils/constants.d.ts +21 -0
- package/dist/utils/constants.icons.test.d.ts +1 -0
- package/dist/utils/constants.icons.test.js +40 -0
- package/dist/utils/constants.js +100 -0
- package/dist/utils/contextFiles.d.ts +8 -0
- package/dist/utils/contextFiles.js +54 -0
- package/dist/utils/formatting.d.ts +5 -0
- package/dist/utils/formatting.js +30 -0
- package/dist/utils/planParser.d.ts +22 -0
- package/dist/utils/planParser.js +151 -0
- package/dist/utils/taskDragZones.d.ts +8 -0
- package/dist/utils/taskDragZones.js +14 -0
- package/dist/utils/taskDragZones.test.d.ts +1 -0
- package/dist/utils/taskDragZones.test.js +14 -0
- package/dist/utils/taskHierarchy.d.ts +4 -0
- package/dist/utils/taskHierarchy.js +69 -0
- package/dist/utils/taskHierarchy.test.d.ts +1 -0
- package/dist/utils/taskHierarchy.test.js +38 -0
- package/dist/utils/taskParenting.d.ts +3 -0
- package/dist/utils/taskParenting.js +24 -0
- package/dist/utils/taskParenting.test.d.ts +1 -0
- package/dist/utils/taskParenting.test.js +21 -0
- package/dist/utils/taskRelations.d.ts +6 -0
- package/dist/utils/taskRelations.js +24 -0
- package/dist/utils/taskRelations.test.d.ts +1 -0
- package/dist/utils/taskRelations.test.js +34 -0
- package/dist/utils/taskUtils.d.ts +2 -0
- package/dist/utils/taskUtils.js +20 -0
- package/dist/utils/taskforceApiClient.d.ts +7 -0
- package/dist/utils/taskforceApiClient.js +42 -0
- package/dist/utils/workspaceIdentity.d.ts +8 -0
- package/dist/utils/workspaceIdentity.js +47 -0
- package/dist/utils/workspaceIdentity.test.d.ts +1 -0
- package/dist/utils/workspaceIdentity.test.js +32 -0
- package/dist/utils/workspaceLifecycle.d.ts +26 -0
- package/dist/utils/workspaceLifecycle.js +69 -0
- package/dist/utils/workspaceLifecycle.test.d.ts +1 -0
- package/dist/utils/workspaceLifecycle.test.js +64 -0
- package/package.json +133 -0
- package/scripts/check-compat-boundaries.js +48 -0
- package/scripts/check-env.ts +24 -0
- package/scripts/check-localization-strings.mjs +49 -0
- package/scripts/check-runtime-boundaries.mjs +44 -0
- package/scripts/debug-global.mjs +34 -0
- package/scripts/debug-server.mjs +36 -0
- package/scripts/export-sqlite-to-postgres.mjs +125 -0
- package/scripts/generate-env-example.ts +8 -0
- package/scripts/generate-workflow-templates.mjs +134 -0
- package/scripts/mcp-stdio-adapter.mjs +160 -0
- package/scripts/postinstall.js +60 -0
- package/scripts/release-version-lib.mjs +88 -0
- package/scripts/release-version.mjs +72 -0
- package/scripts/run-dev-proxy.sh +49 -0
- package/scripts/run-e2e-realtime.sh +16 -0
- package/scripts/run-smoke.sh +23 -0
- package/scripts/run-soak.sh +29 -0
- package/scripts/test-global.js +143 -0
- package/scripts/update-homebrew-formula.sh +38 -0
- package/src/resources/templates/WORKFLOW_V2_POLICY.md +55 -0
- package/src/resources/templates/environments/aider.yaml +14 -0
- package/src/resources/templates/environments/antigravity.yaml +10 -0
- package/src/resources/templates/environments/claude.yaml +10 -0
- package/src/resources/templates/environments/cline.yaml +10 -0
- package/src/resources/templates/environments/codex.yaml +13 -0
- package/src/resources/templates/environments/copilot.yaml +10 -0
- package/src/resources/templates/environments/cursor.yaml +9 -0
- package/src/resources/templates/environments/gemini.yaml +9 -0
- package/src/resources/templates/environments/windsurf.yaml +10 -0
- package/src/resources/templates/workflow-sources/README.md +9 -0
- package/src/resources/templates/workflow-sources/workflowDocs.mjs +520 -0
- package/src/resources/templates/workflow-sources/workflowEditorOverrides.json +1 -0
- package/src/resources/templates/workflows/collaborate.yaml +104 -0
- package/src/resources/templates/workflows/do.yaml +82 -0
- package/src/resources/templates/workflows/evaluate.yaml +111 -0
- package/src/resources/templates/workflows/execute.yaml +142 -0
- package/src/resources/templates/workflows/plan.yaml +112 -0
- package/src/resources/templates/workflows/review.yaml +109 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
export const es419 = {
|
|
2
|
+
taskForm: {
|
|
3
|
+
commentsSectionTitle: 'Actividad y comentarios',
|
|
4
|
+
hideComments: 'Ocultar comentarios',
|
|
5
|
+
showComments: 'Mostrar comentarios',
|
|
6
|
+
noComments: 'Aun no hay comentarios. Inicia la conversacion.',
|
|
7
|
+
you: 'Tu',
|
|
8
|
+
commentPlaceholder: 'Escribe un comentario...',
|
|
9
|
+
scheduledLabel: 'Programado:',
|
|
10
|
+
dueLabel: 'Vence:',
|
|
11
|
+
createdLabel: 'Creado:',
|
|
12
|
+
updatedLabel: 'Actualizado:',
|
|
13
|
+
completedLabel: 'Completado:',
|
|
14
|
+
emptyValue: '—',
|
|
15
|
+
parentCannotSchedule: 'Las tareas padre no se pueden programar. Programa tareas hoja en su lugar.',
|
|
16
|
+
dueBeforeScheduled: 'La fecha de vencimiento es anterior a la fecha programada.',
|
|
17
|
+
overdue: 'Esta tarea esta vencida.'
|
|
18
|
+
},
|
|
19
|
+
schedule: {
|
|
20
|
+
completedOnlyPastSchedule: 'Solo el trabajo completado se puede programar en el pasado.',
|
|
21
|
+
noUnscheduledLeafTasks: 'No se encontraron tareas hoja sin programar en "{parentTitle}".'
|
|
22
|
+
},
|
|
23
|
+
taskList: {
|
|
24
|
+
searchPlaceholder: 'Buscar tareas...',
|
|
25
|
+
clearSearchTitle: 'Limpiar busqueda',
|
|
26
|
+
categoryLabel: 'Categoria',
|
|
27
|
+
typeLabel: 'Tipo',
|
|
28
|
+
priorityLabel: 'Prioridad',
|
|
29
|
+
statusLabel: 'Estado',
|
|
30
|
+
assigneeLabel: 'Asignado a',
|
|
31
|
+
sortByLabel: 'Ordenar por:',
|
|
32
|
+
sortCreated: 'Creado',
|
|
33
|
+
sortUpdated: 'Actualizado',
|
|
34
|
+
sortPriority: 'Prioridad',
|
|
35
|
+
sortDirectionDescTitle: 'Orden: mas reciente primero',
|
|
36
|
+
sortDirectionAscTitle: 'Orden: mas antiguo primero',
|
|
37
|
+
resetFiltersTitle: 'Restablecer todos los filtros',
|
|
38
|
+
archiveAllTitle: 'Archivar todas las tareas completadas y canceladas',
|
|
39
|
+
noTasksToArchiveTitle: 'No hay tareas para archivar',
|
|
40
|
+
archiveFinished: 'Archivar finalizadas',
|
|
41
|
+
linksLabel: 'Vinculos',
|
|
42
|
+
linksAll: 'Todas',
|
|
43
|
+
linksParents: 'Padres',
|
|
44
|
+
linksLinked: 'Vinculadas',
|
|
45
|
+
linksUnlinked: 'Sin vinculo',
|
|
46
|
+
includeArchive: 'Incluir archivo',
|
|
47
|
+
noMatchingTasks: 'No hay tareas coincidentes',
|
|
48
|
+
noActiveTasks: 'No hay tareas activas',
|
|
49
|
+
addTaskToCategoryTitle: 'Agregar tarea a {category}'
|
|
50
|
+
},
|
|
51
|
+
actionHeader: {
|
|
52
|
+
blockedByActiveChildren: 'Primero completa o cancela todas las tareas hijas directas',
|
|
53
|
+
confirmCascadeComplete: 'Esta tarea padre tiene {count} tarea(s) hija(s) activa(s). Tambien quieres marcar todas las tareas hijas como completadas?',
|
|
54
|
+
confirmCascadeCancel: 'Esta tarea padre tiene {count} tarea(s) hija(s) activa(s). Tambien quieres marcar todas las tareas hijas como canceladas?',
|
|
55
|
+
confirmCascadeArchive: 'Esta tarea padre tiene {count} tarea(s) hija(s). Tambien quieres archivar todas las tareas hijas?',
|
|
56
|
+
saveChangesTitle: 'Guardar cambios',
|
|
57
|
+
update: 'Actualizar',
|
|
58
|
+
copyTaskIdTitle: 'Haz clic para copiar el ID de la tarea',
|
|
59
|
+
startWorking: 'Comenzar trabajo',
|
|
60
|
+
stopWorking: 'Detener trabajo',
|
|
61
|
+
unlockAndContinue: 'Desbloquear y continuar',
|
|
62
|
+
readyForReview: 'Lista para revision',
|
|
63
|
+
markComplete: 'Marcar como completada',
|
|
64
|
+
unmarkComplete: 'Quitar completada',
|
|
65
|
+
cancelTask: 'Cancelar tarea',
|
|
66
|
+
unmarkCancelled: 'Quitar cancelada',
|
|
67
|
+
archiveNow: 'Archivar ahora',
|
|
68
|
+
completeTaskToArchive: 'Completa la tarea para archivar',
|
|
69
|
+
clearFormTitle: 'Limpiar formulario',
|
|
70
|
+
clear: 'Limpiar',
|
|
71
|
+
addTaskTitle: 'Agregar tarea',
|
|
72
|
+
addTask: 'Agregar tarea'
|
|
73
|
+
},
|
|
74
|
+
standalone: {
|
|
75
|
+
searchPlaceholder: 'Buscar tareas...',
|
|
76
|
+
clearSearchTitle: 'Limpiar busqueda',
|
|
77
|
+
sortLabel: 'Orden:',
|
|
78
|
+
sortCreated: 'Creado',
|
|
79
|
+
sortUpdated: 'Actualizado',
|
|
80
|
+
sortPriority: 'Prioridad',
|
|
81
|
+
sortComplexity: 'Complejidad',
|
|
82
|
+
sortDirectionDescTitle: 'Orden: mas reciente primero',
|
|
83
|
+
sortDirectionAscTitle: 'Orden: mas antiguo primero',
|
|
84
|
+
groupLabel: 'Agrupar:',
|
|
85
|
+
groupCategory: 'Categoria',
|
|
86
|
+
groupType: 'Tipo',
|
|
87
|
+
groupPriority: 'Prioridad',
|
|
88
|
+
groupComplexity: 'Complejidad',
|
|
89
|
+
groupApproach: 'Enfoque',
|
|
90
|
+
groupAssignee: 'Asignado a',
|
|
91
|
+
groupStatus: 'Estado',
|
|
92
|
+
groupHierarchy: 'Jerarquia',
|
|
93
|
+
groupSchedule: 'Calendario',
|
|
94
|
+
showEmptyColumns: 'Mostrar columnas vacias',
|
|
95
|
+
compressEmptyColumns: 'Comprimir columnas vacias',
|
|
96
|
+
hideEmptyColumns: 'Ocultar columnas vacias',
|
|
97
|
+
expandCards: 'Expandir tarjetas',
|
|
98
|
+
compressCards: 'Comprimir tarjetas',
|
|
99
|
+
exitZenMode: 'Salir del modo zen',
|
|
100
|
+
enterZenMode: 'Entrar en modo zen',
|
|
101
|
+
toggleFilters: 'Alternar filtros',
|
|
102
|
+
addTask: 'Agregar tarea',
|
|
103
|
+
helpTutorial: 'Ayuda / Tutorial',
|
|
104
|
+
settings: 'Configuracion',
|
|
105
|
+
filtersCaps: 'FILTROS:',
|
|
106
|
+
categoryLabel: 'Categoria',
|
|
107
|
+
typeLabel: 'Tipo',
|
|
108
|
+
priorityLabel: 'Prioridad',
|
|
109
|
+
statusLabel: 'Estado',
|
|
110
|
+
assigneeLabel: 'Asignado a',
|
|
111
|
+
linksLabel: 'Vinculos:',
|
|
112
|
+
chooseLinksTitle: 'Elige que tareas vinculadas se muestran',
|
|
113
|
+
linksAll: 'Todas',
|
|
114
|
+
linksParents: 'Padres',
|
|
115
|
+
linksLinked: 'Vinculadas',
|
|
116
|
+
linksUnlinked: 'Sin vinculo',
|
|
117
|
+
includeArchiveTitle: 'Incluir tareas archivadas',
|
|
118
|
+
includeArchive: 'Incluir archivo',
|
|
119
|
+
clearFilters: 'Limpiar filtros',
|
|
120
|
+
noTasksMatchFilters: 'Ninguna tarea coincide con los filtros actuales.',
|
|
121
|
+
showingWithLinksHint: 'Mostrando: {parentFilterLabel}. Cambia Vinculos a Todas o limpia filtros.',
|
|
122
|
+
visibleActiveTasksTitle: 'Tareas activas visibles / total de tareas activas',
|
|
123
|
+
totalActiveTasksTitle: 'Total de tareas activas'
|
|
124
|
+
},
|
|
125
|
+
setup: {
|
|
126
|
+
headingCheckFailed: 'Fallo en verificacion de configuracion',
|
|
127
|
+
headingGlobalRequired: 'Configuracion global requerida',
|
|
128
|
+
headingWorkspaceRequired: 'Configuracion del espacio requerida',
|
|
129
|
+
subtitleUnreadable: 'Taskforce no pudo leer el estado de configuracion. Reintenta para continuar.',
|
|
130
|
+
subtitleGlobalRequired: 'Elige tu modo operativo predeterminado para continuar.',
|
|
131
|
+
subtitleWorkspaceRequired: 'Configura el perfil de tu espacio para continuar.',
|
|
132
|
+
runtimeLabel: 'Entorno',
|
|
133
|
+
workspaceTermProject: 'Proyecto',
|
|
134
|
+
workspaceTermMission: 'Mision',
|
|
135
|
+
coreModeOption: 'Modo Core: valores predeterminados de planificacion para {workspaceLabel}',
|
|
136
|
+
operationsModeOption: 'Modo Operaciones: terminologia y flujos orientados a Mision',
|
|
137
|
+
workspaceNamePlaceholder: 'Nombre de {workspaceLabel}',
|
|
138
|
+
workspaceDescriptionPlaceholder: 'Descripcion de {workspaceLabel} (opcional)',
|
|
139
|
+
saving: 'Guardando...',
|
|
140
|
+
saveGlobalSetup: 'Guardar configuracion global',
|
|
141
|
+
saveWorkspaceSetup: 'Guardar configuracion de {workspaceLabel}',
|
|
142
|
+
globalSetupSaved: 'Configuracion global guardada.',
|
|
143
|
+
workspaceSetupSaved: 'Configuracion de {workspaceLabel} guardada.',
|
|
144
|
+
saveFailedWithStatus: 'Error al guardar la configuracion ({status})',
|
|
145
|
+
saveFailed: 'Error al guardar la configuracion.',
|
|
146
|
+
saveWorkspaceFailed: 'Error al guardar el perfil del espacio.',
|
|
147
|
+
retrySetupCheck: 'Reintentar verificacion',
|
|
148
|
+
signOut: 'Cerrar sesion'
|
|
149
|
+
}
|
|
150
|
+
};
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
export const ptBR = {
|
|
2
|
+
taskForm: {
|
|
3
|
+
commentsSectionTitle: 'Atividade e comentarios',
|
|
4
|
+
hideComments: 'Ocultar comentarios',
|
|
5
|
+
showComments: 'Mostrar comentarios',
|
|
6
|
+
noComments: 'Ainda nao ha comentarios. Inicie a conversa.',
|
|
7
|
+
you: 'Voce',
|
|
8
|
+
commentPlaceholder: 'Digite um comentario...',
|
|
9
|
+
scheduledLabel: 'Agendado:',
|
|
10
|
+
dueLabel: 'Vencimento:',
|
|
11
|
+
createdLabel: 'Criado:',
|
|
12
|
+
updatedLabel: 'Atualizado:',
|
|
13
|
+
completedLabel: 'Concluido:',
|
|
14
|
+
emptyValue: '—',
|
|
15
|
+
parentCannotSchedule: 'Tarefas pai nao podem ser agendadas. Agende as tarefas folha.',
|
|
16
|
+
dueBeforeScheduled: 'A data de vencimento e anterior a data agendada.',
|
|
17
|
+
overdue: 'Esta tarefa esta atrasada.'
|
|
18
|
+
},
|
|
19
|
+
schedule: {
|
|
20
|
+
completedOnlyPastSchedule: 'Somente trabalho concluido pode ser agendado no passado.',
|
|
21
|
+
noUnscheduledLeafTasks: 'Nenhuma tarefa folha nao agendada foi encontrada em "{parentTitle}".'
|
|
22
|
+
},
|
|
23
|
+
taskList: {
|
|
24
|
+
searchPlaceholder: 'Buscar tarefas...',
|
|
25
|
+
clearSearchTitle: 'Limpar busca',
|
|
26
|
+
categoryLabel: 'Categoria',
|
|
27
|
+
typeLabel: 'Tipo',
|
|
28
|
+
priorityLabel: 'Prioridade',
|
|
29
|
+
statusLabel: 'Status',
|
|
30
|
+
assigneeLabel: 'Atribuido para',
|
|
31
|
+
sortByLabel: 'Ordenar por:',
|
|
32
|
+
sortCreated: 'Criado',
|
|
33
|
+
sortUpdated: 'Atualizado',
|
|
34
|
+
sortPriority: 'Prioridade',
|
|
35
|
+
sortDirectionDescTitle: 'Ordem: mais recente primeiro',
|
|
36
|
+
sortDirectionAscTitle: 'Ordem: mais antigo primeiro',
|
|
37
|
+
resetFiltersTitle: 'Redefinir todos os filtros',
|
|
38
|
+
archiveAllTitle: 'Arquivar todas as tarefas concluidas e canceladas',
|
|
39
|
+
noTasksToArchiveTitle: 'Nao ha tarefas para arquivar',
|
|
40
|
+
archiveFinished: 'Arquivar finalizadas',
|
|
41
|
+
linksLabel: 'Vinculos',
|
|
42
|
+
linksAll: 'Todas',
|
|
43
|
+
linksParents: 'Pais',
|
|
44
|
+
linksLinked: 'Vinculadas',
|
|
45
|
+
linksUnlinked: 'Sem vinculo',
|
|
46
|
+
includeArchive: 'Incluir arquivo',
|
|
47
|
+
noMatchingTasks: 'Nenhuma tarefa correspondente',
|
|
48
|
+
noActiveTasks: 'Nenhuma tarefa ativa',
|
|
49
|
+
addTaskToCategoryTitle: 'Adicionar tarefa a {category}'
|
|
50
|
+
},
|
|
51
|
+
actionHeader: {
|
|
52
|
+
blockedByActiveChildren: 'Conclua ou cancele todas as tarefas filhas diretas primeiro',
|
|
53
|
+
confirmCascadeComplete: 'Esta tarefa pai tem {count} tarefa(s) filha(s) ativa(s). Tambem deseja marcar todas as tarefas filhas como concluidas?',
|
|
54
|
+
confirmCascadeCancel: 'Esta tarefa pai tem {count} tarefa(s) filha(s) ativa(s). Tambem deseja marcar todas as tarefas filhas como canceladas?',
|
|
55
|
+
confirmCascadeArchive: 'Esta tarefa pai tem {count} tarefa(s) filha(s). Tambem deseja arquivar todas as tarefas filhas?',
|
|
56
|
+
saveChangesTitle: 'Salvar alteracoes',
|
|
57
|
+
update: 'Atualizar',
|
|
58
|
+
copyTaskIdTitle: 'Clique para copiar o ID da tarefa',
|
|
59
|
+
startWorking: 'Iniciar trabalho',
|
|
60
|
+
stopWorking: 'Parar trabalho',
|
|
61
|
+
unlockAndContinue: 'Desbloquear e continuar',
|
|
62
|
+
readyForReview: 'Pronto para revisao',
|
|
63
|
+
markComplete: 'Marcar como concluida',
|
|
64
|
+
unmarkComplete: 'Desmarcar concluida',
|
|
65
|
+
cancelTask: 'Cancelar tarefa',
|
|
66
|
+
unmarkCancelled: 'Desmarcar cancelada',
|
|
67
|
+
archiveNow: 'Arquivar agora',
|
|
68
|
+
completeTaskToArchive: 'Conclua a tarefa para arquivar',
|
|
69
|
+
clearFormTitle: 'Limpar formulario',
|
|
70
|
+
clear: 'Limpar',
|
|
71
|
+
addTaskTitle: 'Adicionar tarefa',
|
|
72
|
+
addTask: 'Adicionar tarefa'
|
|
73
|
+
},
|
|
74
|
+
standalone: {
|
|
75
|
+
searchPlaceholder: 'Buscar tarefas...',
|
|
76
|
+
clearSearchTitle: 'Limpar busca',
|
|
77
|
+
sortLabel: 'Ordenar:',
|
|
78
|
+
sortCreated: 'Criado',
|
|
79
|
+
sortUpdated: 'Atualizado',
|
|
80
|
+
sortPriority: 'Prioridade',
|
|
81
|
+
sortComplexity: 'Complexidade',
|
|
82
|
+
sortDirectionDescTitle: 'Ordem: mais recente primeiro',
|
|
83
|
+
sortDirectionAscTitle: 'Ordem: mais antigo primeiro',
|
|
84
|
+
groupLabel: 'Agrupar:',
|
|
85
|
+
groupCategory: 'Categoria',
|
|
86
|
+
groupType: 'Tipo',
|
|
87
|
+
groupPriority: 'Prioridade',
|
|
88
|
+
groupComplexity: 'Complexidade',
|
|
89
|
+
groupApproach: 'Abordagem',
|
|
90
|
+
groupAssignee: 'Atribuido para',
|
|
91
|
+
groupStatus: 'Status',
|
|
92
|
+
groupHierarchy: 'Hierarquia',
|
|
93
|
+
groupSchedule: 'Agenda',
|
|
94
|
+
showEmptyColumns: 'Mostrar colunas vazias',
|
|
95
|
+
compressEmptyColumns: 'Comprimir colunas vazias',
|
|
96
|
+
hideEmptyColumns: 'Ocultar colunas vazias',
|
|
97
|
+
expandCards: 'Expandir cards',
|
|
98
|
+
compressCards: 'Comprimir cards',
|
|
99
|
+
exitZenMode: 'Sair do modo zen',
|
|
100
|
+
enterZenMode: 'Entrar no modo zen',
|
|
101
|
+
toggleFilters: 'Alternar filtros',
|
|
102
|
+
addTask: 'Adicionar tarefa',
|
|
103
|
+
helpTutorial: 'Ajuda / Tutorial',
|
|
104
|
+
settings: 'Configuracoes',
|
|
105
|
+
filtersCaps: 'FILTROS:',
|
|
106
|
+
categoryLabel: 'Categoria',
|
|
107
|
+
typeLabel: 'Tipo',
|
|
108
|
+
priorityLabel: 'Prioridade',
|
|
109
|
+
statusLabel: 'Status',
|
|
110
|
+
assigneeLabel: 'Atribuido para',
|
|
111
|
+
linksLabel: 'Vinculos:',
|
|
112
|
+
chooseLinksTitle: 'Escolha quais tarefas vinculadas sao exibidas',
|
|
113
|
+
linksAll: 'Todas',
|
|
114
|
+
linksParents: 'Pais',
|
|
115
|
+
linksLinked: 'Vinculadas',
|
|
116
|
+
linksUnlinked: 'Sem vinculo',
|
|
117
|
+
includeArchiveTitle: 'Incluir tarefas arquivadas',
|
|
118
|
+
includeArchive: 'Incluir arquivo',
|
|
119
|
+
clearFilters: 'Limpar filtros',
|
|
120
|
+
noTasksMatchFilters: 'Nenhuma tarefa corresponde aos filtros atuais.',
|
|
121
|
+
showingWithLinksHint: 'Mostrando: {parentFilterLabel}. Mude Vinculos para Todas ou limpe os filtros.',
|
|
122
|
+
visibleActiveTasksTitle: 'Tarefas ativas visiveis / total de tarefas ativas',
|
|
123
|
+
totalActiveTasksTitle: 'Total de tarefas ativas'
|
|
124
|
+
},
|
|
125
|
+
setup: {
|
|
126
|
+
headingCheckFailed: 'Falha na verificacao da configuracao',
|
|
127
|
+
headingGlobalRequired: 'Configuracao global obrigatoria',
|
|
128
|
+
headingWorkspaceRequired: 'Configuracao do espaco obrigatoria',
|
|
129
|
+
subtitleUnreadable: 'Taskforce nao conseguiu ler o estado da configuracao. Tente novamente para continuar.',
|
|
130
|
+
subtitleGlobalRequired: 'Escolha seu modo operacional padrao para continuar.',
|
|
131
|
+
subtitleWorkspaceRequired: 'Configure o perfil do seu espaco para continuar.',
|
|
132
|
+
runtimeLabel: 'Ambiente',
|
|
133
|
+
workspaceTermProject: 'Projeto',
|
|
134
|
+
workspaceTermMission: 'Missao',
|
|
135
|
+
coreModeOption: 'Modo Core: padroes de planejamento para {workspaceLabel}',
|
|
136
|
+
operationsModeOption: 'Modo Operacoes: terminologia e fluxos orientados por Missao',
|
|
137
|
+
workspaceNamePlaceholder: 'Nome de {workspaceLabel}',
|
|
138
|
+
workspaceDescriptionPlaceholder: 'Descricao de {workspaceLabel} (opcional)',
|
|
139
|
+
saving: 'Salvando...',
|
|
140
|
+
saveGlobalSetup: 'Salvar configuracao global',
|
|
141
|
+
saveWorkspaceSetup: 'Salvar configuracao de {workspaceLabel}',
|
|
142
|
+
globalSetupSaved: 'Configuracao global salva.',
|
|
143
|
+
workspaceSetupSaved: 'Configuracao de {workspaceLabel} salva.',
|
|
144
|
+
saveFailedWithStatus: 'Falha ao salvar configuracao ({status})',
|
|
145
|
+
saveFailed: 'Falha ao salvar configuracao.',
|
|
146
|
+
saveWorkspaceFailed: 'Falha ao salvar perfil do espaco.',
|
|
147
|
+
retrySetupCheck: 'Tentar verificacao novamente',
|
|
148
|
+
signOut: 'Sair'
|
|
149
|
+
}
|
|
150
|
+
};
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './index.css';
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import ReactDOM from 'react-dom/client';
|
|
4
|
+
import { BrowserRouter } from 'react-router-dom';
|
|
5
|
+
import './index.css';
|
|
6
|
+
import { Taskforce } from './Taskforce';
|
|
7
|
+
import { TaskforceCore } from './TaskforceCore';
|
|
8
|
+
const isStandalone = import.meta.env.VITE_STANDALONE === 'true';
|
|
9
|
+
const baseUrl = typeof import.meta.env.VITE_TASKFORCE_BASE_URL === 'string'
|
|
10
|
+
? import.meta.env.VITE_TASKFORCE_BASE_URL.trim()
|
|
11
|
+
: '';
|
|
12
|
+
const apiBaseUrl = typeof import.meta.env.VITE_TASKFORCE_API_BASE_URL === 'string'
|
|
13
|
+
? import.meta.env.VITE_TASKFORCE_API_BASE_URL.trim()
|
|
14
|
+
: '';
|
|
15
|
+
const cloudAuthBaseUrl = typeof import.meta.env.VITE_TASKFORCE_CLOUD_AUTH_BASE_URL === 'string'
|
|
16
|
+
? import.meta.env.VITE_TASKFORCE_CLOUD_AUTH_BASE_URL.trim()
|
|
17
|
+
: '';
|
|
18
|
+
const resolvedApiBaseUrl = apiBaseUrl.length > 0 ? apiBaseUrl : (baseUrl.length > 0 ? baseUrl : undefined);
|
|
19
|
+
const resolvedCloudAuthBaseUrl = cloudAuthBaseUrl.length > 0 ? cloudAuthBaseUrl : resolvedApiBaseUrl;
|
|
20
|
+
if (isStandalone) {
|
|
21
|
+
document.title = 'Taskforce';
|
|
22
|
+
}
|
|
23
|
+
ReactDOM.createRoot(document.getElementById('root')).render(_jsx(React.StrictMode, { children: _jsx(BrowserRouter, { children: isStandalone ? (_jsx(TaskforceCore, { mode: "standalone", config: {
|
|
24
|
+
categories: ['Feature', 'Bug', 'Research'],
|
|
25
|
+
theme: 'midnight',
|
|
26
|
+
apiBaseUrl: resolvedApiBaseUrl,
|
|
27
|
+
cloudAuthBaseUrl: resolvedCloudAuthBaseUrl
|
|
28
|
+
} })) : (_jsx(Taskforce, { config: {
|
|
29
|
+
categories: ['Feature', 'Bug', 'Research'],
|
|
30
|
+
theme: 'midnight',
|
|
31
|
+
apiBaseUrl: resolvedApiBaseUrl,
|
|
32
|
+
cloudAuthBaseUrl: resolvedCloudAuthBaseUrl
|
|
33
|
+
} })) }) }));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface StringOption {
|
|
2
|
+
value: string;
|
|
3
|
+
label?: string;
|
|
4
|
+
aliases?: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface NumberOption {
|
|
7
|
+
value: number;
|
|
8
|
+
label?: string;
|
|
9
|
+
aliases?: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare const STATUS_OPTIONS: StringOption[];
|
|
12
|
+
export declare const COMPLEXITY_OPTIONS: NumberOption[];
|
|
13
|
+
export declare function resolveStringOption(fieldName: string, input: string | undefined, options: StringOption[]): string | undefined;
|
|
14
|
+
export declare function resolveNumberOption(fieldName: string, input: number | string | undefined, options: NumberOption[]): number | undefined;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
export const STATUS_OPTIONS = [
|
|
2
|
+
{ value: 'task', aliases: ['todo', 'to do', 'open'] },
|
|
3
|
+
{ value: 'on-hold', aliases: ['on hold', 'hold', 'paused'] },
|
|
4
|
+
{ value: 'in-progress', aliases: ['in progress', 'working', 'active'] },
|
|
5
|
+
{ value: 'review', aliases: ['ready for review', 'qa'] },
|
|
6
|
+
{ value: 'done', aliases: ['complete', 'completed'] },
|
|
7
|
+
{ value: 'cancelled', aliases: ['canceled', 'cancel', 'abandoned'] }
|
|
8
|
+
];
|
|
9
|
+
export const COMPLEXITY_OPTIONS = [
|
|
10
|
+
{ value: 1, label: 'Tiny' },
|
|
11
|
+
{ value: 2, label: 'Low' },
|
|
12
|
+
{ value: 3, label: 'Medium' },
|
|
13
|
+
{ value: 4, label: 'High' },
|
|
14
|
+
{ value: 5, label: 'Epic' }
|
|
15
|
+
];
|
|
16
|
+
function normalizeToken(value) {
|
|
17
|
+
return value
|
|
18
|
+
.toLowerCase()
|
|
19
|
+
.trim()
|
|
20
|
+
.replace(/[^a-z0-9]+/g, '');
|
|
21
|
+
}
|
|
22
|
+
function uniqueStrings(values) {
|
|
23
|
+
return Array.from(new Set(values.filter(Boolean)));
|
|
24
|
+
}
|
|
25
|
+
function buildStringCandidates(option) {
|
|
26
|
+
return uniqueStrings([
|
|
27
|
+
option.value,
|
|
28
|
+
option.label || '',
|
|
29
|
+
...(option.aliases || [])
|
|
30
|
+
]);
|
|
31
|
+
}
|
|
32
|
+
function buildNumberCandidates(option) {
|
|
33
|
+
return uniqueStrings([
|
|
34
|
+
String(option.value),
|
|
35
|
+
option.label || '',
|
|
36
|
+
...(option.aliases || [])
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
39
|
+
function scoreSuggestion(inputNorm, candidateNorm) {
|
|
40
|
+
if (!inputNorm || !candidateNorm)
|
|
41
|
+
return Number.POSITIVE_INFINITY;
|
|
42
|
+
if (candidateNorm === inputNorm)
|
|
43
|
+
return 0;
|
|
44
|
+
if (candidateNorm.startsWith(inputNorm))
|
|
45
|
+
return 1;
|
|
46
|
+
if (candidateNorm.includes(inputNorm) || inputNorm.includes(candidateNorm))
|
|
47
|
+
return 2;
|
|
48
|
+
return Number.POSITIVE_INFINITY;
|
|
49
|
+
}
|
|
50
|
+
function getSuggestedValues(input, options, candidateBuilder, valueBuilder) {
|
|
51
|
+
const inputNorm = normalizeToken(input);
|
|
52
|
+
const ranked = options
|
|
53
|
+
.map((opt) => {
|
|
54
|
+
const bestScore = candidateBuilder(opt)
|
|
55
|
+
.map(candidate => scoreSuggestion(inputNorm, normalizeToken(candidate)))
|
|
56
|
+
.reduce((min, score) => Math.min(min, score), Number.POSITIVE_INFINITY);
|
|
57
|
+
return {
|
|
58
|
+
value: valueBuilder(opt),
|
|
59
|
+
score: bestScore
|
|
60
|
+
};
|
|
61
|
+
})
|
|
62
|
+
.filter(r => Number.isFinite(r.score))
|
|
63
|
+
.sort((a, b) => a.score - b.score)
|
|
64
|
+
.map(r => r.value);
|
|
65
|
+
return uniqueStrings(ranked).slice(0, 3);
|
|
66
|
+
}
|
|
67
|
+
function formatSuggestionMessage(suggestions) {
|
|
68
|
+
if (suggestions.length === 0)
|
|
69
|
+
return '';
|
|
70
|
+
return ` Did you mean: ${suggestions.join(', ')}?`;
|
|
71
|
+
}
|
|
72
|
+
export function resolveStringOption(fieldName, input, options) {
|
|
73
|
+
if (input === undefined)
|
|
74
|
+
return undefined;
|
|
75
|
+
const trimmed = input.trim();
|
|
76
|
+
if (!trimmed)
|
|
77
|
+
return undefined;
|
|
78
|
+
for (const option of options) {
|
|
79
|
+
if (option.value === trimmed)
|
|
80
|
+
return option.value;
|
|
81
|
+
}
|
|
82
|
+
const lower = trimmed.toLowerCase();
|
|
83
|
+
for (const option of options) {
|
|
84
|
+
if (option.value.toLowerCase() === lower)
|
|
85
|
+
return option.value;
|
|
86
|
+
}
|
|
87
|
+
const normalizedInput = normalizeToken(trimmed);
|
|
88
|
+
for (const option of options) {
|
|
89
|
+
const candidates = buildStringCandidates(option);
|
|
90
|
+
if (candidates.some(candidate => normalizeToken(candidate) === normalizedInput)) {
|
|
91
|
+
return option.value;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const validValues = options.map(opt => opt.value);
|
|
95
|
+
const suggestions = getSuggestedValues(trimmed, options, buildStringCandidates, opt => opt.value);
|
|
96
|
+
throw new Error(`Invalid ${fieldName} "${input}". Valid ${fieldName} values: ${validValues.join(', ')}.${formatSuggestionMessage(suggestions)}`);
|
|
97
|
+
}
|
|
98
|
+
export function resolveNumberOption(fieldName, input, options) {
|
|
99
|
+
if (input === undefined)
|
|
100
|
+
return undefined;
|
|
101
|
+
const validValues = options.map(opt => opt.value);
|
|
102
|
+
const toSuggestion = () => {
|
|
103
|
+
const suggestions = getSuggestedValues(String(input), options, buildNumberCandidates, opt => String(opt.value));
|
|
104
|
+
return formatSuggestionMessage(suggestions);
|
|
105
|
+
};
|
|
106
|
+
if (typeof input === 'number') {
|
|
107
|
+
if (validValues.includes(input))
|
|
108
|
+
return input;
|
|
109
|
+
throw new Error(`Invalid ${fieldName} ${input}. Valid ${fieldName} values: ${validValues.join(', ')}.${toSuggestion()}`);
|
|
110
|
+
}
|
|
111
|
+
const trimmed = input.trim();
|
|
112
|
+
if (!trimmed)
|
|
113
|
+
return undefined;
|
|
114
|
+
const asNumber = Number(trimmed);
|
|
115
|
+
if (Number.isFinite(asNumber) && validValues.includes(asNumber)) {
|
|
116
|
+
return asNumber;
|
|
117
|
+
}
|
|
118
|
+
const normalizedInput = normalizeToken(trimmed);
|
|
119
|
+
for (const option of options) {
|
|
120
|
+
const candidates = buildNumberCandidates(option);
|
|
121
|
+
if (candidates.some(candidate => normalizeToken(candidate) === normalizedInput)) {
|
|
122
|
+
return option.value;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
throw new Error(`Invalid ${fieldName} "${input}". Valid ${fieldName} values: ${validValues.join(', ')}.${toSuggestion()}`);
|
|
126
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { COMPLEXITY_OPTIONS, resolveNumberOption, resolveStringOption, STATUS_OPTIONS } from './optionResolution';
|
|
3
|
+
describe('mcp option resolution', () => {
|
|
4
|
+
const categoryOptions = [
|
|
5
|
+
{ value: 'ui/ux', label: 'UI/UX' },
|
|
6
|
+
{ value: 'general', label: 'General' }
|
|
7
|
+
];
|
|
8
|
+
const typeOptions = [
|
|
9
|
+
{ value: 'feature', label: 'Feature' },
|
|
10
|
+
{ value: 'bug', label: 'Bug' }
|
|
11
|
+
];
|
|
12
|
+
const priorityOptions = [
|
|
13
|
+
{ value: 1, label: 'Low' },
|
|
14
|
+
{ value: 2, label: 'Medium' },
|
|
15
|
+
{ value: 3, label: 'High' },
|
|
16
|
+
{ value: 4, label: 'Critical' }
|
|
17
|
+
];
|
|
18
|
+
it('resolves by exact value and label variants', () => {
|
|
19
|
+
expect(resolveStringOption('category', 'ui/ux', categoryOptions)).toBe('ui/ux');
|
|
20
|
+
expect(resolveStringOption('category', 'UI UX', categoryOptions)).toBe('ui/ux');
|
|
21
|
+
expect(resolveStringOption('type', 'Feature', typeOptions)).toBe('feature');
|
|
22
|
+
});
|
|
23
|
+
it('resolves status aliases', () => {
|
|
24
|
+
expect(resolveStringOption('status', 'in progress', STATUS_OPTIONS)).toBe('in-progress');
|
|
25
|
+
expect(resolveStringOption('status', 'completed', STATUS_OPTIONS)).toBe('done');
|
|
26
|
+
expect(resolveStringOption('status', 'canceled', STATUS_OPTIONS)).toBe('cancelled');
|
|
27
|
+
});
|
|
28
|
+
it('resolves numeric fields from numbers, numeric strings, and labels', () => {
|
|
29
|
+
expect(resolveNumberOption('priority', 3, priorityOptions)).toBe(3);
|
|
30
|
+
expect(resolveNumberOption('priority', '4', priorityOptions)).toBe(4);
|
|
31
|
+
expect(resolveNumberOption('priority', 'medium', priorityOptions)).toBe(2);
|
|
32
|
+
expect(resolveNumberOption('complexity', 'epic', COMPLEXITY_OPTIONS)).toBe(5);
|
|
33
|
+
});
|
|
34
|
+
it('throws with valid values and suggestions for invalid input', () => {
|
|
35
|
+
expect(() => resolveStringOption('status', 'prog', STATUS_OPTIONS)).toThrow(/Valid status values/);
|
|
36
|
+
expect(() => resolveStringOption('status', 'prog', STATUS_OPTIONS)).toThrow(/Did you mean/);
|
|
37
|
+
expect(() => resolveNumberOption('priority', 'mega', priorityOptions)).toThrow(/Valid priority values/);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|