@taskforcehq/taskforce 0.3.305 → 0.3.306

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/dist/Taskforce.module.css +295 -89
  2. package/dist/TaskforceCore.js +215 -43
  3. package/dist/TaskforceCore.test.js +433 -28
  4. package/dist/assets/fonts/CourierPrime-Bold.woff2 +0 -0
  5. package/dist/assets/fonts/CourierPrime-BoldItalic.woff2 +0 -0
  6. package/dist/assets/fonts/CourierPrime-Italic.woff2 +0 -0
  7. package/dist/assets/fonts/CourierPrime-Regular.woff2 +0 -0
  8. package/dist/assets/fonts/Noir_medium.woff2 +0 -0
  9. package/dist/assets/fonts/Noir_regular.woff2 +0 -0
  10. package/dist/assets/fonts/RussoOne-Regular.woff2 +0 -0
  11. package/dist/assets/fonts/SpecialElite-Regular.woff2 +0 -0
  12. package/dist/compat/workspaceSyncCompat.js +46 -2
  13. package/dist/compat/workspaceSyncCompat.test.js +38 -1
  14. package/dist/components/context/ContextAttachmentManager.d.ts +14 -0
  15. package/dist/components/context/ContextAttachmentManager.js +549 -0
  16. package/dist/components/features/AgentsModule.d.ts +10 -1
  17. package/dist/components/features/AgentsModule.js +260 -15
  18. package/dist/components/features/AgentsModule.test.js +255 -5
  19. package/dist/components/features/DocumentViewer.d.ts +5 -1
  20. package/dist/components/features/DocumentViewer.js +60 -3
  21. package/dist/components/features/DocumentWorkspace.js +1 -1
  22. package/dist/components/features/DocumentWorkspace.test.js +33 -0
  23. package/dist/components/features/documentWorkspaceModel.d.ts +1 -1
  24. package/dist/components/task/TaskCard.js +19 -28
  25. package/dist/components/task/TaskCard.test.js +38 -3
  26. package/dist/components/task/TaskContextUpload.js +4 -526
  27. package/dist/components/task/TaskForm.js +85 -90
  28. package/dist/components/task/TaskForm.test.js +110 -8
  29. package/dist/components/task/TaskKanban.d.ts +2 -1
  30. package/dist/components/task/TaskKanban.js +94 -13
  31. package/dist/components/task/TaskKanban.test.js +36 -0
  32. package/dist/components/ui/EditableAvatarButton.d.ts +18 -0
  33. package/dist/components/ui/EditableAvatarButton.js +18 -0
  34. package/dist/components/views/PlanComparisonPage.d.ts +9 -1
  35. package/dist/components/views/PlanComparisonPage.js +70 -14
  36. package/dist/components/views/PlanComparisonPage.test.js +238 -0
  37. package/dist/components/views/PlansPage.js +127 -36
  38. package/dist/components/views/PlansPage.test.js +294 -12
  39. package/dist/components/views/StandaloneLayout.js +283 -533
  40. package/dist/components/views/panels/PlanningDrawer.d.ts +8 -1
  41. package/dist/components/views/panels/PlanningDrawer.js +18 -11
  42. package/dist/components/views/panels/PlanningDrawer.test.d.ts +1 -0
  43. package/dist/components/views/panels/PlanningDrawer.test.js +141 -0
  44. package/dist/components/views/planningScope.d.ts +20 -0
  45. package/dist/components/views/planningScope.js +25 -0
  46. package/dist/components/views/planningScope.test.d.ts +1 -0
  47. package/dist/components/views/planningScope.test.js +60 -0
  48. package/dist/components/views/standalone/modals/AccountHubModal.d.ts +26 -1
  49. package/dist/components/views/standalone/modals/AccountHubModal.js +76 -2
  50. package/dist/components/views/standalone/modals/AccountHubModal.test.js +20 -3
  51. package/dist/components/views/standalone/modals/AvatarImageManagerModal.d.ts +20 -0
  52. package/dist/components/views/standalone/modals/AvatarImageManagerModal.js +127 -0
  53. package/dist/components/views/standalone/modals/EditProfileModal.d.ts +2 -9
  54. package/dist/components/views/standalone/modals/EditProfileModal.js +3 -2
  55. package/dist/components/views/standalone/modals/SyncEnableWarningModal.d.ts +9 -0
  56. package/dist/components/views/standalone/modals/SyncEnableWarningModal.js +6 -0
  57. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.d.ts +1 -0
  58. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.js +24 -0
  59. package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +2 -1
  60. package/dist/components/views/standalone/modals/SyncStatusModal.js +2 -2
  61. package/dist/core/AiProfileService.d.ts +39 -2
  62. package/dist/core/AiProfileService.js +639 -73
  63. package/dist/core/AiProfileService.test.js +19 -1
  64. package/dist/core/AiProfiles.test.js +566 -7
  65. package/dist/core/AttachmentLinkService.js +57 -15
  66. package/dist/core/AuthIdentityService.d.ts +107 -0
  67. package/dist/core/AuthIdentityService.js +284 -0
  68. package/dist/core/AuthTokenService.d.ts +4 -0
  69. package/dist/core/AuthTokenService.js +34 -6
  70. package/dist/core/AuthTokenService.test.js +3 -3
  71. package/dist/core/EntitlementsPolicy.test.js +2 -2
  72. package/dist/core/GlobalSettingsService.js +115 -6
  73. package/dist/core/PlanEntitlementService.d.ts +23 -2
  74. package/dist/core/PlanEntitlementService.js +343 -57
  75. package/dist/core/PlanFeatureCatalog.test.d.ts +1 -0
  76. package/dist/core/PlanFeatureCatalog.test.js +84 -0
  77. package/dist/core/PlanVersionPolicy.test.js +35 -2
  78. package/dist/core/PlanningEntities.test.js +52 -0
  79. package/dist/core/SignupMonetizationSettings.test.js +199 -27
  80. package/dist/core/SyncReconciliationService.js +2 -65
  81. package/dist/core/SystemAdmin.test.js +42 -42
  82. package/dist/core/TaskAttachmentsCanonical.test.js +51 -1
  83. package/dist/core/Taskforce.d.ts +225 -14
  84. package/dist/core/Taskforce.js +765 -192
  85. package/dist/core/Taskforce.listTasksSlim.test.d.ts +1 -0
  86. package/dist/core/Taskforce.listTasksSlim.test.js +91 -0
  87. package/dist/core/UserProfileAvatarDrafts.test.js +30 -3
  88. package/dist/core/WorkspaceLifecycleService.js +0 -5
  89. package/dist/core/WorkspacePermissions.test.js +25 -1
  90. package/dist/core/WorkspacePlanMode.test.js +117 -16
  91. package/dist/core/shared.d.ts +1 -1
  92. package/dist/core/shared.js +5 -1
  93. package/dist/core/types.d.ts +68 -2
  94. package/dist/hooks/auth/useTaskforceAuthBootstrap.js +26 -1
  95. package/dist/hooks/sync/bootstrap.js +2 -0
  96. package/dist/hooks/sync/controlPlane.d.ts +37 -0
  97. package/dist/hooks/sync/controlPlane.js +78 -0
  98. package/dist/hooks/sync/controlPlane.test.d.ts +1 -0
  99. package/dist/hooks/sync/controlPlane.test.js +121 -0
  100. package/dist/hooks/sync/lifecyclePolicy.d.ts +45 -0
  101. package/dist/hooks/sync/lifecyclePolicy.js +93 -0
  102. package/dist/hooks/sync/lifecyclePolicy.test.d.ts +1 -0
  103. package/dist/hooks/sync/lifecyclePolicy.test.js +124 -0
  104. package/dist/hooks/sync/orchestratorShared.d.ts +10 -1
  105. package/dist/hooks/sync/orchestratorShared.js +68 -47
  106. package/dist/hooks/sync/orchestratorShared.test.js +50 -1
  107. package/dist/hooks/sync/pullLifecycle.d.ts +31 -0
  108. package/dist/hooks/sync/pullLifecycle.js +24 -0
  109. package/dist/hooks/sync/pullLifecycle.test.d.ts +1 -0
  110. package/dist/hooks/sync/pullLifecycle.test.js +80 -0
  111. package/dist/hooks/sync/recovery.d.ts +16 -2
  112. package/dist/hooks/sync/recovery.js +171 -53
  113. package/dist/hooks/sync/recovery.test.d.ts +1 -0
  114. package/dist/hooks/sync/recovery.test.js +292 -0
  115. package/dist/hooks/sync/transfers.d.ts +15 -3
  116. package/dist/hooks/sync/transfers.js +179 -62
  117. package/dist/hooks/sync/transfers.test.d.ts +1 -0
  118. package/dist/hooks/sync/transfers.test.js +396 -0
  119. package/dist/hooks/sync/useRecentSyncEvents.d.ts +21 -0
  120. package/dist/hooks/sync/useRecentSyncEvents.js +92 -0
  121. package/dist/hooks/sync/useRecentSyncEvents.test.d.ts +1 -0
  122. package/dist/hooks/sync/useRecentSyncEvents.test.js +124 -0
  123. package/dist/hooks/sync/useSyncStatusActions.d.ts +30 -0
  124. package/dist/hooks/sync/useSyncStatusActions.js +88 -0
  125. package/dist/hooks/sync/useSyncStatusActions.test.d.ts +1 -0
  126. package/dist/hooks/sync/useSyncStatusActions.test.js +133 -0
  127. package/dist/hooks/sync/useSyncStatusControls.d.ts +25 -0
  128. package/dist/hooks/sync/useSyncStatusControls.js +60 -0
  129. package/dist/hooks/sync/useSyncStatusControls.test.d.ts +1 -0
  130. package/dist/hooks/sync/useSyncStatusControls.test.js +88 -0
  131. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.js +12 -0
  132. package/dist/hooks/useSyncOrchestrator.d.ts +9 -2
  133. package/dist/hooks/useSyncOrchestrator.js +359 -178
  134. package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +407 -0
  135. package/dist/hooks/useTaskData.js +8 -3
  136. package/dist/hooks/useTaskData.test.js +45 -0
  137. package/dist/hooks/useTaskforce.d.ts +60 -2
  138. package/dist/hooks/useTaskforce.js +549 -240
  139. package/dist/hooks/useTaskforce.runtime-routing.test.d.ts +1 -0
  140. package/dist/hooks/useTaskforce.runtime-routing.test.js +152 -0
  141. package/dist/hooks/useTaskforce.sync-behavior.test.js +2380 -212
  142. package/dist/hooks/useWorkspaceSyncController.d.ts +1 -0
  143. package/dist/hooks/useWorkspaceSyncController.js +6 -1
  144. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.d.ts +16 -0
  145. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +316 -35
  146. package/dist/localization/locales/en-US.d.ts +0 -1
  147. package/dist/localization/locales/en-US.js +0 -1
  148. package/dist/localization/locales/es-419.js +0 -1
  149. package/dist/localization/locales/pt-BR.js +0 -1
  150. package/dist/mcp/documentAssetRegistrar.js +3 -3
  151. package/dist/mcp/runtime.d.ts +2 -0
  152. package/dist/mcp/runtime.js +131 -64
  153. package/dist/mcp/runtime.test.js +291 -12
  154. package/dist/migrations/taskSchemaMigrations.d.ts +1 -1
  155. package/dist/migrations/taskSchemaMigrations.js +171 -61
  156. package/dist/migrations/taskSchemaMigrations.test.js +15 -0
  157. package/dist/resources/templates/workflow-sources/workflowDocs.mjs +6 -6
  158. package/dist/resources/templates/workflows/collaborate.yaml +1 -1
  159. package/dist/resources/templates/workflows/evaluate.yaml +2 -2
  160. package/dist/resources/templates/workflows/plan.yaml +1 -1
  161. package/dist/resources/templates/workflows/review.yaml +2 -2
  162. package/dist/server/annotatedAttachmentsRoutes.test.js +3 -3
  163. package/dist/server/auth/providers/apple.d.ts +33 -0
  164. package/dist/server/auth/providers/apple.js +82 -0
  165. package/dist/server/auth/providers/appleClientSecret.d.ts +37 -0
  166. package/dist/server/auth/providers/appleClientSecret.js +65 -0
  167. package/dist/server/auth/providers/github.d.ts +26 -0
  168. package/dist/server/auth/providers/github.js +86 -0
  169. package/dist/server/auth/providers/google.d.ts +21 -0
  170. package/dist/server/auth/providers/google.js +56 -0
  171. package/dist/server/auth/providers/types.d.ts +21 -0
  172. package/dist/server/auth/providers/types.js +1 -0
  173. package/dist/server/auth.d.ts +2 -0
  174. package/dist/server/auth.js +6 -3
  175. package/dist/server/documentReviewRoutes.test.js +36 -3
  176. package/dist/server/index.cookieProxy.test.js +1 -0
  177. package/dist/server/index.d.ts +12 -0
  178. package/dist/server/index.js +120 -9
  179. package/dist/server/index.rateLimit.test.js +3 -0
  180. package/dist/server/index.test.js +106 -3
  181. package/dist/server/routes/admin.d.ts +3 -0
  182. package/dist/server/routes/admin.js +272 -19
  183. package/dist/server/routes/auth.d.ts +15 -2
  184. package/dist/server/routes/auth.js +994 -57
  185. package/dist/server/routes/authSupport.d.ts +1 -1
  186. package/dist/server/routes/authSupport.js +1 -1
  187. package/dist/server/routes/billing.js +361 -35
  188. package/dist/server/routes/billing.test.js +592 -12
  189. package/dist/server/routes/documents.d.ts +1 -0
  190. package/dist/server/routes/documents.js +172 -70
  191. package/dist/server/routes/shared.d.ts +28 -2
  192. package/dist/server/routes/shared.js +69 -4
  193. package/dist/server/routes/sync.integration.test.js +437 -39
  194. package/dist/server/routes/sync.js +61 -605
  195. package/dist/server/routes/syncAuxRoutes.d.ts +15 -0
  196. package/dist/server/routes/syncAuxRoutes.js +91 -0
  197. package/dist/server/routes/syncAuxRoutes.test.d.ts +1 -0
  198. package/dist/server/routes/syncAuxRoutes.test.js +158 -0
  199. package/dist/server/routes/syncPullApplyRoutes.d.ts +36 -0
  200. package/dist/server/routes/syncPullApplyRoutes.js +204 -0
  201. package/dist/server/routes/syncPushRoutes.d.ts +24 -0
  202. package/dist/server/routes/syncPushRoutes.js +212 -0
  203. package/dist/server/routes/syncRouteGuards.d.ts +36 -0
  204. package/dist/server/routes/syncRouteGuards.js +67 -0
  205. package/dist/server/routes/syncRouteGuards.test.d.ts +1 -0
  206. package/dist/server/routes/syncRouteGuards.test.js +94 -0
  207. package/dist/server/routes/syncRouteTypes.d.ts +13 -0
  208. package/dist/server/routes/syncRouteTypes.js +1 -0
  209. package/dist/server/routes/syncSnapshotRoutes.d.ts +66 -0
  210. package/dist/server/routes/syncSnapshotRoutes.js +180 -0
  211. package/dist/server/routes/tasks.js +43 -1
  212. package/dist/server/routes/workspaces.js +36 -5
  213. package/dist/server/routes.js +60 -3
  214. package/dist/server/routes.test.js +1824 -171
  215. package/dist/services/workflowExportSnapshots.test.js +2 -0
  216. package/dist/shared/aiProfileSeatScope.d.ts +5 -0
  217. package/dist/shared/aiProfileSeatScope.js +21 -0
  218. package/dist/shared/passwordPolicy.d.ts +13 -0
  219. package/dist/shared/passwordPolicy.js +84 -0
  220. package/dist/shared/passwordPolicy.test.d.ts +1 -0
  221. package/dist/shared/passwordPolicy.test.js +34 -0
  222. package/dist/storage/workspaceAssetStore.d.ts +15 -3
  223. package/dist/storage/workspaceAssetStore.js +132 -44
  224. package/dist/storage/workspaceAssetStore.test.js +93 -6
  225. package/dist/styles/fonts.css +70 -0
  226. package/dist/sync/collaborationSyncPayload.d.ts +6 -1
  227. package/dist/sync/collaborationSyncPayload.js +17 -11
  228. package/dist/sync/collaborationSyncPayload.test.js +13 -1
  229. package/dist/sync/contentSyncState.d.ts +4 -8
  230. package/dist/sync/contentSyncState.js +17 -70
  231. package/dist/sync/syncApplyHandlers.d.ts +7 -0
  232. package/dist/sync/syncApplyHandlers.js +28 -13
  233. package/dist/sync/syncApplyHandlers.test.js +70 -3
  234. package/dist/sync/syncFieldSemantics.d.ts +12 -0
  235. package/dist/sync/syncFieldSemantics.js +55 -0
  236. package/dist/sync/syncResourceAdapters.d.ts +44 -0
  237. package/dist/sync/syncResourceAdapters.js +77 -0
  238. package/dist/sync/syncService.d.ts +5 -0
  239. package/dist/sync/syncService.js +52 -0
  240. package/dist/sync/syncService.test.js +57 -3
  241. package/dist/sync/taskSyncChangeKey.d.ts +2 -0
  242. package/dist/sync/taskSyncChangeKey.js +143 -0
  243. package/dist/sync/taskSyncPayload.js +3 -8
  244. package/dist/sync/workspacePullFeed.js +4 -3
  245. package/dist/sync/workspacePullFeed.test.js +43 -0
  246. package/dist/sync/workspaceRepair.js +5 -2
  247. package/dist/sync/workspaceSyncModel.d.ts +45 -0
  248. package/dist/sync/workspaceSyncModel.js +183 -28
  249. package/dist/sync/workspaceSyncModel.test.js +291 -12
  250. package/dist/sync/workspaceSyncState.d.ts +17 -0
  251. package/dist/sync/workspaceSyncState.js +2 -1
  252. package/dist/sync/workspaceSyncSurface.js +3 -8
  253. package/dist/types.d.ts +17 -0
  254. package/dist/ui/assets/AgentsModule-DrLawwNl.js +1 -0
  255. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-BG6P_GVW.js → AnnotatedAttachmentWorkspace-Z9_whf7F.js} +1 -1
  256. package/dist/ui/assets/CourierPrime-Bold-BuLj_dpw.woff2 +0 -0
  257. package/dist/ui/assets/CourierPrime-BoldItalic-BrK2pUkZ.woff2 +0 -0
  258. package/dist/ui/assets/CourierPrime-Italic-DFUZK5Ey.woff2 +0 -0
  259. package/dist/ui/assets/CourierPrime-Regular-BsKphzVf.woff2 +0 -0
  260. package/dist/ui/assets/DocumentWorkspace-B03MaSkw.js +252 -0
  261. package/dist/ui/assets/DocumentWorkspace-Dhdso07p.css +1 -0
  262. package/dist/ui/assets/{InitiativesModule-Dhm7M8e7.js → InitiativesModule-9E6ParrY.js} +1 -1
  263. package/dist/ui/assets/Noir_medium-bxQwKGzB.woff2 +0 -0
  264. package/dist/ui/assets/Noir_regular-ojf2kxlG.woff2 +0 -0
  265. package/dist/ui/assets/PlansPage-CvfnMiWq.css +1 -0
  266. package/dist/ui/assets/PlansPage-DRXscYxH.js +1 -0
  267. package/dist/ui/assets/RussoOne-Regular-Cu_qq_qC.woff2 +0 -0
  268. package/dist/ui/assets/SpecialElite-Regular-Di6gSvAS.woff2 +0 -0
  269. package/dist/ui/assets/{TaskSettings-ln0aF7xc.js → TaskSettings-DZX4jk7e.js} +1 -1
  270. package/dist/ui/assets/{WorkflowsModule-BcS4afRn.js → WorkflowsModule-BA7jcEpH.js} +1 -1
  271. package/dist/ui/assets/index-9eT8e0Lu.css +1 -0
  272. package/dist/ui/assets/index-C6k75jr8.js +6 -0
  273. package/dist/ui/assets/{vendor-icons-BSUaRwF8.js → vendor-icons-DuEd_65c.js} +1 -1
  274. package/dist/ui/fonts/CourierPrime-Bold.ttf +0 -0
  275. package/dist/ui/fonts/CourierPrime-Bold.woff2 +0 -0
  276. package/dist/ui/fonts/CourierPrime-BoldItalic.ttf +0 -0
  277. package/dist/ui/fonts/CourierPrime-BoldItalic.woff2 +0 -0
  278. package/dist/ui/fonts/CourierPrime-Italic.ttf +0 -0
  279. package/dist/ui/fonts/CourierPrime-Italic.woff2 +0 -0
  280. package/dist/ui/fonts/CourierPrime-Regular.ttf +0 -0
  281. package/dist/ui/fonts/CourierPrime-Regular.woff2 +0 -0
  282. package/dist/ui/fonts/Noir_medium.otf +0 -0
  283. package/dist/ui/fonts/Noir_medium.woff2 +0 -0
  284. package/dist/ui/fonts/Noir_regular.otf +0 -0
  285. package/dist/ui/fonts/Noir_regular.woff2 +0 -0
  286. package/dist/ui/fonts/RussoOne-Regular.woff2 +0 -0
  287. package/dist/ui/fonts/SpecialElite-Regular.ttf +0 -0
  288. package/dist/ui/fonts/SpecialElite-Regular.woff2 +0 -0
  289. package/dist/ui/index.html +3 -3
  290. package/dist/utils/accountProfileSummaryCache.d.ts +5 -0
  291. package/dist/utils/assignees.d.ts +2 -0
  292. package/dist/utils/assignees.js +2 -0
  293. package/dist/utils/avatarUpload.d.ts +27 -0
  294. package/dist/utils/avatarUpload.js +132 -0
  295. package/dist/utils/avatarUpload.test.d.ts +1 -0
  296. package/dist/utils/avatarUpload.test.js +40 -0
  297. package/dist/utils/bootstrapTrace.d.ts +7 -0
  298. package/dist/utils/bootstrapTrace.js +29 -0
  299. package/dist/utils/commercialLifecyclePresentation.js +3 -0
  300. package/dist/utils/contextAssetEvents.d.ts +2 -0
  301. package/dist/utils/syncEventDetails.d.ts +3 -0
  302. package/dist/utils/syncEventDetails.js +64 -0
  303. package/dist/utils/syncEventDetails.test.d.ts +1 -0
  304. package/dist/utils/syncEventDetails.test.js +23 -0
  305. package/dist/utils/syncEventPresentation.d.ts +15 -0
  306. package/dist/utils/syncEventPresentation.js +129 -0
  307. package/dist/utils/syncEventPresentation.test.d.ts +1 -0
  308. package/dist/utils/syncEventPresentation.test.js +64 -0
  309. package/dist/utils/syncStatusPresentation.d.ts +72 -0
  310. package/dist/utils/syncStatusPresentation.js +217 -0
  311. package/dist/utils/syncStatusPresentation.test.d.ts +1 -0
  312. package/dist/utils/syncStatusPresentation.test.js +164 -0
  313. package/dist/utils/taskActivity.d.ts +2 -0
  314. package/dist/utils/taskActivity.js +228 -22
  315. package/dist/utils/taskActivity.test.js +119 -8
  316. package/dist/utils/workspaceSyncPresentation.d.ts +4 -0
  317. package/dist/utils/workspaceSyncPresentation.js +68 -2
  318. package/dist/utils/workspaceSyncPresentation.test.js +36 -1
  319. package/package.json +3 -2
  320. package/scripts/export-sqlite-to-postgres.mjs +7 -9
  321. package/scripts/run-e2e-realtime.sh +17 -3
  322. package/scripts/run-smoke.sh +17 -5
  323. package/scripts/run-soak.sh +17 -5
  324. package/src/resources/templates/workflow-sources/workflowDocs.mjs +6 -6
  325. package/src/resources/templates/workflows/collaborate.yaml +1 -1
  326. package/src/resources/templates/workflows/evaluate.yaml +2 -2
  327. package/src/resources/templates/workflows/plan.yaml +1 -1
  328. package/src/resources/templates/workflows/review.yaml +2 -2
  329. package/dist/ui/assets/AgentsModule-N2MnQBZk.js +0 -1
  330. package/dist/ui/assets/DocumentWorkspace-B3nV_Gc5.css +0 -1
  331. package/dist/ui/assets/DocumentWorkspace-DRbDMwh8.js +0 -252
  332. package/dist/ui/assets/PlansPage-C2dd2n1X.css +0 -1
  333. package/dist/ui/assets/PlansPage-Cq0zXj3I.js +0 -1
  334. package/dist/ui/assets/RussoOne-Regular-C3BxZIj7.ttf +0 -0
  335. package/dist/ui/assets/index-C2-OXZV7.css +0 -1
  336. package/dist/ui/assets/index-DcSI5F86.js +0 -6
  337. package/scripts/migrate-planning-model.ts +0 -233
@@ -17,6 +17,12 @@ function splitGlobalSettingsPayload(settings) {
17
17
  if (settings.setup && typeof settings.setup === 'object') {
18
18
  system.setup = { ...settings.setup };
19
19
  }
20
+ if (settings.objectStorage && typeof settings.objectStorage === 'object') {
21
+ system.objectStorage = { ...settings.objectStorage };
22
+ }
23
+ if (settings.oauthProviders && typeof settings.oauthProviders === 'object') {
24
+ system.oauthProviders = { ...settings.oauthProviders };
25
+ }
20
26
  const normalizedTheme = normalizeTaskforceTheme(settings.theme);
21
27
  if (normalizedTheme) {
22
28
  userPreferences.theme = normalizedTheme;
@@ -107,8 +113,8 @@ export function getGlobalSettingsService(deps) {
107
113
  || global.billing.onboardingPolicy.mode === 'auto_start_trial')
108
114
  ? {
109
115
  mode: global.billing.onboardingPolicy.mode,
110
- planVersionId: typeof global.billing.onboardingPolicy.planVersionId === 'string'
111
- ? (global.billing.onboardingPolicy.planVersionId.trim() || null)
116
+ planId: typeof global.billing.onboardingPolicy.planId === 'string'
117
+ ? (global.billing.onboardingPolicy.planId.trim() || null)
112
118
  : null
113
119
  }
114
120
  : null;
@@ -231,6 +237,57 @@ export function getGlobalSettingsService(deps) {
231
237
  : {})
232
238
  }
233
239
  }
240
+ : {}),
241
+ ...(global.oauthProviders && typeof global.oauthProviders === 'object'
242
+ ? {
243
+ oauthProviders: {
244
+ ...(global.oauthProviders.google && typeof global.oauthProviders.google === 'object'
245
+ ? {
246
+ google: {
247
+ ...(typeof global.oauthProviders.google.enabled === 'boolean' ? { enabled: global.oauthProviders.google.enabled } : {}),
248
+ ...(typeof global.oauthProviders.google.clientId === 'string' && global.oauthProviders.google.clientId.trim()
249
+ ? { clientId: global.oauthProviders.google.clientId.trim() }
250
+ : {}),
251
+ ...(typeof global.oauthProviders.google.clientSecret === 'string' && global.oauthProviders.google.clientSecret.trim()
252
+ ? { clientSecret: global.oauthProviders.google.clientSecret.trim() }
253
+ : {})
254
+ }
255
+ }
256
+ : {}),
257
+ ...(global.oauthProviders.github && typeof global.oauthProviders.github === 'object'
258
+ ? {
259
+ github: {
260
+ ...(typeof global.oauthProviders.github.enabled === 'boolean' ? { enabled: global.oauthProviders.github.enabled } : {}),
261
+ ...(typeof global.oauthProviders.github.clientId === 'string' && global.oauthProviders.github.clientId.trim()
262
+ ? { clientId: global.oauthProviders.github.clientId.trim() }
263
+ : {}),
264
+ ...(typeof global.oauthProviders.github.clientSecret === 'string' && global.oauthProviders.github.clientSecret.trim()
265
+ ? { clientSecret: global.oauthProviders.github.clientSecret.trim() }
266
+ : {})
267
+ }
268
+ }
269
+ : {}),
270
+ ...(global.oauthProviders.apple && typeof global.oauthProviders.apple === 'object'
271
+ ? {
272
+ apple: {
273
+ ...(typeof global.oauthProviders.apple.enabled === 'boolean' ? { enabled: global.oauthProviders.apple.enabled } : {}),
274
+ ...(typeof global.oauthProviders.apple.servicesId === 'string' && global.oauthProviders.apple.servicesId.trim()
275
+ ? { servicesId: global.oauthProviders.apple.servicesId.trim() }
276
+ : {}),
277
+ ...(typeof global.oauthProviders.apple.teamId === 'string' && global.oauthProviders.apple.teamId.trim()
278
+ ? { teamId: global.oauthProviders.apple.teamId.trim() }
279
+ : {}),
280
+ ...(typeof global.oauthProviders.apple.keyId === 'string' && global.oauthProviders.apple.keyId.trim()
281
+ ? { keyId: global.oauthProviders.apple.keyId.trim() }
282
+ : {}),
283
+ ...(typeof global.oauthProviders.apple.privateKeyPem === 'string' && global.oauthProviders.apple.privateKeyPem.trim()
284
+ ? { privateKeyPem: global.oauthProviders.apple.privateKeyPem.trim() }
285
+ : {})
286
+ }
287
+ }
288
+ : {})
289
+ }
290
+ }
234
291
  : {})
235
292
  };
236
293
  }
@@ -362,8 +419,8 @@ export function updateGlobalSettingsService(deps, settings) {
362
419
  || currentBilling.onboardingPolicy.mode === 'auto_start_trial')
363
420
  ? {
364
421
  mode: currentBilling.onboardingPolicy.mode,
365
- planVersionId: typeof currentBilling.onboardingPolicy.planVersionId === 'string'
366
- ? (currentBilling.onboardingPolicy.planVersionId.trim() || null)
422
+ planId: typeof currentBilling.onboardingPolicy.planId === 'string'
423
+ ? (currentBilling.onboardingPolicy.planId.trim() || null)
367
424
  : null
368
425
  }
369
426
  : null;
@@ -373,8 +430,8 @@ export function updateGlobalSettingsService(deps, settings) {
373
430
  || incoming.onboardingPolicy.mode === 'auto_start_trial')
374
431
  ? {
375
432
  mode: incoming.onboardingPolicy.mode,
376
- planVersionId: typeof incoming.onboardingPolicy.planVersionId === 'string'
377
- ? (incoming.onboardingPolicy.planVersionId.trim() || null)
433
+ planId: typeof incoming.onboardingPolicy.planId === 'string'
434
+ ? (incoming.onboardingPolicy.planId.trim() || null)
378
435
  : null
379
436
  }
380
437
  : null;
@@ -426,5 +483,57 @@ export function updateGlobalSettingsService(deps, settings) {
426
483
  : {})
427
484
  };
428
485
  }
486
+ if (settings.oauthProviders && typeof settings.oauthProviders === 'object') {
487
+ const currentProviders = next.oauthProviders && typeof next.oauthProviders === 'object' ? next.oauthProviders : {};
488
+ const incoming = settings.oauthProviders;
489
+ next.oauthProviders = { ...currentProviders };
490
+ if (incoming.google && typeof incoming.google === 'object') {
491
+ const cur = currentProviders.google && typeof currentProviders.google === 'object' ? currentProviders.google : {};
492
+ next.oauthProviders.google = {
493
+ ...cur,
494
+ ...(typeof incoming.google.enabled === 'boolean' ? { enabled: incoming.google.enabled } : {}),
495
+ ...(typeof incoming.google.clientId === 'string' ? { clientId: incoming.google.clientId.trim() } : {}),
496
+ ...(typeof incoming.google.clientSecret === 'string'
497
+ ? (incoming.google.clientSecret.trim()
498
+ ? { clientSecret: incoming.google.clientSecret.trim() }
499
+ : { clientSecret: undefined })
500
+ : {})
501
+ };
502
+ if (!next.oauthProviders.google.clientSecret)
503
+ delete next.oauthProviders.google.clientSecret;
504
+ }
505
+ if (incoming.github && typeof incoming.github === 'object') {
506
+ const cur = currentProviders.github && typeof currentProviders.github === 'object' ? currentProviders.github : {};
507
+ next.oauthProviders.github = {
508
+ ...cur,
509
+ ...(typeof incoming.github.enabled === 'boolean' ? { enabled: incoming.github.enabled } : {}),
510
+ ...(typeof incoming.github.clientId === 'string' ? { clientId: incoming.github.clientId.trim() } : {}),
511
+ ...(typeof incoming.github.clientSecret === 'string'
512
+ ? (incoming.github.clientSecret.trim()
513
+ ? { clientSecret: incoming.github.clientSecret.trim() }
514
+ : { clientSecret: undefined })
515
+ : {})
516
+ };
517
+ if (!next.oauthProviders.github.clientSecret)
518
+ delete next.oauthProviders.github.clientSecret;
519
+ }
520
+ if (incoming.apple && typeof incoming.apple === 'object') {
521
+ const cur = currentProviders.apple && typeof currentProviders.apple === 'object' ? currentProviders.apple : {};
522
+ next.oauthProviders.apple = {
523
+ ...cur,
524
+ ...(typeof incoming.apple.enabled === 'boolean' ? { enabled: incoming.apple.enabled } : {}),
525
+ ...(typeof incoming.apple.servicesId === 'string' ? { servicesId: incoming.apple.servicesId.trim() } : {}),
526
+ ...(typeof incoming.apple.teamId === 'string' ? { teamId: incoming.apple.teamId.trim() } : {}),
527
+ ...(typeof incoming.apple.keyId === 'string' ? { keyId: incoming.apple.keyId.trim() } : {}),
528
+ ...(typeof incoming.apple.privateKeyPem === 'string'
529
+ ? (incoming.apple.privateKeyPem.trim()
530
+ ? { privateKeyPem: incoming.apple.privateKeyPem.trim() }
531
+ : { privateKeyPem: undefined })
532
+ : {})
533
+ };
534
+ if (!next.oauthProviders.apple.privateKeyPem)
535
+ delete next.oauthProviders.apple.privateKeyPem;
536
+ }
537
+ }
429
538
  writeGlobalConfigService(deps, next);
430
539
  }
@@ -1,5 +1,5 @@
1
1
  import type { DatabaseAdapter } from '../storage/databaseAdapter.js';
2
- import type { EntitlementState, PlanFeatureAccess, PlanFeatureSnapshot, PlanFeatureCatalogItem, PlanVersionSnapshot, PlanCatalogSnapshot, AccountEntitlementSnapshot, SeatUsageSnapshot, FeatureEvaluationResult, AccountAccessStatus, GlobalTaskforceSettings, OnboardingPolicy, OnboardingPolicyValidationResult } from './types.js';
2
+ import type { EntitlementState, PlanFeatureAccess, PlanFeatureSnapshot, PlanFeatureCatalogItem, PlanVersionSnapshot, PlanCatalogSnapshot, OnboardingPlanOption, AccountEntitlementSnapshot, SeatUsageSnapshot, FeatureEvaluationResult, AccountAccessStatus, GlobalTaskforceSettings, OnboardingPolicy, OnboardingPolicyValidationResult } from './types.js';
3
3
  export interface PlanEntitlementServiceDeps {
4
4
  getWorkspaceOwnerUserId: (workspaceId: string) => string | null;
5
5
  readGlobalConfig: () => GlobalTaskforceSettings;
@@ -17,6 +17,10 @@ export declare class PlanEntitlementService {
17
17
  constructor(db: DatabaseAdapter, tenantId: string, deps: PlanEntitlementServiceDeps);
18
18
  private generateEntityId;
19
19
  private parseJsonObject;
20
+ private normalizeOptionalCatalogMarketingCopy;
21
+ private canonicalizePlanFeatureKey;
22
+ private normalizeOptionalCatalogDisplayOrder;
23
+ private listPlanFeatureCatalogOverrideMap;
20
24
  normalizeEntitlementState(value: unknown): EntitlementState;
21
25
  private normalizeFeatureAccess;
22
26
  private readPositiveIntegerConfig;
@@ -27,7 +31,7 @@ export declare class PlanEntitlementService {
27
31
  private isEntitlementStateAllowed;
28
32
  private isIsoTimestampExpired;
29
33
  private readAccountEntitlementRow;
30
- private normalizeExpiredCheckoutPendingRow;
34
+ private normalizeExpiredLifecycleRow;
31
35
  private isBillingConfirmedTransitionSource;
32
36
  private countWorkspaceStorageUsageBytes;
33
37
  private resolveCanonicalTransitionSource;
@@ -36,6 +40,7 @@ export declare class PlanEntitlementService {
36
40
  private repairPlanDefaultVersionIfNeeded;
37
41
  repairPlanCatalogDefaultsIfNeeded(): void;
38
42
  normalizeLegacyPlanDataIfNeeded(): void;
43
+ private renameLegacyWorkspacesFeatureKey;
39
44
  private removeLegacyPlanFeatureRows;
40
45
  private migrateLegacySeatLimitFeatureConfigToVersionSeatLimit;
41
46
  private normalizeLegacyBillingMirrorRows;
@@ -85,6 +90,7 @@ export declare class PlanEntitlementService {
85
90
  private getActiveDefaultPlanVersions;
86
91
  private getDefaultPlanVersionByMode;
87
92
  private tryGetDefaultPlanVersionByMode;
93
+ private getOnboardingPlanSnapshot;
88
94
  getOnboardingPolicy(): OnboardingPolicy;
89
95
  validateOnboardingPolicy(input?: Partial<OnboardingPolicy>): OnboardingPolicyValidationResult;
90
96
  resolveRegistrationOnboardingOutcome(selectedPlanVersionIdRaw?: string): {
@@ -94,6 +100,7 @@ export declare class PlanEntitlementService {
94
100
  planVersionId: string | null;
95
101
  planId: string | null;
96
102
  };
103
+ listOnboardingPlanOptions(): OnboardingPlanOption[];
97
104
  createUserBillingRecord(userId: string, options?: {
98
105
  entitlementState?: string;
99
106
  planId?: string | null;
@@ -106,6 +113,7 @@ export declare class PlanEntitlementService {
106
113
  hasAccountEntitlement(accountId: string): boolean;
107
114
  private tryGetAccountEntitlement;
108
115
  private tryAutoHealLegacyPersonalFreeEntitlement;
116
+ private tryAutoHealCommercialEntitlementFromBillingMirror;
109
117
  getAccountAccessStatus(accountId: string): AccountAccessStatus;
110
118
  getEffectivePlanVersion(accountId: string): PlanVersionSnapshot;
111
119
  getAccountEntitlement(accountId: string): AccountEntitlementSnapshot;
@@ -131,6 +139,11 @@ export declare class PlanEntitlementService {
131
139
  planId: string;
132
140
  entitlementState: EntitlementState;
133
141
  };
142
+ resolveInviteAcceptanceDefaultEntitlement(): {
143
+ planVersionId: string;
144
+ planId: string;
145
+ commercialState: 'active';
146
+ } | null;
134
147
  private isValidEntitlementTransition;
135
148
  addEntitlementAuditLog(input: {
136
149
  actorUserId: string;
@@ -145,6 +158,7 @@ export declare class PlanEntitlementService {
145
158
  upsertPlanCatalog(input: {
146
159
  planId: string;
147
160
  displayName: string;
161
+ description?: string | null;
148
162
  status?: 'active' | 'archived';
149
163
  initialMode?: 'personal' | 'team';
150
164
  initialSeatLimit?: number | null;
@@ -152,10 +166,17 @@ export declare class PlanEntitlementService {
152
166
  }): {
153
167
  planId: string;
154
168
  displayName: string;
169
+ description: string | null;
155
170
  status: 'active' | 'archived';
156
171
  };
157
172
  listPlanCatalog(): PlanCatalogSnapshot[];
158
173
  listPlanFeatureCatalog(): PlanFeatureCatalogItem[];
174
+ updatePlanFeatureCatalogMarketingCopy(input: {
175
+ featureKey: string;
176
+ publicLabel?: string | null;
177
+ publicDescription?: string | null;
178
+ publicDisplayOrder?: number | null;
179
+ }): PlanFeatureCatalogItem;
159
180
  listPlanVersions(planId: string): PlanVersionSnapshot[];
160
181
  getPlanVersionFeatures(planId: string, versionId: string): PlanVersionSnapshot;
161
182
  searchAccountsByEmail(query: string, limit?: number): Array<{