canopycms 0.0.67-int.90 → 0.0.67

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 (539) hide show
  1. package/README.md +30 -3
  2. package/dist/ai/generate.js +1 -27
  3. package/dist/ai/handler.d.ts +0 -4
  4. package/dist/ai/handler.js +0 -11
  5. package/dist/ai/index.d.ts +1 -8
  6. package/dist/ai/index.js +1 -8
  7. package/dist/ai/json-to-markdown.js +15 -58
  8. package/dist/ai/resolve-branch.d.ts +2 -7
  9. package/dist/ai/resolve-branch.js +2 -8
  10. package/dist/ai/strip-mdx.d.ts +5 -13
  11. package/dist/ai/strip-mdx.js +5 -17
  12. package/dist/ai/to-plain-text.d.ts +10 -28
  13. package/dist/ai/to-plain-text.js +10 -28
  14. package/dist/ai/transform-components.d.ts +2 -4
  15. package/dist/ai/transform-components.js +8 -19
  16. package/dist/ai/types.d.ts +5 -10
  17. package/dist/api/admin-branch-health.d.ts +4 -12
  18. package/dist/api/admin-branch-health.js +26 -66
  19. package/dist/api/admin.d.ts +4 -12
  20. package/dist/api/admin.js +10 -26
  21. package/dist/api/assets.d.ts +0 -25
  22. package/dist/api/assets.js +50 -91
  23. package/dist/api/branch-merge.d.ts +1 -1
  24. package/dist/api/branch-merge.js +0 -2
  25. package/dist/api/branch-review.d.ts +0 -8
  26. package/dist/api/branch-review.js +0 -13
  27. package/dist/api/branch-status.d.ts +0 -3
  28. package/dist/api/branch-status.js +8 -33
  29. package/dist/api/branch-withdraw.d.ts +0 -1
  30. package/dist/api/branch-withdraw.js +6 -9
  31. package/dist/api/branch.d.ts +7 -12
  32. package/dist/api/branch.js +7 -44
  33. package/dist/api/client.d.ts +71 -224
  34. package/dist/api/client.js +82 -233
  35. package/dist/api/comments.d.ts +2 -4
  36. package/dist/api/comments.js +0 -17
  37. package/dist/api/content.d.ts +0 -6
  38. package/dist/api/content.js +66 -142
  39. package/dist/api/entries-constants.d.ts +5 -9
  40. package/dist/api/entries-constants.js +5 -9
  41. package/dist/api/entries.d.ts +8 -13
  42. package/dist/api/entries.js +20 -51
  43. package/dist/api/github-sync.d.ts +2 -4
  44. package/dist/api/github-sync.js +4 -8
  45. package/dist/api/groups.d.ts +3 -0
  46. package/dist/api/groups.js +8 -21
  47. package/dist/api/guards.d.ts +4 -16
  48. package/dist/api/guards.js +3 -22
  49. package/dist/api/index.d.ts +4 -4
  50. package/dist/api/permissions.d.ts +2 -0
  51. package/dist/api/permissions.js +18 -40
  52. package/dist/api/reference-options.d.ts +0 -1
  53. package/dist/api/reference-options.js +3 -11
  54. package/dist/api/request-body-hash.d.ts +12 -23
  55. package/dist/api/request-body-hash.js +12 -23
  56. package/dist/api/resolve-references.d.ts +0 -1
  57. package/dist/api/resolve-references.js +13 -28
  58. package/dist/api/route-builder.d.ts +3 -7
  59. package/dist/api/route-builder.js +1 -1
  60. package/dist/api/routes.d.ts +12 -0
  61. package/dist/api/routes.js +47 -0
  62. package/dist/api/schema.d.ts +23 -33
  63. package/dist/api/schema.js +20 -74
  64. package/dist/api/settings-helpers.js +4 -5
  65. package/dist/api/types.d.ts +0 -5
  66. package/dist/api/user.js +0 -5
  67. package/dist/api/validators.d.ts +14 -52
  68. package/dist/api/validators.js +14 -52
  69. package/dist/assets/asset-prefixes.d.ts +4 -8
  70. package/dist/assets/asset-prefixes.js +4 -8
  71. package/dist/assets/asset-src.d.ts +5 -22
  72. package/dist/assets/asset-src.js +5 -21
  73. package/dist/assets/factory.d.ts +1 -2
  74. package/dist/assets/factory.js +1 -2
  75. package/dist/assets/finalize.d.ts +3 -1
  76. package/dist/assets/finalize.js +3 -1
  77. package/dist/assets/index.d.ts +3 -3
  78. package/dist/assets/index.js +1 -1
  79. package/dist/assets/keys.d.ts +5 -3
  80. package/dist/assets/keys.js +6 -3
  81. package/dist/assets/pipeline.d.ts +3 -2
  82. package/dist/assets/pipeline.js +22 -56
  83. package/dist/assets/sharp-loader.d.ts +2 -10
  84. package/dist/assets/sharp-loader.js +2 -10
  85. package/dist/assets/store-local.d.ts +1 -2
  86. package/dist/assets/store-local.js +1 -2
  87. package/dist/assets/store-s3.d.ts +3 -4
  88. package/dist/assets/svg-sanitizer.d.ts +6 -14
  89. package/dist/assets/svg-sanitizer.js +6 -14
  90. package/dist/assets/transform-directives.d.ts +3 -4
  91. package/dist/assets/transform-directives.js +1 -1
  92. package/dist/assets/transform.d.ts +19 -30
  93. package/dist/assets/transform.js +18 -31
  94. package/dist/auth/cache.d.ts +2 -3
  95. package/dist/auth/cache.js +2 -3
  96. package/dist/auth/caching-auth-plugin.d.ts +11 -22
  97. package/dist/auth/caching-auth-plugin.js +12 -14
  98. package/dist/auth/context-helpers.d.ts +6 -20
  99. package/dist/auth/context-helpers.js +5 -17
  100. package/dist/auth/file-based-auth-cache.d.ts +10 -21
  101. package/dist/auth/file-based-auth-cache.js +23 -51
  102. package/dist/auth/plugin.d.ts +29 -61
  103. package/dist/auth/plugin.js +9 -13
  104. package/dist/auth/types.d.ts +11 -20
  105. package/dist/authorization/branch.d.ts +30 -49
  106. package/dist/authorization/branch.js +16 -42
  107. package/dist/authorization/content.d.ts +11 -40
  108. package/dist/authorization/content.js +13 -45
  109. package/dist/authorization/groups/index.d.ts +0 -3
  110. package/dist/authorization/groups/index.js +0 -3
  111. package/dist/authorization/groups/loader.d.ts +14 -28
  112. package/dist/authorization/groups/loader.js +14 -38
  113. package/dist/authorization/groups/schema.d.ts +0 -6
  114. package/dist/authorization/groups/schema.js +4 -7
  115. package/dist/authorization/helpers.d.ts +9 -28
  116. package/dist/authorization/helpers.js +9 -28
  117. package/dist/authorization/index.d.ts +3 -25
  118. package/dist/authorization/index.js +3 -35
  119. package/dist/authorization/path.d.ts +6 -13
  120. package/dist/authorization/path.js +8 -25
  121. package/dist/authorization/permissions/index.d.ts +0 -3
  122. package/dist/authorization/permissions/index.js +0 -3
  123. package/dist/authorization/permissions/loader.d.ts +14 -27
  124. package/dist/authorization/permissions/loader.js +14 -32
  125. package/dist/authorization/permissions/schema.d.ts +1 -6
  126. package/dist/authorization/permissions/schema.js +6 -13
  127. package/dist/authorization/protected-branch.d.ts +36 -65
  128. package/dist/authorization/protected-branch.js +29 -41
  129. package/dist/authorization/settings-file-store.d.ts +38 -81
  130. package/dist/authorization/settings-file-store.js +38 -79
  131. package/dist/authorization/types.d.ts +4 -26
  132. package/dist/authorization/types.js +0 -6
  133. package/dist/authorization/validation.d.ts +1 -23
  134. package/dist/authorization/validation.js +1 -24
  135. package/dist/branch-health.d.ts +39 -67
  136. package/dist/branch-health.js +27 -43
  137. package/dist/branch-metadata-file.d.ts +16 -32
  138. package/dist/branch-metadata-file.js +13 -26
  139. package/dist/branch-metadata.d.ts +49 -80
  140. package/dist/branch-metadata.js +57 -87
  141. package/dist/branch-registry.d.ts +26 -64
  142. package/dist/branch-registry.js +44 -93
  143. package/dist/branch-schema-cache.d.ts +34 -124
  144. package/dist/branch-schema-cache.js +49 -155
  145. package/dist/branch-workspace.d.ts +4 -4
  146. package/dist/branch-workspace.js +15 -19
  147. package/dist/build/generate-ai-content.d.ts +1 -0
  148. package/dist/build/generate-ai-content.js +12 -25
  149. package/dist/build-canopy.d.ts +17 -27
  150. package/dist/build-canopy.js +16 -23
  151. package/dist/build-mode.d.ts +25 -27
  152. package/dist/build-mode.js +25 -29
  153. package/dist/cli/cli.d.ts +15 -26
  154. package/dist/cli/cli.js +601 -978
  155. package/dist/cli/generate-ai-content.js +351 -628
  156. package/dist/cli/github-app-manifest.d.ts +84 -0
  157. package/dist/cli/github-app-manifest.js +161 -0
  158. package/dist/cli/init-github-app.d.ts +110 -444
  159. package/dist/cli/init-github-app.js +236 -773
  160. package/dist/cli/init.js +39 -80
  161. package/dist/cli/migrate.d.ts +13 -10
  162. package/dist/cli/migrate.js +22 -30
  163. package/dist/cli/project-detect.d.ts +17 -31
  164. package/dist/cli/project-detect.js +31 -42
  165. package/dist/cli/project-root.d.ts +4 -11
  166. package/dist/cli/project-root.js +4 -11
  167. package/dist/cli/prompt.d.ts +10 -0
  168. package/dist/cli/prompt.js +67 -0
  169. package/dist/cli/sync.d.ts +0 -8
  170. package/dist/cli/sync.js +8 -28
  171. package/dist/cli/template-files/middleware.ts.template +15 -29
  172. package/dist/cli/templates.d.ts +2 -12
  173. package/dist/cli/templates.js +4 -4
  174. package/dist/client.d.ts +1 -1
  175. package/dist/comment-store.d.ts +32 -53
  176. package/dist/comment-store.js +32 -52
  177. package/dist/config/flatten.d.ts +0 -3
  178. package/dist/config/flatten.js +2 -12
  179. package/dist/config/helpers.js +2 -2
  180. package/dist/config/index.d.ts +2 -2
  181. package/dist/config/index.js +1 -4
  182. package/dist/config/schemas/collection.d.ts +0 -8
  183. package/dist/config/schemas/collection.js +0 -10
  184. package/dist/config/schemas/config.d.ts +6 -78
  185. package/dist/config/schemas/config.js +38 -54
  186. package/dist/config/schemas/field.d.ts +2 -242
  187. package/dist/config/schemas/field.js +9 -20
  188. package/dist/config/schemas/media.js +1 -1
  189. package/dist/config/schemas/permissions.js +0 -2
  190. package/dist/config/schemas/url.d.ts +5 -6
  191. package/dist/config/schemas/url.js +5 -6
  192. package/dist/config/types.d.ts +45 -33
  193. package/dist/config/types.js +0 -1
  194. package/dist/config.d.ts +1 -8
  195. package/dist/config.js +1 -9
  196. package/dist/content-id-index.d.ts +76 -188
  197. package/dist/content-id-index.js +79 -230
  198. package/dist/content-index-generation.d.ts +27 -48
  199. package/dist/content-index-generation.js +35 -84
  200. package/dist/content-index-registry.d.ts +15 -24
  201. package/dist/content-index-registry.js +5 -9
  202. package/dist/content-listing.d.ts +64 -107
  203. package/dist/content-listing.js +68 -118
  204. package/dist/content-reader.d.ts +20 -29
  205. package/dist/content-reader.js +10 -18
  206. package/dist/content-store.d.ts +210 -336
  207. package/dist/content-store.js +413 -657
  208. package/dist/content-tree.d.ts +44 -86
  209. package/dist/content-tree.js +26 -54
  210. package/dist/context.d.ts +67 -94
  211. package/dist/context.js +53 -72
  212. package/dist/dev-content-watcher.d.ts +18 -18
  213. package/dist/dev-content-watcher.js +41 -44
  214. package/dist/editor/BranchManager.d.ts +3 -6
  215. package/dist/editor/BranchManager.js +24 -44
  216. package/dist/editor/CanopyEditor.js +5 -2
  217. package/dist/editor/CommentsPanel.js +0 -2
  218. package/dist/editor/Editor.js +19 -76
  219. package/dist/editor/EditorAuthGate.d.ts +27 -0
  220. package/dist/editor/EditorAuthGate.js +140 -0
  221. package/dist/editor/EntryNavigator.js +0 -20
  222. package/dist/editor/FormRenderer.d.ts +1 -2
  223. package/dist/editor/FormRenderer.js +8 -23
  224. package/dist/editor/admin/SystemHealthPanel.js +20 -37
  225. package/dist/editor/admin/useSystemHealth.d.ts +2 -3
  226. package/dist/editor/admin/useSystemHealth.js +10 -12
  227. package/dist/editor/client-reference-resolver.d.ts +2 -5
  228. package/dist/editor/client-reference-resolver.js +2 -19
  229. package/dist/editor/comments/BranchComments.js +0 -4
  230. package/dist/editor/comments/EntryComments.js +0 -4
  231. package/dist/editor/comments/FieldWrapper.js +0 -4
  232. package/dist/editor/comments/InlineCommentThread.js +0 -2
  233. package/dist/editor/comments/ThreadCarousel.d.ts +0 -58
  234. package/dist/editor/comments/ThreadCarousel.js +0 -12
  235. package/dist/editor/components/EditorFooter.d.ts +0 -8
  236. package/dist/editor/components/EditorFooter.js +0 -5
  237. package/dist/editor/components/EditorHeader.d.ts +0 -31
  238. package/dist/editor/components/EditorHeader.js +21 -71
  239. package/dist/editor/components/EditorSidebar.d.ts +0 -19
  240. package/dist/editor/components/EditorSidebar.js +0 -16
  241. package/dist/editor/components/EntryCreateModal.d.ts +4 -4
  242. package/dist/editor/components/EntryCreateModal.js +7 -22
  243. package/dist/editor/components/RenameEntryModal.js +0 -4
  244. package/dist/editor/components/UserBadge.js +0 -10
  245. package/dist/editor/components/index.js +0 -2
  246. package/dist/editor/context/ApiClientContext.d.ts +8 -7
  247. package/dist/editor/context/ApiClientContext.js +39 -11
  248. package/dist/editor/context/AssetContext.d.ts +7 -17
  249. package/dist/editor/context/AssetContext.js +7 -17
  250. package/dist/editor/context/EditorIdentityContext.d.ts +13 -0
  251. package/dist/editor/context/EditorIdentityContext.js +7 -0
  252. package/dist/editor/context/EditorStateContext.d.ts +10 -41
  253. package/dist/editor/context/EditorStateContext.js +7 -23
  254. package/dist/editor/context/SWRProvider.d.ts +3 -6
  255. package/dist/editor/context/index.d.ts +1 -20
  256. package/dist/editor/context/index.js +1 -20
  257. package/dist/editor/editor-utils.d.ts +8 -47
  258. package/dist/editor/editor-utils.js +19 -72
  259. package/dist/editor/fields/BlockField.d.ts +2 -2
  260. package/dist/editor/fields/BlockField.js +1 -2
  261. package/dist/editor/fields/CodeField.d.ts +0 -1
  262. package/dist/editor/fields/CodeField.js +0 -1
  263. package/dist/editor/fields/DateTimeField.d.ts +15 -22
  264. package/dist/editor/fields/DateTimeField.js +17 -26
  265. package/dist/editor/fields/ImageField.d.ts +2 -2
  266. package/dist/editor/fields/ImageField.js +8 -14
  267. package/dist/editor/fields/InlineGroupField.d.ts +0 -1
  268. package/dist/editor/fields/InlineGroupField.js +0 -1
  269. package/dist/editor/fields/MarkdownField.d.ts +0 -1
  270. package/dist/editor/fields/MarkdownField.js +6 -11
  271. package/dist/editor/fields/MdxImageDialog.d.ts +1 -1
  272. package/dist/editor/fields/MdxImageDialog.js +0 -1
  273. package/dist/editor/fields/NumberField.d.ts +9 -19
  274. package/dist/editor/fields/NumberField.js +11 -22
  275. package/dist/editor/fields/NumberListField.d.ts +7 -10
  276. package/dist/editor/fields/NumberListField.js +7 -10
  277. package/dist/editor/fields/ObjectField.d.ts +5 -8
  278. package/dist/editor/fields/ObjectField.js +0 -1
  279. package/dist/editor/fields/ReferenceField.d.ts +1 -1
  280. package/dist/editor/fields/ReferenceField.js +11 -16
  281. package/dist/editor/fields/SelectField.d.ts +2 -2
  282. package/dist/editor/fields/SelectField.js +0 -1
  283. package/dist/editor/fields/StringListField.d.ts +0 -4
  284. package/dist/editor/fields/StringListField.js +4 -9
  285. package/dist/editor/fields/TextField.d.ts +0 -1
  286. package/dist/editor/fields/TextField.js +0 -1
  287. package/dist/editor/fields/ToggleField.d.ts +0 -1
  288. package/dist/editor/fields/ToggleField.js +0 -1
  289. package/dist/editor/fields/entry-link/EntryLinkContext.js +2 -4
  290. package/dist/editor/fields/entry-link/InsertEntryLink.d.ts +0 -3
  291. package/dist/editor/fields/entry-link/InsertEntryLink.js +0 -4
  292. package/dist/editor/group-manager/ExternalGroupsTab.d.ts +0 -3
  293. package/dist/editor/group-manager/ExternalGroupsTab.js +0 -1
  294. package/dist/editor/group-manager/GroupCard.d.ts +0 -3
  295. package/dist/editor/group-manager/GroupForm.d.ts +0 -3
  296. package/dist/editor/group-manager/InternalGroupsTab.d.ts +0 -3
  297. package/dist/editor/group-manager/InternalGroupsTab.js +0 -2
  298. package/dist/editor/group-manager/MemberList.d.ts +0 -3
  299. package/dist/editor/group-manager/hooks/useExternalGroupSearch.d.ts +0 -3
  300. package/dist/editor/group-manager/hooks/useExternalGroupSearch.js +0 -3
  301. package/dist/editor/group-manager/hooks/useGroupState.d.ts +0 -3
  302. package/dist/editor/group-manager/hooks/useGroupState.js +0 -5
  303. package/dist/editor/group-manager/hooks/useUserSearch.d.ts +0 -3
  304. package/dist/editor/group-manager/hooks/useUserSearch.js +0 -3
  305. package/dist/editor/group-manager/index.d.ts +0 -6
  306. package/dist/editor/group-manager/index.js +0 -10
  307. package/dist/editor/group-manager/types.d.ts +2 -5
  308. package/dist/editor/group-manager/types.js +0 -3
  309. package/dist/editor/hooks/index.d.ts +6 -11
  310. package/dist/editor/hooks/index.js +6 -12
  311. package/dist/editor/hooks/useBranchActions.d.ts +0 -14
  312. package/dist/editor/hooks/useBranchActions.js +0 -22
  313. package/dist/editor/hooks/useBranchManager.d.ts +2 -48
  314. package/dist/editor/hooks/useBranchManager.js +4 -64
  315. package/dist/editor/hooks/useBranchesData.d.ts +7 -6
  316. package/dist/editor/hooks/useBranchesData.js +7 -6
  317. package/dist/editor/hooks/useCommentSystem.d.ts +0 -49
  318. package/dist/editor/hooks/useCommentSystem.js +1 -36
  319. package/dist/editor/hooks/useDraftManager.d.ts +2 -35
  320. package/dist/editor/hooks/useDraftManager.js +23 -64
  321. package/dist/editor/hooks/useEditorLayout.d.ts +0 -20
  322. package/dist/editor/hooks/useEditorLayout.js +0 -23
  323. package/dist/editor/hooks/useEntriesData.d.ts +1 -0
  324. package/dist/editor/hooks/useEntriesData.js +2 -3
  325. package/dist/editor/hooks/useEntryLinkResolution.d.ts +2 -2
  326. package/dist/editor/hooks/useEntryLinkResolution.js +2 -2
  327. package/dist/editor/hooks/useEntryManager.d.ts +2 -27
  328. package/dist/editor/hooks/useEntryManager.js +29 -78
  329. package/dist/editor/hooks/useGroupManager.d.ts +0 -21
  330. package/dist/editor/hooks/useGroupManager.js +0 -21
  331. package/dist/editor/hooks/usePermissionManager.d.ts +0 -20
  332. package/dist/editor/hooks/usePermissionManager.js +0 -20
  333. package/dist/editor/hooks/useReferenceResolution.d.ts +2 -33
  334. package/dist/editor/hooks/useReferenceResolution.js +1 -48
  335. package/dist/editor/hooks/useSchemaManager.d.ts +8 -27
  336. package/dist/editor/hooks/useSchemaManager.js +0 -19
  337. package/dist/editor/hooks/useUserContext.d.ts +2 -9
  338. package/dist/editor/hooks/useUserContext.js +10 -10
  339. package/dist/editor/hooks/useUserMetadata.d.ts +0 -2
  340. package/dist/editor/hooks/useUserMetadata.js +0 -3
  341. package/dist/editor/media/AssetCard.d.ts +0 -1
  342. package/dist/editor/media/AssetCard.js +1 -2
  343. package/dist/editor/media/CropStep.d.ts +0 -1
  344. package/dist/editor/media/CropStep.js +0 -1
  345. package/dist/editor/media/MediaLibrary.d.ts +1 -2
  346. package/dist/editor/media/MediaLibrary.js +1 -2
  347. package/dist/editor/media/MediaLibraryBody.d.ts +0 -1
  348. package/dist/editor/media/MediaLibraryBody.js +0 -1
  349. package/dist/editor/media/crop-math.d.ts +1 -1
  350. package/dist/editor/media/crop-math.js +1 -1
  351. package/dist/editor/permission-manager/GroupSelector.d.ts +0 -3
  352. package/dist/editor/permission-manager/PermissionEditor.d.ts +0 -4
  353. package/dist/editor/permission-manager/PermissionEditor.js +0 -1
  354. package/dist/editor/permission-manager/PermissionLevelBadge.d.ts +0 -7
  355. package/dist/editor/permission-manager/PermissionLevelBadge.js +0 -4
  356. package/dist/editor/permission-manager/PermissionTree.d.ts +0 -4
  357. package/dist/editor/permission-manager/UserSelector.d.ts +0 -3
  358. package/dist/editor/permission-manager/constants.d.ts +0 -3
  359. package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts +0 -3
  360. package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js +0 -10
  361. package/dist/editor/permission-manager/hooks/usePermissionTree.d.ts +0 -14
  362. package/dist/editor/permission-manager/hooks/usePermissionTree.js +0 -11
  363. package/dist/editor/permission-manager/index.d.ts +0 -7
  364. package/dist/editor/permission-manager/index.js +0 -16
  365. package/dist/editor/permission-manager/types.d.ts +2 -12
  366. package/dist/editor/permission-manager/types.js +0 -3
  367. package/dist/editor/permission-manager/utils.d.ts +0 -28
  368. package/dist/editor/permission-manager/utils.js +9 -23
  369. package/dist/editor/preview-bridge.d.ts +5 -1
  370. package/dist/editor/preview-bridge.js +4 -4
  371. package/dist/editor/schema-editor/CollectionEditor.d.ts +0 -5
  372. package/dist/editor/schema-editor/CollectionEditor.js +9 -31
  373. package/dist/editor/schema-editor/EntryTypeEditor.d.ts +0 -6
  374. package/dist/editor/schema-editor/EntryTypeEditor.js +3 -24
  375. package/dist/editor/schema-editor/index.d.ts +0 -7
  376. package/dist/editor/schema-editor/index.js +0 -7
  377. package/dist/editor/utils/env.d.ts +3 -18
  378. package/dist/editor/utils/env.js +6 -25
  379. package/dist/entry-link-resolver.d.ts +13 -35
  380. package/dist/entry-link-resolver.js +20 -53
  381. package/dist/entry-schema-registry.d.ts +20 -60
  382. package/dist/entry-schema-registry.js +20 -69
  383. package/dist/entry-schema.d.ts +118 -223
  384. package/dist/entry-schema.js +46 -91
  385. package/dist/git-manager.d.ts +101 -200
  386. package/dist/git-manager.js +211 -384
  387. package/dist/github-service.d.ts +34 -75
  388. package/dist/github-service.js +37 -91
  389. package/dist/http/handler.d.ts +6 -37
  390. package/dist/http/handler.js +65 -120
  391. package/dist/http/router.d.ts +15 -32
  392. package/dist/http/router.js +34 -99
  393. package/dist/http/types.d.ts +15 -40
  394. package/dist/http/types.js +3 -7
  395. package/dist/id.d.ts +4 -10
  396. package/dist/id.js +4 -10
  397. package/dist/index.js +6 -9
  398. package/dist/operating-mode/client-safe-strategy.d.ts +7 -14
  399. package/dist/operating-mode/client-safe-strategy.js +8 -28
  400. package/dist/operating-mode/client-unsafe-strategy.d.ts +6 -16
  401. package/dist/operating-mode/client-unsafe-strategy.js +9 -34
  402. package/dist/operating-mode/client.d.ts +3 -10
  403. package/dist/operating-mode/client.js +3 -8
  404. package/dist/operating-mode/deployment-name-fixtures.d.ts +14 -18
  405. package/dist/operating-mode/deployment-name-fixtures.js +14 -18
  406. package/dist/operating-mode/deployment-name.d.ts +19 -29
  407. package/dist/operating-mode/deployment-name.js +29 -47
  408. package/dist/operating-mode/index.d.ts +4 -25
  409. package/dist/operating-mode/index.js +9 -31
  410. package/dist/operating-mode/mode-env.d.ts +32 -54
  411. package/dist/operating-mode/mode-env.js +36 -58
  412. package/dist/operating-mode/types.d.ts +24 -72
  413. package/dist/operating-mode/types.js +1 -7
  414. package/dist/paths/branch-name.d.ts +30 -40
  415. package/dist/paths/branch-name.js +30 -40
  416. package/dist/paths/branch.d.ts +4 -18
  417. package/dist/paths/branch.js +6 -22
  418. package/dist/paths/index.d.ts +2 -13
  419. package/dist/paths/index.js +3 -23
  420. package/dist/paths/normalize-server.d.ts +3 -15
  421. package/dist/paths/normalize-server.js +3 -15
  422. package/dist/paths/normalize.d.ts +13 -33
  423. package/dist/paths/normalize.js +13 -33
  424. package/dist/paths/resolve.d.ts +4 -17
  425. package/dist/paths/resolve.js +4 -22
  426. package/dist/paths/types.d.ts +12 -34
  427. package/dist/paths/types.js +5 -7
  428. package/dist/paths/validation.d.ts +22 -119
  429. package/dist/paths/validation.js +30 -148
  430. package/dist/reference-resolver.d.ts +0 -13
  431. package/dist/reference-resolver.js +0 -18
  432. package/dist/resolve-canopy-user.d.ts +16 -18
  433. package/dist/resolve-canopy-user.js +17 -26
  434. package/dist/resource-generation.d.ts +16 -25
  435. package/dist/resource-generation.js +34 -97
  436. package/dist/schema/meta-loader.d.ts +2 -14
  437. package/dist/schema/meta-loader.js +15 -64
  438. package/dist/schema/resolver.d.ts +1 -4
  439. package/dist/schema/resolver.js +1 -6
  440. package/dist/schema/schema-store-types.d.ts +0 -12
  441. package/dist/schema/schema-store.d.ts +61 -138
  442. package/dist/schema/schema-store.js +85 -282
  443. package/dist/schema/types.d.ts +0 -4
  444. package/dist/server.d.ts +62 -93
  445. package/dist/server.js +63 -94
  446. package/dist/services.d.ts +23 -47
  447. package/dist/services.js +55 -98
  448. package/dist/settings-workspace.d.ts +17 -30
  449. package/dist/settings-workspace.js +51 -81
  450. package/dist/static/index.d.ts +26 -52
  451. package/dist/static/index.js +33 -67
  452. package/dist/{worker/task-queue.d.ts → task-queue/cms-task-queue.d.ts} +7 -9
  453. package/dist/task-queue/cms-task-queue.js +13 -0
  454. package/dist/task-queue/task-queue-config.d.ts +3 -0
  455. package/dist/{worker → task-queue}/task-queue-config.js +1 -6
  456. package/dist/task-queue/task-queue.d.ts +16 -22
  457. package/dist/task-queue/task-queue.js +20 -44
  458. package/dist/task-queue/types.d.ts +0 -1
  459. package/dist/task-queue/worker-status.d.ts +35 -0
  460. package/dist/task-queue/worker-status.js +40 -0
  461. package/dist/types.d.ts +40 -51
  462. package/dist/url-collision.d.ts +26 -40
  463. package/dist/url-collision.js +47 -63
  464. package/dist/url-exclusivity-fixtures.d.ts +15 -20
  465. package/dist/url-exclusivity-fixtures.js +14 -19
  466. package/dist/url-path-resolver.d.ts +8 -16
  467. package/dist/url-path-resolver.js +19 -29
  468. package/dist/user.d.ts +8 -21
  469. package/dist/user.js +10 -19
  470. package/dist/utils/async-mutex.js +4 -6
  471. package/dist/utils/atomic-write.d.ts +2 -11
  472. package/dist/utils/atomic-write.js +2 -11
  473. package/dist/utils/body-field.d.ts +8 -15
  474. package/dist/utils/body-field.js +8 -15
  475. package/dist/utils/content-serialize.d.ts +18 -24
  476. package/dist/utils/content-serialize.js +109 -160
  477. package/dist/utils/content-write-lock.d.ts +51 -106
  478. package/dist/utils/content-write-lock.js +66 -111
  479. package/dist/utils/debug.d.ts +7 -23
  480. package/dist/utils/debug.js +7 -23
  481. package/dist/utils/entry-url.d.ts +11 -23
  482. package/dist/utils/entry-url.js +11 -26
  483. package/dist/utils/error.d.ts +25 -90
  484. package/dist/utils/error.js +60 -147
  485. package/dist/utils/flatten-group-fields.d.ts +5 -7
  486. package/dist/utils/flatten-group-fields.js +5 -7
  487. package/dist/utils/format.d.ts +1 -5
  488. package/dist/utils/format.js +1 -5
  489. package/dist/utils/fs.d.ts +3 -4
  490. package/dist/utils/fs.js +3 -4
  491. package/dist/utils/git.d.ts +52 -83
  492. package/dist/utils/git.js +79 -125
  493. package/dist/utils/logger.d.ts +35 -50
  494. package/dist/utils/logger.js +35 -52
  495. package/dist/utils/provisioning-lock.d.ts +23 -35
  496. package/dist/utils/provisioning-lock.js +49 -69
  497. package/dist/utils/sanitize-href.d.ts +5 -10
  498. package/dist/utils/sanitize-href.js +8 -18
  499. package/dist/utils/title-field.d.ts +17 -20
  500. package/dist/utils/title-field.js +18 -27
  501. package/dist/utils/typed-filename.d.ts +20 -48
  502. package/dist/utils/typed-filename.js +25 -61
  503. package/dist/utils/url-prefix.d.ts +3 -3
  504. package/dist/utils/url-prefix.js +3 -3
  505. package/dist/validation/block-structural-keys.d.ts +16 -31
  506. package/dist/validation/block-structural-keys.js +19 -29
  507. package/dist/validation/deletion-checker.d.ts +0 -34
  508. package/dist/validation/deletion-checker.js +1 -43
  509. package/dist/validation/entry-link-validator.d.ts +6 -13
  510. package/dist/validation/entry-link-validator.js +4 -13
  511. package/dist/validation/entry-type-reference-validator.d.ts +13 -18
  512. package/dist/validation/entry-type-reference-validator.js +13 -18
  513. package/dist/validation/entry-validator.d.ts +13 -25
  514. package/dist/validation/entry-validator.js +15 -32
  515. package/dist/validation/field-traversal.d.ts +3 -30
  516. package/dist/validation/field-traversal.js +1 -32
  517. package/dist/validation/reference-validator.d.ts +5 -24
  518. package/dist/validation/reference-validator.js +5 -30
  519. package/dist/worker/cms-worker.d.ts +172 -232
  520. package/dist/worker/cms-worker.js +241 -333
  521. package/dist/worker/git-sync.d.ts +32 -133
  522. package/dist/worker/git-sync.js +129 -191
  523. package/dist/worker/github-auth.d.ts +13 -19
  524. package/dist/worker/github-auth.js +13 -19
  525. package/dist/worker/history-rewrite.d.ts +53 -66
  526. package/dist/worker/history-rewrite.js +54 -60
  527. package/dist/worker/log.d.ts +24 -41
  528. package/dist/worker/log.js +25 -42
  529. package/dist/worker/rebase.d.ts +20 -110
  530. package/dist/worker/rebase.js +279 -354
  531. package/dist/worker/task-runner.d.ts +32 -66
  532. package/dist/worker/task-runner.js +126 -162
  533. package/dist/worker/worker-context.d.ts +41 -81
  534. package/package.json +4 -4
  535. package/dist/cli/template-files/middleware-clerk.ts.template +0 -37
  536. package/dist/worker/task-queue-config.d.ts +0 -8
  537. package/dist/worker/task-queue.js +0 -19
  538. package/dist/worker/worker-status.d.ts +0 -47
  539. package/dist/worker/worker-status.js +0 -52
@@ -2,31 +2,6 @@
2
2
  * Zod schemas for field configuration validation.
3
3
  */
4
4
  import { z } from 'zod';
5
- export declare const fieldBaseSchema: z.ZodObject<{
6
- name: z.ZodString;
7
- label: z.ZodOptional<z.ZodString>;
8
- description: z.ZodOptional<z.ZodString>;
9
- required: z.ZodOptional<z.ZodBoolean>;
10
- list: z.ZodOptional<z.ZodBoolean>;
11
- isTitle: z.ZodOptional<z.ZodBoolean>;
12
- isBody: z.ZodOptional<z.ZodBoolean>;
13
- }, "strip", z.ZodTypeAny, {
14
- name: string;
15
- description?: string | undefined;
16
- label?: string | undefined;
17
- required?: boolean | undefined;
18
- list?: boolean | undefined;
19
- isTitle?: boolean | undefined;
20
- isBody?: boolean | undefined;
21
- }, {
22
- name: string;
23
- description?: string | undefined;
24
- label?: string | undefined;
25
- required?: boolean | undefined;
26
- list?: boolean | undefined;
27
- isTitle?: boolean | undefined;
28
- isBody?: boolean | undefined;
29
- }>;
30
5
  export declare const selectOptionSchema: z.ZodUnion<[z.ZodString, z.ZodObject<{
31
6
  label: z.ZodString;
32
7
  value: z.ZodString;
@@ -47,35 +22,6 @@ export declare const referenceOptionSchema: z.ZodUnion<[z.ZodString, z.ZodObject
47
22
  value: string;
48
23
  label: string;
49
24
  }>]>;
50
- export declare const primitiveFieldSchema: z.ZodObject<{
51
- name: z.ZodString;
52
- label: z.ZodOptional<z.ZodString>;
53
- description: z.ZodOptional<z.ZodString>;
54
- required: z.ZodOptional<z.ZodBoolean>;
55
- list: z.ZodOptional<z.ZodBoolean>;
56
- isTitle: z.ZodOptional<z.ZodBoolean>;
57
- isBody: z.ZodOptional<z.ZodBoolean>;
58
- } & {
59
- type: z.ZodEnum<["string", "number", "boolean", "datetime", "markdown", "mdx", "code"]>;
60
- }, "strip", z.ZodTypeAny, {
61
- name: string;
62
- type: "string" | "number" | "boolean" | "code" | "datetime" | "markdown" | "mdx";
63
- description?: string | undefined;
64
- label?: string | undefined;
65
- required?: boolean | undefined;
66
- list?: boolean | undefined;
67
- isTitle?: boolean | undefined;
68
- isBody?: boolean | undefined;
69
- }, {
70
- name: string;
71
- type: "string" | "number" | "boolean" | "code" | "datetime" | "markdown" | "mdx";
72
- description?: string | undefined;
73
- label?: string | undefined;
74
- required?: boolean | undefined;
75
- list?: boolean | undefined;
76
- isTitle?: boolean | undefined;
77
- isBody?: boolean | undefined;
78
- }>;
79
25
  export declare const imageFieldSchema: z.ZodObject<{
80
26
  name: z.ZodString;
81
27
  label: z.ZodOptional<z.ZodString>;
@@ -111,53 +57,7 @@ export declare const imageFieldSchema: z.ZodObject<{
111
57
  aspect?: string | undefined;
112
58
  altOptional?: boolean | undefined;
113
59
  }>;
114
- export declare const selectFieldSchema: z.ZodObject<{
115
- name: z.ZodString;
116
- label: z.ZodOptional<z.ZodString>;
117
- description: z.ZodOptional<z.ZodString>;
118
- required: z.ZodOptional<z.ZodBoolean>;
119
- list: z.ZodOptional<z.ZodBoolean>;
120
- isTitle: z.ZodOptional<z.ZodBoolean>;
121
- isBody: z.ZodOptional<z.ZodBoolean>;
122
- } & {
123
- type: z.ZodLiteral<"select">;
124
- options: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
125
- label: z.ZodString;
126
- value: z.ZodString;
127
- }, "strip", z.ZodTypeAny, {
128
- value: string;
129
- label: string;
130
- }, {
131
- value: string;
132
- label: string;
133
- }>]>, "many">;
134
- }, "strip", z.ZodTypeAny, {
135
- name: string;
136
- options: (string | {
137
- value: string;
138
- label: string;
139
- })[];
140
- type: "select";
141
- description?: string | undefined;
142
- label?: string | undefined;
143
- required?: boolean | undefined;
144
- list?: boolean | undefined;
145
- isTitle?: boolean | undefined;
146
- isBody?: boolean | undefined;
147
- }, {
148
- name: string;
149
- options: (string | {
150
- value: string;
151
- label: string;
152
- })[];
153
- type: "select";
154
- description?: string | undefined;
155
- label?: string | undefined;
156
- required?: boolean | undefined;
157
- list?: boolean | undefined;
158
- isTitle?: boolean | undefined;
159
- isBody?: boolean | undefined;
160
- }>;
60
+ /** @internal Exported for tests. */
161
61
  export declare const referenceFieldSchema: z.ZodObject<{
162
62
  name: z.ZodString;
163
63
  label: z.ZodOptional<z.ZodString>;
@@ -233,145 +133,5 @@ export declare const blockSchema: z.ZodObject<{
233
133
  description?: string | undefined;
234
134
  label?: string | undefined;
235
135
  }>;
236
- export declare const blockFieldSchema: z.ZodObject<{
237
- name: z.ZodString;
238
- label: z.ZodOptional<z.ZodString>;
239
- description: z.ZodOptional<z.ZodString>;
240
- required: z.ZodOptional<z.ZodBoolean>;
241
- list: z.ZodOptional<z.ZodBoolean>;
242
- isTitle: z.ZodOptional<z.ZodBoolean>;
243
- isBody: z.ZodOptional<z.ZodBoolean>;
244
- } & {
245
- type: z.ZodLiteral<"block">;
246
- templates: z.ZodArray<z.ZodObject<{
247
- name: z.ZodString;
248
- label: z.ZodOptional<z.ZodString>;
249
- description: z.ZodOptional<z.ZodString>;
250
- fields: z.ZodArray<z.ZodLazy<z.ZodTypeAny>, "many">;
251
- }, "strip", z.ZodTypeAny, {
252
- name: string;
253
- fields: any[];
254
- description?: string | undefined;
255
- label?: string | undefined;
256
- }, {
257
- name: string;
258
- fields: any[];
259
- description?: string | undefined;
260
- label?: string | undefined;
261
- }>, "many">;
262
- }, "strip", z.ZodTypeAny, {
263
- name: string;
264
- type: "block";
265
- templates: {
266
- name: string;
267
- fields: any[];
268
- description?: string | undefined;
269
- label?: string | undefined;
270
- }[];
271
- description?: string | undefined;
272
- label?: string | undefined;
273
- required?: boolean | undefined;
274
- list?: boolean | undefined;
275
- isTitle?: boolean | undefined;
276
- isBody?: boolean | undefined;
277
- }, {
278
- name: string;
279
- type: "block";
280
- templates: {
281
- name: string;
282
- fields: any[];
283
- description?: string | undefined;
284
- label?: string | undefined;
285
- }[];
286
- description?: string | undefined;
287
- label?: string | undefined;
288
- required?: boolean | undefined;
289
- list?: boolean | undefined;
290
- isTitle?: boolean | undefined;
291
- isBody?: boolean | undefined;
292
- }>;
293
- export declare const objectFieldSchema: z.ZodObject<{
294
- name: z.ZodString;
295
- label: z.ZodOptional<z.ZodString>;
296
- description: z.ZodOptional<z.ZodString>;
297
- required: z.ZodOptional<z.ZodBoolean>;
298
- list: z.ZodOptional<z.ZodBoolean>;
299
- isTitle: z.ZodOptional<z.ZodBoolean>;
300
- isBody: z.ZodOptional<z.ZodBoolean>;
301
- } & {
302
- type: z.ZodLiteral<"object">;
303
- fields: z.ZodArray<z.ZodLazy<z.ZodTypeAny>, "many">;
304
- }, "strip", z.ZodTypeAny, {
305
- name: string;
306
- type: "object";
307
- fields: any[];
308
- description?: string | undefined;
309
- label?: string | undefined;
310
- required?: boolean | undefined;
311
- list?: boolean | undefined;
312
- isTitle?: boolean | undefined;
313
- isBody?: boolean | undefined;
314
- }, {
315
- name: string;
316
- type: "object";
317
- fields: any[];
318
- description?: string | undefined;
319
- label?: string | undefined;
320
- required?: boolean | undefined;
321
- list?: boolean | undefined;
322
- isTitle?: boolean | undefined;
323
- isBody?: boolean | undefined;
324
- }>;
325
- export declare const inlineGroupFieldSchema: z.ZodObject<{
326
- type: z.ZodLiteral<"group">;
327
- name: z.ZodString;
328
- label: z.ZodOptional<z.ZodString>;
329
- description: z.ZodOptional<z.ZodString>;
330
- fields: z.ZodArray<z.ZodLazy<z.ZodTypeAny>, "many">;
331
- }, "strip", z.ZodTypeAny, {
332
- name: string;
333
- type: "group";
334
- fields: any[];
335
- description?: string | undefined;
336
- label?: string | undefined;
337
- }, {
338
- name: string;
339
- type: "group";
340
- fields: any[];
341
- description?: string | undefined;
342
- label?: string | undefined;
343
- }>;
344
- export declare const customFieldSchema: z.ZodLazy<z.ZodObject<{
345
- name: z.ZodString;
346
- label: z.ZodOptional<z.ZodString>;
347
- description: z.ZodOptional<z.ZodString>;
348
- required: z.ZodOptional<z.ZodBoolean>;
349
- list: z.ZodOptional<z.ZodBoolean>;
350
- isTitle: z.ZodOptional<z.ZodBoolean>;
351
- isBody: z.ZodOptional<z.ZodBoolean>;
352
- } & {
353
- type: z.ZodEffects<z.ZodString, string, string>;
354
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
355
- name: z.ZodString;
356
- label: z.ZodOptional<z.ZodString>;
357
- description: z.ZodOptional<z.ZodString>;
358
- required: z.ZodOptional<z.ZodBoolean>;
359
- list: z.ZodOptional<z.ZodBoolean>;
360
- isTitle: z.ZodOptional<z.ZodBoolean>;
361
- isBody: z.ZodOptional<z.ZodBoolean>;
362
- } & {
363
- type: z.ZodEffects<z.ZodString, string, string>;
364
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
365
- name: z.ZodString;
366
- label: z.ZodOptional<z.ZodString>;
367
- description: z.ZodOptional<z.ZodString>;
368
- required: z.ZodOptional<z.ZodBoolean>;
369
- list: z.ZodOptional<z.ZodBoolean>;
370
- isTitle: z.ZodOptional<z.ZodBoolean>;
371
- isBody: z.ZodOptional<z.ZodBoolean>;
372
- } & {
373
- type: z.ZodEffects<z.ZodString, string, string>;
374
- }, z.ZodTypeAny, "passthrough">>>;
375
- declare const knownFieldSchema: z.ZodTypeAny;
376
136
  declare const fieldSchema: z.ZodTypeAny;
377
- export { fieldSchema, knownFieldSchema };
137
+ export { fieldSchema };
@@ -3,8 +3,7 @@
3
3
  */
4
4
  import { z } from 'zod';
5
5
  import { primitiveFieldTypes, fieldTypes } from '../types.js';
6
- // Base field schema - shared properties
7
- export const fieldBaseSchema = z.object({
6
+ const fieldBaseSchema = z.object({
8
7
  name: z.string().min(1),
9
8
  label: z.string().optional(),
10
9
  description: z.string().optional(),
@@ -13,7 +12,6 @@ export const fieldBaseSchema = z.object({
13
12
  isTitle: z.boolean().optional(),
14
13
  isBody: z.boolean().optional(),
15
14
  });
16
- // Select option schema
17
15
  export const selectOptionSchema = z.union([
18
16
  z.string(),
19
17
  z.object({
@@ -21,7 +19,6 @@ export const selectOptionSchema = z.union([
21
19
  value: z.string().min(1),
22
20
  }),
23
21
  ]);
24
- // Reference option schema
25
22
  export const referenceOptionSchema = z.union([
26
23
  z.string(),
27
24
  z.object({
@@ -29,8 +26,7 @@ export const referenceOptionSchema = z.union([
29
26
  value: z.string().min(1),
30
27
  }),
31
28
  ]);
32
- // Primitive field (string, number, boolean, etc.)
33
- export const primitiveFieldSchema = fieldBaseSchema.extend({
29
+ const primitiveFieldSchema = fieldBaseSchema.extend({
34
30
  type: z.enum(primitiveFieldTypes),
35
31
  });
36
32
  // "W:H" aspect ratio, e.g. "16:9" or "1:1" — positive integers on both sides,
@@ -50,13 +46,12 @@ export const imageFieldSchema = fieldBaseSchema.extend({
50
46
  .optional(),
51
47
  altOptional: z.boolean().optional(),
52
48
  });
53
- // Select field with options
54
- export const selectFieldSchema = fieldBaseSchema.extend({
49
+ const selectFieldSchema = fieldBaseSchema.extend({
55
50
  type: z.literal('select'),
56
51
  options: z.array(selectOptionSchema).min(1),
57
52
  });
58
- // Reference field pointing to other collections and/or entry types.
59
53
  // At least one of `collections` or `entryTypes` must be specified (enforced by config validation).
54
+ /** @internal Exported for tests. */
60
55
  export const referenceFieldSchema = fieldBaseSchema.extend({
61
56
  type: z.literal('reference'),
62
57
  collections: z.array(z.string().min(1)).min(1).optional(),
@@ -73,33 +68,29 @@ export const referenceFieldSchema = fieldBaseSchema.extend({
73
68
  // blockSchema/objectFieldSchema reference fieldHolder[0] via z.lazy, which is resolved
74
69
  // after the full fieldSchema is constructed below.
75
70
  const fieldHolder = [z.never()];
76
- // Block template schema
77
71
  export const blockSchema = z.object({
78
72
  name: z.string().min(1),
79
73
  label: z.string().optional(),
80
74
  description: z.string().optional(),
81
75
  fields: z.array(z.lazy(() => fieldHolder[0])).min(1),
82
76
  });
83
- // Block field with templates
84
- export const blockFieldSchema = fieldBaseSchema.extend({
77
+ const blockFieldSchema = fieldBaseSchema.extend({
85
78
  type: z.literal('block'),
86
79
  templates: z.array(blockSchema).min(1),
87
80
  });
88
- // Object field with nested fields
89
- export const objectFieldSchema = fieldBaseSchema.extend({
81
+ const objectFieldSchema = fieldBaseSchema.extend({
90
82
  type: z.literal('object'),
91
83
  fields: z.array(z.lazy(() => fieldHolder[0])).min(1),
92
84
  });
93
85
  // Inline group field: visual grouping only, no data nesting
94
- export const inlineGroupFieldSchema = z.object({
86
+ const inlineGroupFieldSchema = z.object({
95
87
  type: z.literal('group'),
96
88
  name: z.string().min(1),
97
89
  label: z.string().optional(),
98
90
  description: z.string().optional(),
99
91
  fields: z.array(z.lazy(() => fieldHolder[0])).min(1),
100
92
  });
101
- // Custom field (user-defined type)
102
- export const customFieldSchema = z.lazy(() => fieldBaseSchema
93
+ const customFieldSchema = z.lazy(() => fieldBaseSchema
103
94
  .extend({
104
95
  type: z
105
96
  .string()
@@ -109,7 +100,6 @@ export const customFieldSchema = z.lazy(() => fieldBaseSchema
109
100
  }),
110
101
  })
111
102
  .passthrough());
112
- // Known built-in field types (discriminated union)
113
103
  const knownFieldSchema = z.discriminatedUnion('type', [
114
104
  primitiveFieldSchema,
115
105
  selectFieldSchema,
@@ -119,7 +109,6 @@ const knownFieldSchema = z.discriminatedUnion('type', [
119
109
  blockFieldSchema,
120
110
  inlineGroupFieldSchema,
121
111
  ]);
122
- // Complete field schema (built-in or custom)
123
112
  const fieldSchema = z.lazy(() => z.union([knownFieldSchema, customFieldSchema]));
124
113
  fieldHolder[0] = fieldSchema;
125
- export { fieldSchema, knownFieldSchema };
114
+ export { fieldSchema };
@@ -14,7 +14,7 @@ import { assetMountUrlSchema, uploadTargetUrlSchema } from './url.js';
14
14
  //
15
15
  // Bucket-prefix layout (asset-originals/, asset-staging/, asset-meta/, assets/) is
16
16
  // intentionally NOT configurable here — those are constants in assets/keys.ts, not
17
- // per-site config (see .claude/future-tasks/assets-media-system.md).
17
+ // per-site config (see .claude/future-tasks/resolved/assets-media-system.md).
18
18
  //
19
19
  // Every branch is .strict(). This is load-bearing, not tidiness: CanopyConfigSchema's own
20
20
  // .strict() does NOT recurse into nested schemas, so until these branches carried their own,
@@ -2,12 +2,10 @@
2
2
  * Zod schemas for permission configuration validation.
3
3
  */
4
4
  import { z } from 'zod';
5
- // Permission target schema
6
5
  export const permissionTargetSchema = z.object({
7
6
  allowedUsers: z.array(z.string()).optional(),
8
7
  allowedGroups: z.array(z.string()).optional(),
9
8
  });
10
- // Path permission schema
11
9
  export const pathPermissionSchema = z.object({
12
10
  path: z.string().min(1),
13
11
  read: permissionTargetSchema.optional(),
@@ -28,11 +28,10 @@ export declare const uploadTargetUrlSchema: z.ZodEffects<z.ZodString, string, st
28
28
  /**
29
29
  * Where `/assets/…` is mounted for the editor's own previews (`media.publicBaseUrl`).
30
30
  *
31
- * Two changes from the `z.string().url()` this replaced, both deliberate. It now accepts a
32
- * site-relative path, which is what `.claude/future-tasks/editor-asset-mount-topology.md`
33
- * option 1 asks for — the absolute-only constraint was a validation choice, and the `basePath`
34
- * fallback in `editor/context/AssetContext.tsx` exists only to work around it. And it now
35
- * rejects non-http(s) schemes, which `z.string().url()` accepted: `publicBaseUrl: 'mailto:a@b.c'`
36
- * used to parse and then produce `/mailto:a@b.c/assets/…` at render time.
31
+ * Accepts an absolute http(s) URL, a protocol-relative `//host` URL, or a site-relative path
32
+ * (see `.claude/future-tasks/editor-asset-mount-topology.md` option 1 — the `basePath` fallback
33
+ * in `editor/context/AssetContext.tsx` exists for sites that need one and can't set an absolute
34
+ * value). Rejects non-http(s) schemes: a plain `z.string().url()` check would accept
35
+ * `publicBaseUrl: 'mailto:a@b.c'` and produce `/mailto:a@b.c/assets/…` at render time.
37
36
  */
38
37
  export declare const assetMountUrlSchema: z.ZodEffects<z.ZodString, string, string>;
@@ -34,12 +34,11 @@ export const uploadTargetUrlSchema = z
34
34
  /**
35
35
  * Where `/assets/…` is mounted for the editor's own previews (`media.publicBaseUrl`).
36
36
  *
37
- * Two changes from the `z.string().url()` this replaced, both deliberate. It now accepts a
38
- * site-relative path, which is what `.claude/future-tasks/editor-asset-mount-topology.md`
39
- * option 1 asks for — the absolute-only constraint was a validation choice, and the `basePath`
40
- * fallback in `editor/context/AssetContext.tsx` exists only to work around it. And it now
41
- * rejects non-http(s) schemes, which `z.string().url()` accepted: `publicBaseUrl: 'mailto:a@b.c'`
42
- * used to parse and then produce `/mailto:a@b.c/assets/…` at render time.
37
+ * Accepts an absolute http(s) URL, a protocol-relative `//host` URL, or a site-relative path
38
+ * (see `.claude/future-tasks/editor-asset-mount-topology.md` option 1 — the `basePath` fallback
39
+ * in `editor/context/AssetContext.tsx` exists for sites that need one and can't set an absolute
40
+ * value). Rejects non-http(s) schemes: a plain `z.string().url()` check would accept
41
+ * `publicBaseUrl: 'mailto:a@b.c'` and produce `/mailto:a@b.c/assets/…` at render time.
43
42
  */
44
43
  export const assetMountUrlSchema = z
45
44
  .string()
@@ -34,7 +34,7 @@ export type ReferenceOption = string | {
34
34
  label: string;
35
35
  value: string;
36
36
  };
37
- export interface BaseFieldConfig {
37
+ interface BaseFieldConfig {
38
38
  name: string;
39
39
  label?: string;
40
40
  description?: string;
@@ -50,7 +50,7 @@ export interface BaseFieldConfig {
50
50
  */
51
51
  isBody?: boolean;
52
52
  }
53
- export interface PrimitiveFieldConfig extends BaseFieldConfig {
53
+ interface PrimitiveFieldConfig extends BaseFieldConfig {
54
54
  type: PrimitiveFieldType;
55
55
  }
56
56
  export interface SelectFieldConfig extends BaseFieldConfig {
@@ -234,6 +234,19 @@ export type RootCollectionConfig = {
234
234
  * Contrast with EntrySchema, which is the field definitions for a single entry type.
235
235
  */
236
236
  export type BranchSchema = RootCollectionConfig;
237
+ /**
238
+ * Props for an auth provider's `SignInComponent`. The editor decides signed-out from the API's
239
+ * 401s alone; the provider owns the sign-in UI and reports back.
240
+ */
241
+ export interface EditorSignInProps {
242
+ /** Call when the provider believes the user is signed in; the editor re-checks with the API. */
243
+ onSignedIn: () => void;
244
+ /**
245
+ * The API rejected the credential after `onSignedIn` (e.g. a mismatched JWT key). Offer
246
+ * sign-out; calling `onSignedIn` again in response would loop.
247
+ */
248
+ sessionRejected: boolean;
249
+ }
237
250
  export interface CanopyEditorConfig {
238
251
  title?: string;
239
252
  subtitle?: string;
@@ -251,6 +264,11 @@ export interface CanopyEditorConfig {
251
264
  onAccountClick?: () => void;
252
265
  onLogoutClick?: () => void;
253
266
  AccountComponent?: React.ComponentType;
267
+ /**
268
+ * Shown instead of the editor on a 401, and over it when a session lapses mid-edit. Supplied
269
+ * by the auth provider; absent, the editor shows a plain notice.
270
+ */
271
+ SignInComponent?: React.ComponentType<EditorSignInProps>;
254
272
  }
255
273
  export type DefaultBranchAccess = 'allow' | 'deny';
256
274
  export type DefaultPathAccessLevel = 'allow' | 'deny';
@@ -273,7 +291,7 @@ export type GithubTokenEnvVar = string;
273
291
  export type CanopyOperatingMode = OperatingMode;
274
292
  export type ContentRoot = string;
275
293
  export type SourceRoot = string | undefined;
276
- export type DeployedAs = 'static' | 'server';
294
+ type DeployedAs = 'static' | 'server';
277
295
  /**
278
296
  * How the dev server surfaces working-tree content edits that diverge from the branch clone it serves.
279
297
  * - 'warn' (default): on startup and on content/** changes, log a warning naming files when the
@@ -286,7 +304,7 @@ export type DeployedAs = 'static' | 'server';
286
304
  */
287
305
  export type DevContentSyncMode = 'off' | 'warn';
288
306
  /** Dev-mode-only behavior. Ignored when `mode !== 'dev'`. */
289
- export interface DevConfig {
307
+ interface DevConfig {
290
308
  contentSync?: DevContentSyncMode;
291
309
  }
292
310
  /** Issue returned by the `validateEntry` hook. `error` rejects the save; `warning` is returned with it. */
@@ -322,7 +340,7 @@ export interface CanopyConfig {
322
340
  defaultBranchAccess?: DefaultBranchAccess;
323
341
  defaultPathAccess?: DefaultPathAccess;
324
342
  defaultBaseBranch?: DefaultBaseBranch;
325
- /** Which workspace to serve content from by default. Auto-detected from git HEAD in dev mode. */
343
+ /** Which workspace to serve content from by default — see {@link CanopyConfigInput.defaultActiveBranch}. */
326
344
  defaultActiveBranch?: string;
327
345
  defaultRemoteName?: DefaultRemoteName;
328
346
  defaultRemoteUrl?: DefaultRemoteUrl;
@@ -330,45 +348,24 @@ export interface CanopyConfig {
330
348
  gitBotAuthorEmail: GitBotAuthorEmail;
331
349
  githubTokenEnvVar?: GithubTokenEnvVar;
332
350
  mode: CanopyOperatingMode;
333
- /** How this build is deployed. 'static' = no request context, no auth. Default: 'server'. */
351
+ /** How this build is deployed — see {@link CanopyConfigInput.deployedAs}. */
334
352
  deployedAs: DeployedAs;
335
- /**
336
- * Escape hatch: allow git operations in prod mode to target a NETWORK remote
337
- * (http(s)://, ssh://, git://, or scp-like `user@host:path`) instead of the
338
- * EFS-local `remote.git` the standard AWS Lambda+worker topology expects.
339
- * Default false/unset. The standard topology's Lambda has no internet access
340
- * and would hang trying to reach a network remote directly — only set this
341
- * for prod hosts that DO have internet (e.g. a single-VM deployment) and
342
- * intentionally run git against a network remote.
343
- */
353
+ /** Escape hatch for a prod host with real internet access — see {@link CanopyConfigInput.allowNetworkRemoteInProd}. */
344
354
  allowNetworkRemoteInProd?: boolean;
345
355
  settingsBranch?: string;
346
356
  autoCreateSettingsPR?: boolean;
347
357
  deploymentName?: string;
348
358
  contentRoot: ContentRoot;
349
359
  sourceRoot?: SourceRoot;
350
- /**
351
- * The deployment prefix the host Next.js app is served under (e.g. `/preview-123`), matching
352
- * that app's `next.config` `basePath`. CanopyCMS cannot read `next.config` at runtime, so this
353
- * must be stated here explicitly if the app sets one — without it, editor requests, the preview
354
- * iframe `src`, and preview↔editor path matching all target the un-prefixed root and 404 or
355
- * silently stop syncing. Normalized (leading slash added, trailing slashes stripped) via
356
- * `joinUrlPrefix` at every use site; unset/empty means the app is served at its origin's root.
357
- *
358
- * NOT the same option as `collectStaticParams`'s `basePath` in
359
- * `packages/canopycms-next/src/static.ts` — that one means "the route prefix of a nested
360
- * catch-all route" (e.g. `/docs` for `app/docs/[[...slug]]`) and *filters* enumerated entries
361
- * down to that prefix. Passing this deployment basePath to `collectStaticParams` instead would
362
- * silently filter out every entry (zero static params, a build that goes green with no pages).
363
- */
360
+ /** Deployment prefix the host app is served under — see {@link CanopyConfigInput.basePath}. */
364
361
  basePath?: string;
365
362
  editor?: CanopyEditorConfig;
366
363
  authPlugin?: AuthPlugin;
367
- /** Custom URL resolver for entry links. Overrides the default URL computation. */
364
+ /** Custom URL resolver for entry links — see {@link CanopyConfigInput.entryLinkUrl}. */
368
365
  entryLinkUrl?: EntryLinkUrlResolver;
369
- /** Save-time validation hook. 'error' issues reject the save; 'warning' issues are returned with it. */
366
+ /** Save-time validation hook — see {@link CanopyConfigInput.validateEntry}. */
370
367
  validateEntry?: ValidateEntryHook;
371
- /** Dev-mode-only behavior (content-sync divergence detection). Ignored when mode !== 'dev'. */
368
+ /** Dev-mode-only behavior — see {@link CanopyConfigInput.dev}. */
372
369
  dev?: DevConfig;
373
370
  }
374
371
  /**
@@ -409,7 +406,20 @@ export interface CanopyConfigInput {
409
406
  deploymentName?: string;
410
407
  contentRoot?: string;
411
408
  sourceRoot?: string;
412
- /** See `CanopyConfig.basePath` — the deployment prefix the host Next.js app is served under. */
409
+ /**
410
+ * The deployment prefix the host Next.js app is served under (e.g. `/preview-123`), matching
411
+ * that app's `next.config` `basePath`. CanopyCMS cannot read `next.config` at runtime, so this
412
+ * must be stated here explicitly if the app sets one — without it, editor requests, the preview
413
+ * iframe `src`, and preview↔editor path matching all target the un-prefixed root and 404 or
414
+ * silently stop syncing. Normalized (leading slash added, trailing slashes stripped) via
415
+ * `joinUrlPrefix` at every use site; unset/empty means the app is served at its origin's root.
416
+ *
417
+ * NOT the same option as `collectStaticParams`'s `basePath` in
418
+ * `packages/canopycms-next/src/static.ts` — that one means "the route prefix of a nested
419
+ * catch-all route" (e.g. `/docs` for `app/docs/[[...slug]]`) and *filters* enumerated entries
420
+ * down to that prefix. Passing this deployment basePath to `collectStaticParams` instead would
421
+ * silently filter out every entry (zero static params, a build that goes green with no pages).
422
+ */
413
423
  basePath?: string;
414
424
  editor?: CanopyEditorConfig;
415
425
  authPlugin?: AuthPlugin;
@@ -478,5 +488,7 @@ export interface ClientOnlyFields {
478
488
  onAccountClick?: () => void;
479
489
  onLogoutClick?: () => void | Promise<void>;
480
490
  AccountComponent?: React.ComponentType;
491
+ SignInComponent?: React.ComponentType<EditorSignInProps>;
481
492
  };
482
493
  }
494
+ export {};
@@ -2,7 +2,6 @@
2
2
  * Type definitions for CanopyCMS configuration.
3
3
  * These are pure TypeScript types - Zod schemas are in ./schemas/
4
4
  */
5
- // Field types
6
5
  export const primitiveFieldTypes = [
7
6
  'string',
8
7
  'number',
package/dist/config.d.ts CHANGED
@@ -1,9 +1,2 @@
1
- /**
2
- * CanopyCMS Configuration
3
- *
4
- * This file re-exports from the config module for backward compatibility.
5
- * New code should import directly from './config/index.js' or './config'.
6
- *
7
- * @module config
8
- */
1
+ /** Barrel re-export of the config module (`./config/index`). */
9
2
  export * from './config/index.js';
package/dist/config.js CHANGED
@@ -1,10 +1,2 @@
1
- /**
2
- * CanopyCMS Configuration
3
- *
4
- * This file re-exports from the config module for backward compatibility.
5
- * New code should import directly from './config/index.js' or './config'.
6
- *
7
- * @module config
8
- */
9
- // Re-export everything from the config module
1
+ /** Barrel re-export of the config module (`./config/index`). */
10
2
  export * from './config/index.js';