@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.
Files changed (492) hide show
  1. package/README.md +241 -0
  2. package/dist/Taskforce.d.ts +3 -0
  3. package/dist/Taskforce.js +3 -0
  4. package/dist/Taskforce.module.css +7587 -0
  5. package/dist/TaskforceCore.CategoryFallback.test.d.ts +1 -0
  6. package/dist/TaskforceCore.CategoryFallback.test.js +98 -0
  7. package/dist/TaskforceCore.d.ts +12 -0
  8. package/dist/TaskforceCore.js +729 -0
  9. package/dist/TaskforceCore.test.d.ts +1 -0
  10. package/dist/TaskforceCore.test.js +2132 -0
  11. package/dist/TaskforceScreenshot.d.ts +11 -0
  12. package/dist/TaskforceScreenshot.js +113 -0
  13. package/dist/TaskforceWidget.d.ts +6 -0
  14. package/dist/TaskforceWidget.js +101 -0
  15. package/dist/TaskforceWidget.test.d.ts +1 -0
  16. package/dist/TaskforceWidget.test.js +92 -0
  17. package/dist/UnsavedChangesRelaxed.test.d.ts +1 -0
  18. package/dist/UnsavedChangesRelaxed.test.js +16 -0
  19. package/dist/__tests__/localizationCatalogs.test.d.ts +1 -0
  20. package/dist/__tests__/localizationCatalogs.test.js +37 -0
  21. package/dist/__tests__/planParser.test.d.ts +1 -0
  22. package/dist/__tests__/planParser.test.js +183 -0
  23. package/dist/__tests__/releaseVersion.test.d.ts +1 -0
  24. package/dist/__tests__/releaseVersion.test.js +32 -0
  25. package/dist/__tests__/structuredCommentValidation.test.d.ts +1 -0
  26. package/dist/__tests__/structuredCommentValidation.test.js +31 -0
  27. package/dist/__tests__/structuredDocValidation.test.d.ts +1 -0
  28. package/dist/__tests__/structuredDocValidation.test.js +30 -0
  29. package/dist/__tests__/templateEngine.test.d.ts +1 -0
  30. package/dist/__tests__/templateEngine.test.js +150 -0
  31. package/dist/__tests__/templates.test.d.ts +1 -0
  32. package/dist/__tests__/templates.test.js +45 -0
  33. package/dist/__tests__/workflowDocumentFixtures.test.d.ts +1 -0
  34. package/dist/__tests__/workflowDocumentFixtures.test.js +78 -0
  35. package/dist/__tests__/workflowExportMatrix.test.d.ts +1 -0
  36. package/dist/__tests__/workflowExportMatrix.test.js +113 -0
  37. package/dist/__tests__/workflowExportSnapshots.test.d.ts +1 -0
  38. package/dist/__tests__/workflowExportSnapshots.test.js +28 -0
  39. package/dist/__tests__/workflowGeneration.test.d.ts +1 -0
  40. package/dist/__tests__/workflowGeneration.test.js +12 -0
  41. package/dist/__tests__/workflowSimulation.test.d.ts +1 -0
  42. package/dist/__tests__/workflowSimulation.test.js +113 -0
  43. package/dist/__tests__/workflowV2Policy.test.d.ts +1 -0
  44. package/dist/__tests__/workflowV2Policy.test.js +80 -0
  45. package/dist/api.d.ts +30 -0
  46. package/dist/api.js +85 -0
  47. package/dist/cli.d.ts +2 -0
  48. package/dist/cli.js +217 -0
  49. package/dist/compat/priorityCompat.d.ts +2 -0
  50. package/dist/compat/priorityCompat.js +24 -0
  51. package/dist/components/features/DocumentGenerateModal.d.ts +9 -0
  52. package/dist/components/features/DocumentGenerateModal.js +114 -0
  53. package/dist/components/features/DocumentIndex.d.ts +19 -0
  54. package/dist/components/features/DocumentIndex.js +51 -0
  55. package/dist/components/features/DocumentViewer.d.ts +9 -0
  56. package/dist/components/features/DocumentViewer.js +253 -0
  57. package/dist/components/features/DocumentWorkspace.d.ts +21 -0
  58. package/dist/components/features/DocumentWorkspace.js +88 -0
  59. package/dist/components/features/TaskSettings.d.ts +209 -0
  60. package/dist/components/features/TaskSettings.js +500 -0
  61. package/dist/components/features/TaskSettings.test.d.ts +1 -0
  62. package/dist/components/features/TaskSettings.test.js +308 -0
  63. package/dist/components/features/settings/CategoryManager.d.ts +19 -0
  64. package/dist/components/features/settings/CategoryManager.js +113 -0
  65. package/dist/components/features/settings/TaxonomyEditor.d.ts +8 -0
  66. package/dist/components/features/settings/TaxonomyEditor.js +98 -0
  67. package/dist/components/features/settings/TaxonomyManager 2.d.ts +52 -0
  68. package/dist/components/features/settings/TaxonomyManager 2.js +75 -0
  69. package/dist/components/features/settings/TaxonomyManager.d.ts +54 -0
  70. package/dist/components/features/settings/TaxonomyManager.js +77 -0
  71. package/dist/components/features/settings/TypeManager.d.ts +10 -0
  72. package/dist/components/features/settings/TypeManager.js +50 -0
  73. package/dist/components/features/settings/WorkflowEditorPrototype.d.ts +15 -0
  74. package/dist/components/features/settings/WorkflowEditorPrototype.js +245 -0
  75. package/dist/components/task/TaskActionHeader.d.ts +20 -0
  76. package/dist/components/task/TaskActionHeader.js +13 -0
  77. package/dist/components/task/TaskCard.d.ts +47 -0
  78. package/dist/components/task/TaskCard.js +326 -0
  79. package/dist/components/task/TaskCard.test.d.ts +1 -0
  80. package/dist/components/task/TaskCard.test.js +95 -0
  81. package/dist/components/task/TaskContextUpload.d.ts +12 -0
  82. package/dist/components/task/TaskContextUpload.js +393 -0
  83. package/dist/components/task/TaskContextUpload.test.d.ts +1 -0
  84. package/dist/components/task/TaskContextUpload.test.js +189 -0
  85. package/dist/components/task/TaskForm.d.ts +105 -0
  86. package/dist/components/task/TaskForm.js +241 -0
  87. package/dist/components/task/TaskForm.test.d.ts +1 -0
  88. package/dist/components/task/TaskForm.test.js +288 -0
  89. package/dist/components/task/TaskKanban 2.d.ts +76 -0
  90. package/dist/components/task/TaskKanban 2.js +1004 -0
  91. package/dist/components/task/TaskKanban.d.ts +76 -0
  92. package/dist/components/task/TaskKanban.empty-column-drop.test.d.ts +1 -0
  93. package/dist/components/task/TaskKanban.empty-column-drop.test.js +66 -0
  94. package/dist/components/task/TaskKanban.js +1026 -0
  95. package/dist/components/task/TaskKanban.test.d.ts +1 -0
  96. package/dist/components/task/TaskKanban.test.js +46 -0
  97. package/dist/components/task/TaskList.d.ts +74 -0
  98. package/dist/components/task/TaskList.js +38 -0
  99. package/dist/components/task/TaskList.test.d.ts +1 -0
  100. package/dist/components/task/TaskList.test.js +270 -0
  101. package/dist/components/task/TaskScreenshotSection.d.ts +15 -0
  102. package/dist/components/task/TaskScreenshotSection.js +22 -0
  103. package/dist/components/ui/LevelSelector.d.ts +13 -0
  104. package/dist/components/ui/LevelSelector.js +25 -0
  105. package/dist/components/ui/LevelSelector.test.d.ts +1 -0
  106. package/dist/components/ui/LevelSelector.test.js +55 -0
  107. package/dist/components/ui/Markdown.d.ts +6 -0
  108. package/dist/components/ui/Markdown.js +94 -0
  109. package/dist/components/ui/Markdown.test.d.ts +1 -0
  110. package/dist/components/ui/Markdown.test.js +38 -0
  111. package/dist/components/ui/Modal.d.ts +16 -0
  112. package/dist/components/ui/Modal.js +49 -0
  113. package/dist/components/ui/MultiSelectFilter.d.ts +10 -0
  114. package/dist/components/ui/MultiSelectFilter.js +71 -0
  115. package/dist/components/ui/MultiSelectFilter.test.d.ts +1 -0
  116. package/dist/components/ui/MultiSelectFilter.test.js +74 -0
  117. package/dist/components/ui/TaxonomyDropdown.d.ts +17 -0
  118. package/dist/components/ui/TaxonomyDropdown.js +145 -0
  119. package/dist/components/ui/TaxonomyDropdown.test.d.ts +1 -0
  120. package/dist/components/ui/TaxonomyDropdown.test.js +130 -0
  121. package/dist/components/views/StandaloneLayout 2.d.ts +8 -0
  122. package/dist/components/views/StandaloneLayout 2.js +1660 -0
  123. package/dist/components/views/StandaloneLayout.d.ts +8 -0
  124. package/dist/components/views/StandaloneLayout.js +2117 -0
  125. package/dist/components/views/WidgetView.d.ts +8 -0
  126. package/dist/components/views/WidgetView.js +221 -0
  127. package/dist/config/envSchema.d.ts +28 -0
  128. package/dist/config/envSchema.js +374 -0
  129. package/dist/config/envSchema.test.d.ts +1 -0
  130. package/dist/config/envSchema.test.js +97 -0
  131. package/dist/config/surfaceBase.d.ts +2 -0
  132. package/dist/config/surfaceBase.js +8 -0
  133. package/dist/core/BulkUpdateFieldsPreview.test.d.ts +1 -0
  134. package/dist/core/BulkUpdateFieldsPreview.test.js +62 -0
  135. package/dist/core/CompletedAt.test.d.ts +1 -0
  136. package/dist/core/CompletedAt.test.js +44 -0
  137. package/dist/core/CreatedBy.test.d.ts +1 -0
  138. package/dist/core/CreatedBy.test.js +60 -0
  139. package/dist/core/EntitlementsPolicy.test.d.ts +1 -0
  140. package/dist/core/EntitlementsPolicy.test.js +145 -0
  141. package/dist/core/InitiativeTemplates.test.d.ts +1 -0
  142. package/dist/core/InitiativeTemplates.test.js +50 -0
  143. package/dist/core/ParentLifecycle.test.d.ts +1 -0
  144. package/dist/core/ParentLifecycle.test.js +98 -0
  145. package/dist/core/ScheduleFields.test.d.ts +1 -0
  146. package/dist/core/ScheduleFields.test.js +197 -0
  147. package/dist/core/SetupState.test.d.ts +1 -0
  148. package/dist/core/SetupState.test.js +113 -0
  149. package/dist/core/SystemAdmin.test.d.ts +1 -0
  150. package/dist/core/SystemAdmin.test.js +295 -0
  151. package/dist/core/TaskTaxonomyValidation.test.d.ts +1 -0
  152. package/dist/core/TaskTaxonomyValidation.test.js +64 -0
  153. package/dist/core/Taskforce.d.ts +1063 -0
  154. package/dist/core/Taskforce.ids.test.d.ts +1 -0
  155. package/dist/core/Taskforce.ids.test.js +168 -0
  156. package/dist/core/Taskforce.js +5981 -0
  157. package/dist/core/Taskforce.realtimeMutation.test.d.ts +1 -0
  158. package/dist/core/Taskforce.realtimeMutation.test.js +76 -0
  159. package/dist/core/WorkspaceDelete.test.d.ts +1 -0
  160. package/dist/core/WorkspaceDelete.test.js +140 -0
  161. package/dist/core/WorkspacePermissions.test.d.ts +1 -0
  162. package/dist/core/WorkspacePermissions.test.js +151 -0
  163. package/dist/core/WorkspacePlanMode.test.d.ts +1 -0
  164. package/dist/core/WorkspacePlanMode.test.js +104 -0
  165. package/dist/hooks/authGuardPolicy.d.ts +26 -0
  166. package/dist/hooks/authGuardPolicy.js +32 -0
  167. package/dist/hooks/authGuardPolicy.test.d.ts +1 -0
  168. package/dist/hooks/authGuardPolicy.test.js +76 -0
  169. package/dist/hooks/useDraggable.d.ts +12 -0
  170. package/dist/hooks/useDraggable.js +65 -0
  171. package/dist/hooks/useRealtimeSync.d.ts +24 -0
  172. package/dist/hooks/useRealtimeSync.js +275 -0
  173. package/dist/hooks/useRealtimeSync.test.d.ts +1 -0
  174. package/dist/hooks/useRealtimeSync.test.js +284 -0
  175. package/dist/hooks/useSyncOrchestrator.d.ts +164 -0
  176. package/dist/hooks/useSyncOrchestrator.js +1427 -0
  177. package/dist/hooks/useSyncOrchestrator.retry-closure.test.d.ts +1 -0
  178. package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +367 -0
  179. package/dist/hooks/useTaskforce.d.ts +727 -0
  180. package/dist/hooks/useTaskforce.js +4396 -0
  181. package/dist/hooks/useTaskforce.priority-filters.test.d.ts +1 -0
  182. package/dist/hooks/useTaskforce.priority-filters.test.js +33 -0
  183. package/dist/hooks/useWorkspaceSyncController.d.ts +80 -0
  184. package/dist/hooks/useWorkspaceSyncController.js +598 -0
  185. package/dist/hooks/useWorkspaceSyncController.test.d.ts +1 -0
  186. package/dist/hooks/useWorkspaceSyncController.test.js +236 -0
  187. package/dist/index.d.ts +12 -0
  188. package/dist/index.js +11 -0
  189. package/dist/localization/index.d.ts +8 -0
  190. package/dist/localization/index.js +81 -0
  191. package/dist/localization/locales/en-US.d.ts +151 -0
  192. package/dist/localization/locales/en-US.js +150 -0
  193. package/dist/localization/locales/es-419.d.ts +2 -0
  194. package/dist/localization/locales/es-419.js +150 -0
  195. package/dist/localization/locales/pt-BR.d.ts +2 -0
  196. package/dist/localization/locales/pt-BR.js +150 -0
  197. package/dist/main.d.ts +1 -0
  198. package/dist/main.js +33 -0
  199. package/dist/mcp/optionResolution.d.ts +14 -0
  200. package/dist/mcp/optionResolution.js +126 -0
  201. package/dist/mcp/optionResolution.test.d.ts +1 -0
  202. package/dist/mcp/optionResolution.test.js +39 -0
  203. package/dist/mcp/server.d.ts +1 -0
  204. package/dist/mcp/server.js +1793 -0
  205. package/dist/mcp/structuredCommentValidation.d.ts +6 -0
  206. package/dist/mcp/structuredCommentValidation.js +56 -0
  207. package/dist/mcp/structuredDocValidation.d.ts +6 -0
  208. package/dist/mcp/structuredDocValidation.js +75 -0
  209. package/dist/migrations/billingSchemaParity.test.d.ts +1 -0
  210. package/dist/migrations/billingSchemaParity.test.js +46 -0
  211. package/dist/migrations/clientMigrations.d.ts +9 -0
  212. package/dist/migrations/clientMigrations.js +74 -0
  213. package/dist/migrations/flags.d.ts +6 -0
  214. package/dist/migrations/flags.js +8 -0
  215. package/dist/migrations/taskMigrations.d.ts +71 -0
  216. package/dist/migrations/taskMigrations.js +236 -0
  217. package/dist/migrations/taskMigrations.test.d.ts +1 -0
  218. package/dist/migrations/taskMigrations.test.js +34 -0
  219. package/dist/migrations/taskSchemaMigrations.d.ts +11 -0
  220. package/dist/migrations/taskSchemaMigrations.js +453 -0
  221. package/dist/plugins/index.d.ts +10 -0
  222. package/dist/plugins/index.js +10 -0
  223. package/dist/plugins/vite.d.ts +19 -0
  224. package/dist/plugins/vite.js +271 -0
  225. package/dist/public/android-chrome-192x192.png +0 -0
  226. package/dist/public/android-chrome-512x512.png +0 -0
  227. package/dist/public/apple-touch-icon.png +0 -0
  228. package/dist/public/favicon-16x16.png +0 -0
  229. package/dist/public/favicon-32x32.png +0 -0
  230. package/dist/public/favicon.ico +0 -0
  231. package/dist/public/favicon.png +0 -0
  232. package/dist/public/site.webmanifest +1 -0
  233. package/dist/public/taskforce.png +0 -0
  234. package/dist/resources/templates/WORKFLOW_V2_POLICY.md +55 -0
  235. package/dist/resources/templates/environments/aider.yaml +14 -0
  236. package/dist/resources/templates/environments/antigravity.yaml +10 -0
  237. package/dist/resources/templates/environments/claude.yaml +10 -0
  238. package/dist/resources/templates/environments/cline.yaml +10 -0
  239. package/dist/resources/templates/environments/codex.yaml +13 -0
  240. package/dist/resources/templates/environments/copilot.yaml +10 -0
  241. package/dist/resources/templates/environments/cursor.yaml +9 -0
  242. package/dist/resources/templates/environments/gemini.yaml +9 -0
  243. package/dist/resources/templates/environments/windsurf.yaml +10 -0
  244. package/dist/resources/templates/workflow-sources/README.md +9 -0
  245. package/dist/resources/templates/workflow-sources/workflowDocs.mjs +520 -0
  246. package/dist/resources/templates/workflow-sources/workflowEditorOverrides.json +1 -0
  247. package/dist/resources/templates/workflows/collaborate.yaml +104 -0
  248. package/dist/resources/templates/workflows/do.yaml +82 -0
  249. package/dist/resources/templates/workflows/evaluate.yaml +111 -0
  250. package/dist/resources/templates/workflows/execute.yaml +142 -0
  251. package/dist/resources/templates/workflows/plan.yaml +112 -0
  252. package/dist/resources/templates/workflows/review.yaml +109 -0
  253. package/dist/runtime/capabilities.d.ts +8 -0
  254. package/dist/runtime/capabilities.js +16 -0
  255. package/dist/security/virusScan.d.ts +16 -0
  256. package/dist/security/virusScan.js +83 -0
  257. package/dist/server/auth.d.ts +51 -0
  258. package/dist/server/auth.js +266 -0
  259. package/dist/server/auth.test.d.ts +1 -0
  260. package/dist/server/auth.test.js +111 -0
  261. package/dist/server/buildInfo.d.ts +7 -0
  262. package/dist/server/buildInfo.js +100 -0
  263. package/dist/server/buildInfo.test.d.ts +1 -0
  264. package/dist/server/buildInfo.test.js +29 -0
  265. package/dist/server/cors.d.ts +7 -0
  266. package/dist/server/cors.js +76 -0
  267. package/dist/server/cors.test.d.ts +1 -0
  268. package/dist/server/cors.test.js +71 -0
  269. package/dist/server/email.d.ts +28 -0
  270. package/dist/server/email.js +138 -0
  271. package/dist/server/email.test.d.ts +1 -0
  272. package/dist/server/email.test.js +113 -0
  273. package/dist/server/index.cookieProxy.test.d.ts +1 -0
  274. package/dist/server/index.cookieProxy.test.js +19 -0
  275. package/dist/server/index.d.ts +17 -0
  276. package/dist/server/index.js +757 -0
  277. package/dist/server/index.rateLimit.test.d.ts +1 -0
  278. package/dist/server/index.rateLimit.test.js +13 -0
  279. package/dist/server/index.test.d.ts +1 -0
  280. package/dist/server/index.test.js +19 -0
  281. package/dist/server/rateLimit.d.ts +29 -0
  282. package/dist/server/rateLimit.js +99 -0
  283. package/dist/server/rateLimit.test.d.ts +1 -0
  284. package/dist/server/rateLimit.test.js +107 -0
  285. package/dist/server/realtimeSync.auth.test.d.ts +1 -0
  286. package/dist/server/realtimeSync.auth.test.js +62 -0
  287. package/dist/server/realtimeSync.replay.test.d.ts +1 -0
  288. package/dist/server/realtimeSync.replay.test.js +192 -0
  289. package/dist/server/realtimeSync.workspaceIsolation.test.d.ts +1 -0
  290. package/dist/server/realtimeSync.workspaceIsolation.test.js +101 -0
  291. package/dist/server/realtimeSyncWs.d.ts +30 -0
  292. package/dist/server/realtimeSyncWs.js +257 -0
  293. package/dist/server/routes.billing.d.ts +15 -0
  294. package/dist/server/routes.billing.js +991 -0
  295. package/dist/server/routes.billing.test.d.ts +1 -0
  296. package/dist/server/routes.billing.test.js +387 -0
  297. package/dist/server/routes.d.ts +72 -0
  298. package/dist/server/routes.js +4820 -0
  299. package/dist/server/routes.sync.d.ts +17 -0
  300. package/dist/server/routes.sync.integration.test.d.ts +1 -0
  301. package/dist/server/routes.sync.integration.test.js +470 -0
  302. package/dist/server/routes.sync.js +1141 -0
  303. package/dist/server/routes.test.d.ts +1 -0
  304. package/dist/server/routes.test.js +4945 -0
  305. package/dist/server/runtimeMode.d.ts +4 -0
  306. package/dist/server/runtimeMode.js +25 -0
  307. package/dist/server/runtimeMode.test.d.ts +1 -0
  308. package/dist/server/runtimeMode.test.js +26 -0
  309. package/dist/server/securityHeaders.d.ts +3 -0
  310. package/dist/server/securityHeaders.js +25 -0
  311. package/dist/server/securityHeaders.test.d.ts +1 -0
  312. package/dist/server/securityHeaders.test.js +32 -0
  313. package/dist/server/smtpTransport.d.ts +21 -0
  314. package/dist/server/smtpTransport.js +11 -0
  315. package/dist/server/start.d.ts +1 -0
  316. package/dist/server/start.js +17 -0
  317. package/dist/services/formatTransformers.d.ts +29 -0
  318. package/dist/services/formatTransformers.js +56 -0
  319. package/dist/services/templateEngine.d.ts +46 -0
  320. package/dist/services/templateEngine.js +148 -0
  321. package/dist/shared/runtimeContract.d.ts +12 -0
  322. package/dist/shared/runtimeContract.js +23 -0
  323. package/dist/shared/runtimeContract.test.d.ts +1 -0
  324. package/dist/shared/runtimeContract.test.js +23 -0
  325. package/dist/soak/preflight.cli.d.ts +1 -0
  326. package/dist/soak/preflight.cli.js +28 -0
  327. package/dist/soak/preflight.d.ts +26 -0
  328. package/dist/soak/preflight.js +113 -0
  329. package/dist/soak/preflight.test.d.ts +1 -0
  330. package/dist/soak/preflight.test.js +39 -0
  331. package/dist/soak/syncSoakHarness.d.ts +6 -0
  332. package/dist/soak/syncSoakHarness.js +10 -0
  333. package/dist/storage/createDatabaseAdapter.d.ts +2 -0
  334. package/dist/storage/createDatabaseAdapter.js +9 -0
  335. package/dist/storage/databaseAdapter.d.ts +22 -0
  336. package/dist/storage/databaseAdapter.js +1 -0
  337. package/dist/storage/documentIntegrity.d.ts +28 -0
  338. package/dist/storage/documentIntegrity.js +103 -0
  339. package/dist/storage/documentPurge.d.ts +14 -0
  340. package/dist/storage/documentPurge.js +46 -0
  341. package/dist/storage/documentRegistry.d.ts +39 -0
  342. package/dist/storage/documentRegistry.js +115 -0
  343. package/dist/storage/integritySchedule.d.ts +17 -0
  344. package/dist/storage/integritySchedule.js +62 -0
  345. package/dist/storage/objectStorage.d.ts +20 -0
  346. package/dist/storage/objectStorage.js +15 -0
  347. package/dist/storage/objectStorageClient.d.ts +18 -0
  348. package/dist/storage/objectStorageClient.js +301 -0
  349. package/dist/storage/objectStorageConfig.d.ts +2 -0
  350. package/dist/storage/objectStorageConfig.js +45 -0
  351. package/dist/storage/postgresAdapter.d.ts +20 -0
  352. package/dist/storage/postgresAdapter.js +204 -0
  353. package/dist/storage/postgresWorker.d.ts +1 -0
  354. package/dist/storage/postgresWorker.js +110 -0
  355. package/dist/storage/providerConfig.d.ts +6 -0
  356. package/dist/storage/providerConfig.js +11 -0
  357. package/dist/storage/sqliteAdapter.d.ts +14 -0
  358. package/dist/storage/sqliteAdapter.js +28 -0
  359. package/dist/storage/taskAssetStore.d.ts +56 -0
  360. package/dist/storage/taskAssetStore.js +297 -0
  361. package/dist/sync/cloudSyncApi.d.ts +47 -0
  362. package/dist/sync/cloudSyncApi.js +138 -0
  363. package/dist/sync/cloudSyncApi.test.d.ts +1 -0
  364. package/dist/sync/cloudSyncApi.test.js +54 -0
  365. package/dist/sync/encryptionService.d.ts +11 -0
  366. package/dist/sync/encryptionService.js +61 -0
  367. package/dist/sync/encryptionService.test.d.ts +1 -0
  368. package/dist/sync/encryptionService.test.js +52 -0
  369. package/dist/sync/realtimeFeature.d.ts +6 -0
  370. package/dist/sync/realtimeFeature.js +20 -0
  371. package/dist/sync/realtimeFeature.test.d.ts +1 -0
  372. package/dist/sync/realtimeFeature.test.js +30 -0
  373. package/dist/sync/realtimeReconcile.d.ts +30 -0
  374. package/dist/sync/realtimeReconcile.js +90 -0
  375. package/dist/sync/realtimeReconcile.test.d.ts +1 -0
  376. package/dist/sync/realtimeReconcile.test.js +43 -0
  377. package/dist/sync/syncService.d.ts +96 -0
  378. package/dist/sync/syncService.js +423 -0
  379. package/dist/sync/syncService.test.d.ts +1 -0
  380. package/dist/sync/syncService.test.js +484 -0
  381. package/dist/sync/workspaceSyncModel.d.ts +61 -0
  382. package/dist/sync/workspaceSyncModel.js +136 -0
  383. package/dist/sync/workspaceSyncModel.test.d.ts +1 -0
  384. package/dist/sync/workspaceSyncModel.test.js +73 -0
  385. package/dist/test/setup.d.ts +1 -0
  386. package/dist/test/setup.js +15 -0
  387. package/dist/types.d.ts +157 -0
  388. package/dist/types.js +41 -0
  389. package/dist/ui/assets/RussoOne-Regular-C3BxZIj7.ttf +0 -0
  390. package/dist/ui/assets/index-0W5vyCpn.css +1 -0
  391. package/dist/ui/assets/index-MCZuNNfn.js +23 -0
  392. package/dist/ui/assets/logo_white_01-0Vx-iIIv.png +0 -0
  393. package/dist/ui/assets/taskforce-BxLPokNB.png +0 -0
  394. package/dist/ui/assets/vendor-dnd-BI1K77C1.js +5 -0
  395. package/dist/ui/assets/vendor-icons-ZFG3SGwo.js +1 -0
  396. package/dist/ui/assets/vendor-markdown-CKYkQHfj.js +29 -0
  397. package/dist/ui/assets/vendor-react-DdIDsh7f.js +9 -0
  398. package/dist/ui/assets/vendor-router-BtiNU7Dl.js +3 -0
  399. package/dist/ui/branding/logos/logo_black_01.png +0 -0
  400. package/dist/ui/branding/logos/logo_black_02.png +0 -0
  401. package/dist/ui/branding/logos/logo_white_01.png +0 -0
  402. package/dist/ui/branding/logos/logo_white_02.png +0 -0
  403. package/dist/ui/favicon/android-chrome-192x192.png +0 -0
  404. package/dist/ui/favicon/android-chrome-512x512.png +0 -0
  405. package/dist/ui/favicon/apple-touch-icon.png +0 -0
  406. package/dist/ui/favicon/favicon-16x16.png +0 -0
  407. package/dist/ui/favicon/favicon-32x32.png +0 -0
  408. package/dist/ui/favicon/favicon.ico +0 -0
  409. package/dist/ui/favicon/favicon.png +0 -0
  410. package/dist/ui/favicon/site.webmanifest +1 -0
  411. package/dist/ui/fonts/RussoOne-Regular.ttf +0 -0
  412. package/dist/ui/images/taskforce.png +0 -0
  413. package/dist/ui/index.html +19 -0
  414. package/dist/utils/checklistMarkdown.d.ts +9 -0
  415. package/dist/utils/checklistMarkdown.js +46 -0
  416. package/dist/utils/constants.d.ts +21 -0
  417. package/dist/utils/constants.icons.test.d.ts +1 -0
  418. package/dist/utils/constants.icons.test.js +40 -0
  419. package/dist/utils/constants.js +100 -0
  420. package/dist/utils/contextFiles.d.ts +8 -0
  421. package/dist/utils/contextFiles.js +54 -0
  422. package/dist/utils/formatting.d.ts +5 -0
  423. package/dist/utils/formatting.js +30 -0
  424. package/dist/utils/planParser.d.ts +22 -0
  425. package/dist/utils/planParser.js +151 -0
  426. package/dist/utils/taskDragZones.d.ts +8 -0
  427. package/dist/utils/taskDragZones.js +14 -0
  428. package/dist/utils/taskDragZones.test.d.ts +1 -0
  429. package/dist/utils/taskDragZones.test.js +14 -0
  430. package/dist/utils/taskHierarchy.d.ts +4 -0
  431. package/dist/utils/taskHierarchy.js +69 -0
  432. package/dist/utils/taskHierarchy.test.d.ts +1 -0
  433. package/dist/utils/taskHierarchy.test.js +38 -0
  434. package/dist/utils/taskParenting.d.ts +3 -0
  435. package/dist/utils/taskParenting.js +24 -0
  436. package/dist/utils/taskParenting.test.d.ts +1 -0
  437. package/dist/utils/taskParenting.test.js +21 -0
  438. package/dist/utils/taskRelations.d.ts +6 -0
  439. package/dist/utils/taskRelations.js +24 -0
  440. package/dist/utils/taskRelations.test.d.ts +1 -0
  441. package/dist/utils/taskRelations.test.js +34 -0
  442. package/dist/utils/taskUtils.d.ts +2 -0
  443. package/dist/utils/taskUtils.js +20 -0
  444. package/dist/utils/taskforceApiClient.d.ts +7 -0
  445. package/dist/utils/taskforceApiClient.js +42 -0
  446. package/dist/utils/workspaceIdentity.d.ts +8 -0
  447. package/dist/utils/workspaceIdentity.js +47 -0
  448. package/dist/utils/workspaceIdentity.test.d.ts +1 -0
  449. package/dist/utils/workspaceIdentity.test.js +32 -0
  450. package/dist/utils/workspaceLifecycle.d.ts +26 -0
  451. package/dist/utils/workspaceLifecycle.js +69 -0
  452. package/dist/utils/workspaceLifecycle.test.d.ts +1 -0
  453. package/dist/utils/workspaceLifecycle.test.js +64 -0
  454. package/package.json +133 -0
  455. package/scripts/check-compat-boundaries.js +48 -0
  456. package/scripts/check-env.ts +24 -0
  457. package/scripts/check-localization-strings.mjs +49 -0
  458. package/scripts/check-runtime-boundaries.mjs +44 -0
  459. package/scripts/debug-global.mjs +34 -0
  460. package/scripts/debug-server.mjs +36 -0
  461. package/scripts/export-sqlite-to-postgres.mjs +125 -0
  462. package/scripts/generate-env-example.ts +8 -0
  463. package/scripts/generate-workflow-templates.mjs +134 -0
  464. package/scripts/mcp-stdio-adapter.mjs +160 -0
  465. package/scripts/postinstall.js +60 -0
  466. package/scripts/release-version-lib.mjs +88 -0
  467. package/scripts/release-version.mjs +72 -0
  468. package/scripts/run-dev-proxy.sh +49 -0
  469. package/scripts/run-e2e-realtime.sh +16 -0
  470. package/scripts/run-smoke.sh +23 -0
  471. package/scripts/run-soak.sh +29 -0
  472. package/scripts/test-global.js +143 -0
  473. package/scripts/update-homebrew-formula.sh +38 -0
  474. package/src/resources/templates/WORKFLOW_V2_POLICY.md +55 -0
  475. package/src/resources/templates/environments/aider.yaml +14 -0
  476. package/src/resources/templates/environments/antigravity.yaml +10 -0
  477. package/src/resources/templates/environments/claude.yaml +10 -0
  478. package/src/resources/templates/environments/cline.yaml +10 -0
  479. package/src/resources/templates/environments/codex.yaml +13 -0
  480. package/src/resources/templates/environments/copilot.yaml +10 -0
  481. package/src/resources/templates/environments/cursor.yaml +9 -0
  482. package/src/resources/templates/environments/gemini.yaml +9 -0
  483. package/src/resources/templates/environments/windsurf.yaml +10 -0
  484. package/src/resources/templates/workflow-sources/README.md +9 -0
  485. package/src/resources/templates/workflow-sources/workflowDocs.mjs +520 -0
  486. package/src/resources/templates/workflow-sources/workflowEditorOverrides.json +1 -0
  487. package/src/resources/templates/workflows/collaborate.yaml +104 -0
  488. package/src/resources/templates/workflows/do.yaml +82 -0
  489. package/src/resources/templates/workflows/evaluate.yaml +111 -0
  490. package/src/resources/templates/workflows/execute.yaml +142 -0
  491. package/src/resources/templates/workflows/plan.yaml +112 -0
  492. package/src/resources/templates/workflows/review.yaml +109 -0
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Taskforce Vite Plugin
3
+ *
4
+ * Handles task operations during development by reading/writing JSON files.
5
+ * Uses TaskforceCore for logic, acting as an HTTP adapter.
6
+ */
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ import { fileURLToPath } from 'url';
10
+ import { TaskforceCore } from '../core/Taskforce.js';
11
+ import { createRoutes, matchRoute } from '../server/routes.js';
12
+ import { resolveDatabaseConfigFromEnv } from '../storage/providerConfig.js';
13
+ import { resolveObjectStorageConfigFromEnv } from '../storage/objectStorageConfig.js';
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = path.dirname(__filename);
16
+ // @ts-ignore
17
+ import pkg from '../../package.json' with { type: 'json' };
18
+ const { version } = pkg;
19
+ /**
20
+ * Vite plugin for Taskforce file operations
21
+ *
22
+ * Uses project root (parent of frontend/) as base path for file operations.
23
+ * Default storage path: .taskforce/ (for AI agent accessibility)
24
+ */
25
+ export function taskforcePlugin(options) {
26
+ console.log(`\x1b[35m[Taskforce] v${version} initialized${options?.mode ? ` (${options.mode})` : ''}\x1b[0m`);
27
+ const hostRoot = options?.hostRoot;
28
+ const mode = options?.mode || 'app';
29
+ // Project root detection:
30
+ // Priority 1: Use hostRoot if provided (for CLI usage)
31
+ // Priority 2: Use process.cwd() (for standalone projects)
32
+ let projectRoot;
33
+ if (hostRoot) {
34
+ projectRoot = hostRoot;
35
+ console.log('[Taskforce] Using provided host root:', projectRoot);
36
+ }
37
+ else {
38
+ projectRoot = process.cwd();
39
+ console.log('[Taskforce] Using current working directory:', projectRoot);
40
+ }
41
+ // Resolve to real path to handle symlinks
42
+ if (fs.existsSync(projectRoot)) {
43
+ projectRoot = fs.realpathSync(projectRoot);
44
+ }
45
+ const db = resolveDatabaseConfigFromEnv();
46
+ // Initialize Core
47
+ const core = new TaskforceCore({
48
+ projectRoot,
49
+ storagePath: options?.outputPath,
50
+ tenantId: process.env.TASKFORCE_TENANT_ID || 'default',
51
+ database: {
52
+ provider: db.provider,
53
+ connectionString: db.connectionString
54
+ }
55
+ });
56
+ const { screenshotsDir, basePath } = core.getPaths();
57
+ return {
58
+ name: 'taskforce',
59
+ handleHotUpdate({ file, server }) {
60
+ if (file.startsWith(basePath) && (file.endsWith('.json') || file.endsWith('.md'))) {
61
+ server.ws.send({
62
+ type: 'custom',
63
+ event: 'taskforce:update',
64
+ data: { file }
65
+ });
66
+ return []; // Return empty array to stop HMR propagation/reload
67
+ }
68
+ },
69
+ configureServer(server) {
70
+ // Hot Module Replacement for Taskforce data
71
+ // Listen for changes in the storage directory and notify client
72
+ server.watcher.add(basePath);
73
+ server.watcher.on('change', (file) => {
74
+ if (file.startsWith(basePath) && (file.endsWith('.json') || file.endsWith('.md'))) {
75
+ server.ws.send({
76
+ type: 'custom',
77
+ event: 'taskforce:update',
78
+ data: { file }
79
+ });
80
+ }
81
+ });
82
+ // 1. Serve static assets (favicon, logo) from package dist/public or project root
83
+ server.middlewares.use((req, res, next) => {
84
+ const url = req.url || '';
85
+ // FIX: Do not intercept requests for source files (e.g., /src/...)
86
+ // Vite needs to handle these to transform them into JS modules when imported.
87
+ // If we serve them as raw images here, the browser receives an image when it expects a module, causing MIME type errors.
88
+ if (url.startsWith('/src/') || url.startsWith('/node_modules/') || url.startsWith('/@')) {
89
+ return next();
90
+ }
91
+ // Check if the request is for our branded assets
92
+ if (url.includes('favicon.png') || url.includes('logo.svg') || url.includes('logo.png') || url.includes('logo.jpg') || url.includes('favicon.ico')) {
93
+ // Priority list for project assets
94
+ const projectAssets = [
95
+ 'logo.svg',
96
+ 'logo.png',
97
+ 'logo.jpg',
98
+ 'favicon.png',
99
+ 'favicon.ico'
100
+ ];
101
+ const requestedFile = path.basename(url.split('?')[0]);
102
+ // 1. Check PROJECT public/ folder (User's assets)
103
+ // We check for ANY of the supported assets if the request corresponds to our generic "logo" concept
104
+ // But to keep it simple, if they ask for /favicon.png, we look for favicon.png.
105
+ // However, we want to allow the frontend to blindly ask for "/logo.png" (or similar) and get the BEST available logo.
106
+ // Strategy:
107
+ // If request is specifically for "logo.svg" (or the generic logo endpoint we decide on), we try to find the best logo.
108
+ // If request is for "favicon.png", we try to find the best favicon.
109
+ const projectPublic = path.join(projectRoot, 'public');
110
+ if (fs.existsSync(projectPublic)) {
111
+ // If checking for the logo, try all logo variants
112
+ if (url.includes('logo')) {
113
+ // Try to find ANY logo
114
+ for (const asset of ['logo.svg', 'logo.png', 'logo.jpg']) {
115
+ const assetPath = path.join(projectPublic, asset);
116
+ if (fs.existsSync(assetPath)) {
117
+ const contentType = asset.endsWith('.svg') ? 'image/svg+xml' : (asset.endsWith('.png') ? 'image/png' : 'image/jpeg');
118
+ res.writeHead(200, { 'Content-Type': contentType });
119
+ fs.createReadStream(assetPath).pipe(res);
120
+ return;
121
+ }
122
+ }
123
+ }
124
+ // If specific file requested (and not handled by above generic logo logic, or if we want exact match)
125
+ const exactPath = path.join(projectPublic, requestedFile);
126
+ if (fs.existsSync(exactPath)) {
127
+ const contentType = requestedFile.endsWith('.svg') ? 'image/svg+xml' : (requestedFile.endsWith('.png') ? 'image/png' : (requestedFile.endsWith('.ico') ? 'image/x-icon' : 'image/jpeg'));
128
+ res.writeHead(200, { 'Content-Type': contentType });
129
+ fs.createReadStream(exactPath).pipe(res);
130
+ return;
131
+ }
132
+ }
133
+ // 2. Fallback to Taskforce Default Assets (in package)
134
+ // Determine where we are running from
135
+ let assetPath = '';
136
+ // Case 1: Development - look in new src/assets structure
137
+ const devAssets = path.resolve(__dirname, '../../src/assets');
138
+ // Case 2: Production (dist/plugins/vite.js) -> ../public
139
+ const prodPublic = path.resolve(__dirname, '../public');
140
+ // Map requested file to our available defaults
141
+ // We only have favicon.png and logo.svg in our defaults
142
+ let defaultFile = requestedFile;
143
+ if (requestedFile.includes('logo') && !requestedFile.endsWith('.svg'))
144
+ defaultFile = 'logo.svg';
145
+ // If they asked for logo.png/jpg but we only have logo.svg default, serve logo.svg?
146
+ // Browsers might complain about mime type mismatch if we serve svg for png request.
147
+ // Better to just serve what we have if it matches name.
148
+ if (defaultFile === 'logo.png' || defaultFile === 'logo.jpg')
149
+ defaultFile = 'logo.svg'; // Force svg for default logo
150
+ if (fs.existsSync(path.join(prodPublic, defaultFile))) {
151
+ assetPath = path.join(prodPublic, defaultFile);
152
+ }
153
+ else if (devAssets) {
154
+ // Check image and favicon folders in dev
155
+ const imgPath = path.join(devAssets, 'images', defaultFile);
156
+ const favPath = path.join(devAssets, 'favicon', defaultFile);
157
+ if (fs.existsSync(imgPath)) {
158
+ assetPath = imgPath;
159
+ }
160
+ else if (fs.existsSync(favPath)) {
161
+ assetPath = favPath;
162
+ }
163
+ }
164
+ if (assetPath && fs.existsSync(assetPath)) {
165
+ // Ensure we send correct content-type for the file we are actually serving
166
+ const contentType = assetPath.endsWith('.svg') ? 'image/svg+xml' : 'image/png';
167
+ res.writeHead(200, { 'Content-Type': contentType });
168
+ fs.createReadStream(assetPath).pipe(res);
169
+ return;
170
+ }
171
+ }
172
+ next();
173
+ });
174
+ // 2. Serve standalone UI dashboard (high priority to avoid SPA catch-all)
175
+ server.middlewares.use(async (req, res, next) => {
176
+ // Parse URL to handle query params and trailing slashes
177
+ const urlObj = new URL(req.url || '', 'http://localhost');
178
+ const pathname = urlObj.pathname;
179
+ if (pathname === '/taskforce' || pathname === '/taskforce/') {
180
+ const html = `
181
+ <!DOCTYPE html>
182
+ <html lang="en">
183
+ <head>
184
+ <meta charset="UTF-8" />
185
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
186
+ <link rel="icon" type="image/png" href="/src/assets/favicon/favicon.png" />
187
+ <title>Taskforce Dashboard</title>
188
+ <style>
189
+ body { margin: 0; background: #0f0f1a; color: white; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }
190
+ #root { height: 100vh; overflow: hidden; }
191
+ </style>
192
+ </head>
193
+ <body>
194
+ <div id="root"></div>
195
+ <script type="module">
196
+ import React from 'react';
197
+ import ReactDOM from 'react-dom/client';
198
+ import { BrowserRouter } from 'react-router-dom';
199
+ import { TaskforceCore } from '@taskforcehq/taskforce';
200
+
201
+ const root = document.getElementById('root');
202
+ ReactDOM.createRoot(root).render(
203
+ React.createElement(React.StrictMode, null,
204
+ React.createElement(BrowserRouter, null,
205
+ React.createElement(TaskforceCore, {
206
+ mode: 'standalone',
207
+ config: {
208
+ categories: ['Feature', 'Bug', 'Research'],
209
+ theme: 'midnight'
210
+ }
211
+ })
212
+ )
213
+ )
214
+ );
215
+ </script>
216
+ </body>
217
+ </html>`;
218
+ try {
219
+ const transformedHtml = await server.transformIndexHtml(req.url || '', html);
220
+ res.writeHead(200, { 'Content-Type': 'text/html' });
221
+ res.end(transformedHtml);
222
+ return;
223
+ }
224
+ catch (e) {
225
+ console.error('[Taskforce] Error rendering standalone page:', e);
226
+ res.writeHead(500);
227
+ res.end('Error rendering Taskforce dashboard');
228
+ return;
229
+ }
230
+ }
231
+ next();
232
+ });
233
+ // 3. Register centralized API routes
234
+ const objectStorage = resolveObjectStorageConfigFromEnv(process.env);
235
+ const routes = createRoutes(core, {
236
+ objectStorage
237
+ });
238
+ // Use a single middleware to match all API routes
239
+ server.middlewares.use(async (req, res, next) => {
240
+ const url = new URL(req.url || '/', `http://localhost`);
241
+ const match = matchRoute(req.method || 'GET', url.pathname, routes);
242
+ if (match) {
243
+ try {
244
+ // Pass request context (like mode) via headers or req decoration if needed
245
+ // Ideally core logic is decoupled from request, but updateConfig reads paths again.
246
+ // We can decorate req for routes that need it.
247
+ res.req = req;
248
+ if (!req.headers['x-taskforce-mode']) {
249
+ req.headers['x-taskforce-mode'] = mode; // Inject mode for /config route
250
+ }
251
+ await match.handler(req, res, match.params);
252
+ }
253
+ catch (error) {
254
+ console.error('[Taskforce] API error:', error);
255
+ // Only send error response if headers haven't been sent
256
+ if (!res.headersSent) {
257
+ const statusCode = Number.isFinite(Number(error?.statusCode))
258
+ ? Math.max(400, Math.min(599, Number(error.statusCode)))
259
+ : 500;
260
+ res.writeHead(statusCode, { 'Content-Type': 'application/json' });
261
+ res.end(JSON.stringify({ error: error.message }));
262
+ }
263
+ }
264
+ return;
265
+ }
266
+ next();
267
+ });
268
+ },
269
+ };
270
+ }
271
+ export default taskforcePlugin;
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
Binary file
@@ -0,0 +1,55 @@
1
+ # Taskforce Workflow v2 Policy
2
+
3
+ This note defines the canonical policy for v2 workflow templates and environment exports.
4
+
5
+ ## 1) Dispatch Precedence
6
+ - Explicit slash command invocation wins over task `approach`.
7
+ - `/do` may route by `approach` when no conflicting explicit command is provided.
8
+ - `approachMap` should exist as a global default, with optional per-workflow override.
9
+
10
+ ## 2) Required Tools Policy
11
+ - Use hybrid enforcement:
12
+ - Critical tools: `strict-fail`
13
+ - Non-critical tools: `warn-and-fallback`
14
+ - Define tools in `compat` as:
15
+ - `requiredToolsCritical`
16
+ - `requiredToolsOptional`
17
+ - Fallback behavior must be explicit in workflow content:
18
+ - Mutating workflows (`do`, `plan`) should stop and ask user when MCP is unavailable.
19
+ - Non-mutating workflows (`evaluate`, optionally `review`) may continue read-only with clear warning.
20
+
21
+ ## 3) Status Transition Policy
22
+ - AI-managed statuses (default allowed): `task`, `on-hold`, `in-progress`, `review`.
23
+ - AI must not set `done` or `cancelled` unless the user explicitly instructs it.
24
+ - If AI moves status to `task` or `on-hold`, it must add comment justification via MCP.
25
+ - Structured workflow summary comments are validated at MCP `add_comment` time when known summary headings are used.
26
+
27
+ ## 4) Compatibility Policy
28
+ - `compat.minTaskforceVersion` uses semver-aware comparisons.
29
+ - Workflow execution should fail fast if critical compatibility checks are not met.
30
+
31
+ ## 5) MCP Availability Policy
32
+ - `contextPolicy.mcpUnavailableAction` is required.
33
+ - Recommended defaults:
34
+ - `do`, `plan`: `stop-and-request-user-action`
35
+ - `evaluate`, `review`: may allow warning-based read-only fallback (project policy dependent)
36
+
37
+ ## 6) Artifact Path Policy
38
+ - Artifact paths must be project-root-relative.
39
+ - Do not write artifacts outside the project root by default.
40
+ - Optional artifacts should use `savePolicy: ask-before-save`.
41
+ - Structured docs saved under `.taskforce/task-data/{taskId}/*` should include required section headings; attachment is validated at MCP attach time.
42
+
43
+ ## 7) Artifact Ownership
44
+ - Keep artifacts owned by the workflow that produces them:
45
+ - `plan` -> `implementationPlan`
46
+ - `execute` -> `walkthrough`
47
+ - `evaluate` -> `evaluationReport` (optional)
48
+ - `review` -> `reviewReport` (optional)
49
+
50
+ ## 8) Template Maintenance Rule
51
+ - Keep workflow `toolPolicy`, `compat`, `dispatch`, and `contextPolicy` concise and machine-readable.
52
+ - Put explanatory operational details in `content.default`.
53
+ - Edit source definitions in `src/resources/templates/workflow-sources/workflowDocs.mjs`.
54
+ - Use `npm run gen:workflows` after edits to regenerate flattened workflow YAML files.
55
+ - Use `npm run check:workflows` to detect drift between source and generated files.
@@ -0,0 +1,14 @@
1
+
2
+ id: aider
3
+ name: Aider
4
+ icon: Zap
5
+ workflows:
6
+ directory: .
7
+ format: markdown
8
+ filenamePattern: ".aider/commands/{name}.md"
9
+ overrides:
10
+ do:
11
+ filename: CONVENTIONS.md
12
+ strategy: inject
13
+ mcp:
14
+ prefix: "mcp_taskforce-{projectName}_"
@@ -0,0 +1,10 @@
1
+
2
+ id: antigravity
3
+ name: Antigravity
4
+ icon: Bot
5
+ workflows:
6
+ directory: .agent/workflows
7
+ format: markdown
8
+ filenamePattern: "{name}.md"
9
+ mcp:
10
+ prefix: "mcp_taskforce-{projectName}_"
@@ -0,0 +1,10 @@
1
+
2
+ id: claude
3
+ name: Claude Desktop
4
+ icon: Terminal
5
+ workflows:
6
+ directory: .claude/commands
7
+ format: markdown
8
+ filenamePattern: "{name}.md"
9
+ mcp:
10
+ prefix: "mcp_taskforce-{projectName}_"
@@ -0,0 +1,10 @@
1
+
2
+ id: cline
3
+ name: Cline
4
+ icon: Box
5
+ workflows:
6
+ directory: .clinerules
7
+ format: markdown
8
+ filenamePattern: "{name}.md"
9
+ mcp:
10
+ prefix: "mcp_taskforce-{projectName}_"
@@ -0,0 +1,13 @@
1
+ id: codex
2
+ name: Codex
3
+ icon: Terminal
4
+ workflows:
5
+ directory: .
6
+ format: markdown
7
+ filenamePattern: ".codex/workflows/{name}.md"
8
+ overrides:
9
+ do:
10
+ filename: AGENTS.md
11
+ strategy: inject
12
+ mcp:
13
+ prefix: "mcp_taskforce-{projectName}_"
@@ -0,0 +1,10 @@
1
+
2
+ id: copilot
3
+ name: GitHub Copilot
4
+ icon: Github
5
+ workflows:
6
+ directory: .github/prompts
7
+ format: markdown
8
+ filenamePattern: "{name}.prompt.md"
9
+ mcp:
10
+ prefix: "mcp_taskforce-{projectName}_"
@@ -0,0 +1,9 @@
1
+
2
+ id: cursor
3
+ name: Cursor AI
4
+ workflows:
5
+ directory: .cursor/rules
6
+ format: mdc
7
+ filenamePattern: "{name}.mdc"
8
+ mcp:
9
+ prefix: "mcp_taskforce-{projectName}_"
@@ -0,0 +1,9 @@
1
+
2
+ id: gemini
3
+ name: Gemini CLI
4
+ workflows:
5
+ directory: .gemini/commands
6
+ format: toml
7
+ filenamePattern: "{name}.toml"
8
+ mcp:
9
+ prefix: "mcp_taskforce-{projectName}_"
@@ -0,0 +1,10 @@
1
+
2
+ id: windsurf
3
+ name: Windsurf
4
+ icon: Wind
5
+ workflows:
6
+ directory: .windsurf/rules
7
+ format: mdc
8
+ filenamePattern: "{name}.mdc"
9
+ mcp:
10
+ prefix: "mcp_taskforce-{projectName}_"
@@ -0,0 +1,9 @@
1
+ # Workflow Template Sources
2
+
3
+ This directory is the source of truth for workflow template definitions.
4
+
5
+ - Edit `workflowDocs.mjs` to change workflow structure/content.
6
+ - Run `npm run gen:workflows` to regenerate flattened YAML files in `../workflows`.
7
+ - Use `npm run check:workflows` to verify generated files are up to date.
8
+
9
+ Do not manually edit files in `../workflows` unless you immediately regenerate from source.