octocms 0.4.13 → 0.4.16

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 (796) hide show
  1. package/dist/admin/AdminApp.d.ts +1 -1
  2. package/dist/admin/AdminApp.js +2 -2
  3. package/dist/admin/AdminApp.js.map +1 -1
  4. package/dist/admin/actions/agent.d.ts +3 -3
  5. package/dist/admin/actions/agent.js.map +1 -1
  6. package/dist/admin/actions/media.d.ts.map +1 -1
  7. package/dist/admin/actions/media.js +3 -1
  8. package/dist/admin/actions/media.js.map +1 -1
  9. package/dist/admin/pages/AdminErrorView.d.ts.map +1 -1
  10. package/dist/admin/pages/AdminErrorView.js +9 -9
  11. package/dist/admin/pages/AdminErrorView.js.map +1 -1
  12. package/dist/admin/pages/AdminLayout.d.ts +1 -1
  13. package/dist/admin/pages/AdminLayout.d.ts.map +1 -1
  14. package/dist/admin/pages/AdminLayout.js +2 -2
  15. package/dist/admin/pages/AdminLayout.js.map +1 -1
  16. package/dist/admin/pages/ChatPage.d.ts +3 -3
  17. package/dist/admin/pages/ChatPage.d.ts.map +1 -1
  18. package/dist/admin/pages/ChatPage.js +8 -5
  19. package/dist/admin/pages/ChatPage.js.map +1 -1
  20. package/dist/admin/pages/CollectionPage.d.ts.map +1 -1
  21. package/dist/admin/pages/CollectionPage.js +5 -1
  22. package/dist/admin/pages/CollectionPage.js.map +1 -1
  23. package/dist/admin/pages/ContentModelPage.d.ts.map +1 -1
  24. package/dist/admin/pages/ContentModelPage.js +5 -1
  25. package/dist/admin/pages/ContentModelPage.js.map +1 -1
  26. package/dist/admin/pages/ContentPage.d.ts.map +1 -1
  27. package/dist/admin/pages/ContentPage.js +5 -1
  28. package/dist/admin/pages/ContentPage.js.map +1 -1
  29. package/dist/admin/pages/ContentTypePage.d.ts.map +1 -1
  30. package/dist/admin/pages/ContentTypePage.js +6 -2
  31. package/dist/admin/pages/ContentTypePage.js.map +1 -1
  32. package/dist/admin/pages/EntryPage.d.ts.map +1 -1
  33. package/dist/admin/pages/EntryPage.js +5 -1
  34. package/dist/admin/pages/EntryPage.js.map +1 -1
  35. package/dist/admin/pages/MediaAssetPage.d.ts.map +1 -1
  36. package/dist/admin/pages/MediaAssetPage.js +6 -2
  37. package/dist/admin/pages/MediaAssetPage.js.map +1 -1
  38. package/dist/admin/pages/MediaPage.d.ts.map +1 -1
  39. package/dist/admin/pages/MediaPage.js +6 -2
  40. package/dist/admin/pages/MediaPage.js.map +1 -1
  41. package/dist/admin/theme/toggle.d.ts.map +1 -1
  42. package/dist/admin/theme/toggle.js +27 -27
  43. package/dist/admin/theme/toggle.js.map +1 -1
  44. package/dist/agent/chatSetup.d.ts +19 -0
  45. package/dist/agent/chatSetup.d.ts.map +1 -0
  46. package/dist/agent/chatSetup.js +119 -0
  47. package/dist/agent/chatSetup.js.map +1 -0
  48. package/dist/agent/featureFlag.d.ts +3 -3
  49. package/dist/agent/featureFlag.js.map +1 -1
  50. package/dist/agent/index.cjs +75 -5309
  51. package/dist/agent/index.cjs.map +1 -1
  52. package/dist/{agentDocs-M3R2CPUQ.js → agentDocs-QZ4NOQVH.js} +2 -2
  53. package/dist/{chunk-DCDFWNC6.js → chunk-I7VNI2IG.js} +4 -7
  54. package/dist/{chunk-DCDFWNC6.js.map → chunk-I7VNI2IG.js.map} +1 -1
  55. package/dist/chunk-TOUAHFDW.js +7 -0
  56. package/dist/{chunk-NAHOP7TG.js.map → chunk-TOUAHFDW.js.map} +1 -1
  57. package/dist/cli/index.js +4 -4
  58. package/dist/cli/lib/templates.js +3 -6
  59. package/dist/cli/lib/templates.js.map +1 -1
  60. package/dist/components/Chat/ChatAgentSetup.d.ts +7 -0
  61. package/dist/components/Chat/ChatAgentSetup.d.ts.map +1 -0
  62. package/dist/components/Chat/ChatAgentSetup.js +37 -0
  63. package/dist/components/Chat/ChatAgentSetup.js.map +1 -0
  64. package/dist/components/Chat/ChatPage.d.ts +6 -1
  65. package/dist/components/Chat/ChatPage.d.ts.map +1 -1
  66. package/dist/components/Chat/ChatPage.js +123 -128
  67. package/dist/components/Chat/ChatPage.js.map +1 -1
  68. package/dist/components/Chat/ChatSidebar.d.ts +10 -0
  69. package/dist/components/Chat/ChatSidebar.d.ts.map +1 -0
  70. package/dist/components/Chat/ChatSidebar.js +45 -0
  71. package/dist/components/Chat/ChatSidebar.js.map +1 -0
  72. package/dist/components/Chat/Composer.d.ts.map +1 -1
  73. package/dist/components/Chat/Composer.js +28 -45
  74. package/dist/components/Chat/Composer.js.map +1 -1
  75. package/dist/components/Chat/Message.d.ts.map +1 -1
  76. package/dist/components/Chat/Message.js +40 -39
  77. package/dist/components/Chat/Message.js.map +1 -1
  78. package/dist/components/Chat/ProposalCard.d.ts.map +1 -1
  79. package/dist/components/Chat/ProposalCard.js +56 -67
  80. package/dist/components/Chat/ProposalCard.js.map +1 -1
  81. package/dist/components/Chat/ToolCallCard.d.ts.map +1 -1
  82. package/dist/components/Chat/ToolCallCard.js +29 -38
  83. package/dist/components/Chat/ToolCallCard.js.map +1 -1
  84. package/dist/components/Chat/chatStorage.d.ts +64 -0
  85. package/dist/components/Chat/chatStorage.d.ts.map +1 -0
  86. package/dist/components/Chat/chatStorage.js +154 -0
  87. package/dist/components/Chat/chatStorage.js.map +1 -0
  88. package/dist/components/Chat/useChatHistory.d.ts +12 -0
  89. package/dist/components/Chat/useChatHistory.d.ts.map +1 -0
  90. package/dist/components/Chat/useChatHistory.js +196 -0
  91. package/dist/components/Chat/useChatHistory.js.map +1 -0
  92. package/dist/components/Chat/useChatStream.d.ts +6 -0
  93. package/dist/components/Chat/useChatStream.d.ts.map +1 -1
  94. package/dist/components/Chat/useChatStream.js +31 -2
  95. package/dist/components/Chat/useChatStream.js.map +1 -1
  96. package/dist/components/CommandK/CommandK.d.ts +1 -1
  97. package/dist/components/CommandK/CommandK.d.ts.map +1 -1
  98. package/dist/components/CommandK/CommandK.js +100 -116
  99. package/dist/components/CommandK/CommandK.js.map +1 -1
  100. package/dist/components/CommandK/parts.d.ts.map +1 -1
  101. package/dist/components/CommandK/parts.js +9 -11
  102. package/dist/components/CommandK/parts.js.map +1 -1
  103. package/dist/components/ContentModel/ConditionalBranchesEditor.d.ts.map +1 -1
  104. package/dist/components/ContentModel/ConditionalBranchesEditor.js +40 -45
  105. package/dist/components/ContentModel/ConditionalBranchesEditor.js.map +1 -1
  106. package/dist/components/ContentModel/ContentModelList.d.ts.map +1 -1
  107. package/dist/components/ContentModel/ContentModelList.js +65 -80
  108. package/dist/components/ContentModel/ContentModelList.js.map +1 -1
  109. package/dist/components/ContentModel/ContentTypeDetail.d.ts.map +1 -1
  110. package/dist/components/ContentModel/ContentTypeDetail.js +253 -280
  111. package/dist/components/ContentModel/ContentTypeDetail.js.map +1 -1
  112. package/dist/components/ContentModel/CreateContentTypeDialog.d.ts.map +1 -1
  113. package/dist/components/ContentModel/CreateContentTypeDialog.js +42 -30
  114. package/dist/components/ContentModel/CreateContentTypeDialog.js.map +1 -1
  115. package/dist/components/ContentModel/DeleteContentTypeDialog.d.ts.map +1 -1
  116. package/dist/components/ContentModel/DeleteContentTypeDialog.js +14 -15
  117. package/dist/components/ContentModel/DeleteContentTypeDialog.js.map +1 -1
  118. package/dist/components/ContentModel/DeleteFieldDialog.d.ts.map +1 -1
  119. package/dist/components/ContentModel/DeleteFieldDialog.js +27 -20
  120. package/dist/components/ContentModel/DeleteFieldDialog.js.map +1 -1
  121. package/dist/components/ContentModel/EditContentTypeDialog.d.ts.map +1 -1
  122. package/dist/components/ContentModel/EditContentTypeDialog.js +46 -34
  123. package/dist/components/ContentModel/EditContentTypeDialog.js.map +1 -1
  124. package/dist/components/ContentModel/FieldDialog.d.ts.map +1 -1
  125. package/dist/components/ContentModel/FieldDialog.js +95 -84
  126. package/dist/components/ContentModel/FieldDialog.js.map +1 -1
  127. package/dist/components/ContentModel/RichTextOptionsEditor.d.ts.map +1 -1
  128. package/dist/components/ContentModel/RichTextOptionsEditor.js +90 -81
  129. package/dist/components/ContentModel/RichTextOptionsEditor.js.map +1 -1
  130. package/dist/components/ContentModel/SchemaImpactList.d.ts.map +1 -1
  131. package/dist/components/ContentModel/SchemaImpactList.js +19 -36
  132. package/dist/components/ContentModel/SchemaImpactList.js.map +1 -1
  133. package/dist/components/ContentModel/SchemaOptionFieldInput.d.ts.map +1 -1
  134. package/dist/components/ContentModel/SchemaOptionFieldInput.js +63 -84
  135. package/dist/components/ContentModel/SchemaOptionFieldInput.js.map +1 -1
  136. package/dist/components/ContentModel/skeletons/ContentModelListPageSkeleton.d.ts +3 -0
  137. package/dist/components/ContentModel/skeletons/ContentModelListPageSkeleton.d.ts.map +1 -0
  138. package/dist/components/ContentModel/skeletons/ContentModelListPageSkeleton.js +15 -0
  139. package/dist/components/ContentModel/skeletons/ContentModelListPageSkeleton.js.map +1 -0
  140. package/dist/components/ContentModel/skeletons/ContentTypeDetailPageSkeleton.d.ts +3 -0
  141. package/dist/components/ContentModel/skeletons/ContentTypeDetailPageSkeleton.d.ts.map +1 -0
  142. package/dist/components/ContentModel/skeletons/ContentTypeDetailPageSkeleton.js +11 -0
  143. package/dist/components/ContentModel/skeletons/ContentTypeDetailPageSkeleton.js.map +1 -0
  144. package/dist/components/ContentModel/skeletons/FieldTableSkeleton.js +3 -3
  145. package/dist/components/ContentModel/skeletons/FieldTableSkeleton.js.map +1 -1
  146. package/dist/components/ContentModel/skeletons/SchemaTableSkeleton.d.ts.map +1 -1
  147. package/dist/components/ContentModel/skeletons/SchemaTableSkeleton.js +4 -12
  148. package/dist/components/ContentModel/skeletons/SchemaTableSkeleton.js.map +1 -1
  149. package/dist/components/Dashboard/DashboardContent.d.ts.map +1 -1
  150. package/dist/components/Dashboard/DashboardContent.js +87 -114
  151. package/dist/components/Dashboard/DashboardContent.js.map +1 -1
  152. package/dist/components/Dashboard/RecentPullRequests.d.ts.map +1 -1
  153. package/dist/components/Dashboard/RecentPullRequests.js +33 -45
  154. package/dist/components/Dashboard/RecentPullRequests.js.map +1 -1
  155. package/dist/components/Dashboard/skeletons/ContentPageChromeSkeleton.d.ts +2 -7
  156. package/dist/components/Dashboard/skeletons/ContentPageChromeSkeleton.d.ts.map +1 -1
  157. package/dist/components/Dashboard/skeletons/ContentPageChromeSkeleton.js +5 -20
  158. package/dist/components/Dashboard/skeletons/ContentPageChromeSkeleton.js.map +1 -1
  159. package/dist/components/Dashboard/skeletons/ContentTableSkeleton.js +9 -9
  160. package/dist/components/Dashboard/skeletons/ContentTableSkeleton.js.map +1 -1
  161. package/dist/components/Dashboard/skeletons/DashboardCollectionPageSkeleton.d.ts +3 -0
  162. package/dist/components/Dashboard/skeletons/DashboardCollectionPageSkeleton.d.ts.map +1 -0
  163. package/dist/components/Dashboard/skeletons/DashboardCollectionPageSkeleton.js +10 -0
  164. package/dist/components/Dashboard/skeletons/DashboardCollectionPageSkeleton.js.map +1 -0
  165. package/dist/components/Dashboard/skeletons/DashboardPageSkeleton.d.ts +9 -0
  166. package/dist/components/Dashboard/skeletons/DashboardPageSkeleton.d.ts.map +1 -0
  167. package/dist/components/Dashboard/skeletons/DashboardPageSkeleton.js +16 -0
  168. package/dist/components/Dashboard/skeletons/DashboardPageSkeleton.js.map +1 -0
  169. package/dist/components/Dashboard/skeletons/LeftPanelSkeleton.d.ts.map +1 -1
  170. package/dist/components/Dashboard/skeletons/LeftPanelSkeleton.js +7 -18
  171. package/dist/components/Dashboard/skeletons/LeftPanelSkeleton.js.map +1 -1
  172. package/dist/components/DiffView/DiffHunk.d.ts.map +1 -1
  173. package/dist/components/DiffView/DiffHunk.js +12 -40
  174. package/dist/components/DiffView/DiffHunk.js.map +1 -1
  175. package/dist/components/DiffView/DiffView.d.ts.map +1 -1
  176. package/dist/components/DiffView/DiffView.js +33 -52
  177. package/dist/components/DiffView/DiffView.js.map +1 -1
  178. package/dist/components/EditPost/EditPost.d.ts.map +1 -1
  179. package/dist/components/EditPost/EditPost.js +139 -200
  180. package/dist/components/EditPost/EditPost.js.map +1 -1
  181. package/dist/components/EditPost/skeletons/EditPostPageSkeleton.d.ts +3 -0
  182. package/dist/components/EditPost/skeletons/EditPostPageSkeleton.d.ts.map +1 -0
  183. package/dist/components/EditPost/skeletons/EditPostPageSkeleton.js +21 -0
  184. package/dist/components/EditPost/skeletons/EditPostPageSkeleton.js.map +1 -0
  185. package/dist/components/EditPost/skeletons/EntryFormSkeleton.d.ts.map +1 -1
  186. package/dist/components/EditPost/skeletons/EntryFormSkeleton.js +1 -9
  187. package/dist/components/EditPost/skeletons/EntryFormSkeleton.js.map +1 -1
  188. package/dist/components/EditPost/skeletons/EntrySidebarSkeleton.d.ts.map +1 -1
  189. package/dist/components/EditPost/skeletons/EntrySidebarSkeleton.js +12 -20
  190. package/dist/components/EditPost/skeletons/EntrySidebarSkeleton.js.map +1 -1
  191. package/dist/components/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
  192. package/dist/components/{ErrorBoundary.js → ErrorBoundary/ErrorBoundary.js} +15 -21
  193. package/dist/components/ErrorBoundary/ErrorBoundary.js.map +1 -0
  194. package/dist/components/HistorySection/HistorySection.d.ts.map +1 -1
  195. package/dist/components/HistorySection/HistorySection.js +23 -42
  196. package/dist/components/HistorySection/HistorySection.js.map +1 -1
  197. package/dist/components/InlineEntryEditor/InlineEntryEditor.d.ts.map +1 -1
  198. package/dist/components/InlineEntryEditor/InlineEntryEditor.js +120 -123
  199. package/dist/components/InlineEntryEditor/InlineEntryEditor.js.map +1 -1
  200. package/dist/components/Layout/BranchSelectorDialog.d.ts +9 -0
  201. package/dist/components/Layout/BranchSelectorDialog.d.ts.map +1 -0
  202. package/dist/components/Layout/BranchSelectorDialog.js +130 -0
  203. package/dist/components/Layout/BranchSelectorDialog.js.map +1 -0
  204. package/dist/components/Layout/CreateBranchDialog.d.ts.map +1 -0
  205. package/dist/components/{CreateBranchDialog.js → Layout/CreateBranchDialog.js} +16 -16
  206. package/dist/components/Layout/CreateBranchDialog.js.map +1 -0
  207. package/dist/components/Layout/Layout.d.ts.map +1 -1
  208. package/dist/components/Layout/Layout.js +18 -26
  209. package/dist/components/Layout/Layout.js.map +1 -1
  210. package/dist/components/Layout/LeftNavItem.d.ts.map +1 -1
  211. package/dist/components/Layout/LeftNavItem.js +7 -7
  212. package/dist/components/Layout/LeftNavItem.js.map +1 -1
  213. package/dist/components/Layout/Page.d.ts +16 -0
  214. package/dist/components/Layout/Page.d.ts.map +1 -0
  215. package/dist/components/Layout/Page.js +47 -0
  216. package/dist/components/Layout/Page.js.map +1 -0
  217. package/dist/components/Layout/TopHeader.d.ts +1 -1
  218. package/dist/components/Layout/TopHeader.d.ts.map +1 -1
  219. package/dist/components/Layout/TopHeader.js +70 -165
  220. package/dist/components/Layout/TopHeader.js.map +1 -1
  221. package/dist/components/Layout/UserAccountDialog.d.ts +12 -0
  222. package/dist/components/Layout/UserAccountDialog.d.ts.map +1 -0
  223. package/dist/components/Layout/UserAccountDialog.js +48 -0
  224. package/dist/components/Layout/UserAccountDialog.js.map +1 -0
  225. package/dist/components/Layout/skeletons/AgentNavSkeleton.js +1 -1
  226. package/dist/components/Layout/skeletons/AgentNavSkeleton.js.map +1 -1
  227. package/dist/components/Layout/skeletons/BranchChipSkeleton.d.ts.map +1 -1
  228. package/dist/components/Layout/skeletons/BranchChipSkeleton.js +1 -8
  229. package/dist/components/Layout/skeletons/BranchChipSkeleton.js.map +1 -1
  230. package/dist/components/Layout/skeletons/NeutralPageSkeleton.d.ts +3 -0
  231. package/dist/components/Layout/skeletons/NeutralPageSkeleton.d.ts.map +1 -0
  232. package/dist/components/Layout/skeletons/NeutralPageSkeleton.js +11 -0
  233. package/dist/components/Layout/skeletons/NeutralPageSkeleton.js.map +1 -0
  234. package/dist/components/Layout/skeletons/PageChromeSkeleton.d.ts +19 -0
  235. package/dist/components/Layout/skeletons/PageChromeSkeleton.d.ts.map +1 -0
  236. package/dist/components/Layout/skeletons/PageChromeSkeleton.js +31 -0
  237. package/dist/components/Layout/skeletons/PageChromeSkeleton.js.map +1 -0
  238. package/dist/components/Layout/skeletons/RouteMainSlotSkeleton.d.ts +9 -0
  239. package/dist/components/Layout/skeletons/RouteMainSlotSkeleton.d.ts.map +1 -0
  240. package/dist/components/Layout/skeletons/RouteMainSlotSkeleton.js +15 -0
  241. package/dist/components/Layout/skeletons/RouteMainSlotSkeleton.js.map +1 -0
  242. package/dist/components/Layout/skeletons/TopHeaderSkeleton.d.ts.map +1 -1
  243. package/dist/components/Layout/skeletons/TopHeaderSkeleton.js +10 -17
  244. package/dist/components/Layout/skeletons/TopHeaderSkeleton.js.map +1 -1
  245. package/dist/components/Layout/skeletons/routeSkeletons.d.ts +16 -0
  246. package/dist/components/Layout/skeletons/routeSkeletons.d.ts.map +1 -0
  247. package/dist/components/Layout/skeletons/routeSkeletons.js +48 -0
  248. package/dist/components/Layout/skeletons/routeSkeletons.js.map +1 -0
  249. package/dist/components/LinkedBySection/LinkedBySection.js +13 -13
  250. package/dist/components/LinkedBySection/LinkedBySection.js.map +1 -1
  251. package/dist/components/MediaAsset/MediaAsset.d.ts +1 -1
  252. package/dist/components/MediaAsset/MediaAsset.d.ts.map +1 -1
  253. package/dist/components/MediaAsset/MediaAsset.js +126 -136
  254. package/dist/components/MediaAsset/MediaAsset.js.map +1 -1
  255. package/dist/components/MediaAsset/skeletons/MediaAssetPageSkeleton.d.ts +3 -0
  256. package/dist/components/MediaAsset/skeletons/MediaAssetPageSkeleton.d.ts.map +1 -0
  257. package/dist/components/MediaAsset/skeletons/MediaAssetPageSkeleton.js +21 -0
  258. package/dist/components/MediaAsset/skeletons/MediaAssetPageSkeleton.js.map +1 -0
  259. package/dist/components/MediaAsset/skeletons/MediaMetadataFormSkeleton.d.ts.map +1 -1
  260. package/dist/components/MediaAsset/skeletons/MediaMetadataFormSkeleton.js +26 -22
  261. package/dist/components/MediaAsset/skeletons/MediaMetadataFormSkeleton.js.map +1 -1
  262. package/dist/components/MediaAsset/skeletons/MediaPreviewSkeleton.d.ts.map +1 -1
  263. package/dist/components/MediaAsset/skeletons/MediaPreviewSkeleton.js +1 -9
  264. package/dist/components/MediaAsset/skeletons/MediaPreviewSkeleton.js.map +1 -1
  265. package/dist/components/MediaManager/CreateFolderDialog.d.ts.map +1 -1
  266. package/dist/components/MediaManager/CreateFolderDialog.js +15 -8
  267. package/dist/components/MediaManager/CreateFolderDialog.js.map +1 -1
  268. package/dist/components/MediaManager/DeleteFolderDialog.d.ts.map +1 -1
  269. package/dist/components/MediaManager/DeleteFolderDialog.js +1 -2
  270. package/dist/components/MediaManager/DeleteFolderDialog.js.map +1 -1
  271. package/dist/components/MediaManager/MarkdownImageEditToolbar.d.ts.map +1 -1
  272. package/dist/components/MediaManager/MarkdownImageEditToolbar.js +7 -9
  273. package/dist/components/MediaManager/MarkdownImageEditToolbar.js.map +1 -1
  274. package/dist/components/MediaManager/MarkdownInsertImageDialog.d.ts.map +1 -1
  275. package/dist/components/MediaManager/MarkdownInsertImageDialog.js +6 -9
  276. package/dist/components/MediaManager/MarkdownInsertImageDialog.js.map +1 -1
  277. package/dist/components/MediaManager/MediaLeftPanel.d.ts.map +1 -1
  278. package/dist/components/MediaManager/MediaLeftPanel.js +21 -23
  279. package/dist/components/MediaManager/MediaLeftPanel.js.map +1 -1
  280. package/dist/components/MediaManager/MediaListTable.d.ts.map +1 -1
  281. package/dist/components/MediaManager/MediaListTable.js +15 -21
  282. package/dist/components/MediaManager/MediaListTable.js.map +1 -1
  283. package/dist/components/MediaManager/MediaManager.d.ts.map +1 -1
  284. package/dist/components/MediaManager/MediaManager.js +101 -151
  285. package/dist/components/MediaManager/MediaManager.js.map +1 -1
  286. package/dist/components/MediaManager/MediaSelectDialog.js +22 -64
  287. package/dist/components/MediaManager/MediaSelectDialog.js.map +1 -1
  288. package/dist/components/MediaManager/MediaUploadBar.d.ts.map +1 -1
  289. package/dist/components/MediaManager/MediaUploadBar.js +9 -10
  290. package/dist/components/MediaManager/MediaUploadBar.js.map +1 -1
  291. package/dist/components/MediaManager/MediaUploadDialog.d.ts.map +1 -1
  292. package/dist/components/MediaManager/MediaUploadDialog.js +18 -11
  293. package/dist/components/MediaManager/MediaUploadDialog.js.map +1 -1
  294. package/dist/components/MediaManager/MediaViewModeSwitcher.d.ts +8 -0
  295. package/dist/components/MediaManager/MediaViewModeSwitcher.d.ts.map +1 -0
  296. package/dist/components/MediaManager/MediaViewModeSwitcher.js +14 -0
  297. package/dist/components/MediaManager/MediaViewModeSwitcher.js.map +1 -0
  298. package/dist/components/MediaManager/skeletons/MediaGridSkeleton.d.ts.map +1 -1
  299. package/dist/components/MediaManager/skeletons/MediaGridSkeleton.js +4 -12
  300. package/dist/components/MediaManager/skeletons/MediaGridSkeleton.js.map +1 -1
  301. package/dist/components/MediaManager/skeletons/MediaLeftPanelSkeleton.d.ts.map +1 -1
  302. package/dist/components/MediaManager/skeletons/MediaLeftPanelSkeleton.js +5 -13
  303. package/dist/components/MediaManager/skeletons/MediaLeftPanelSkeleton.js.map +1 -1
  304. package/dist/components/MediaManager/skeletons/MediaListTableSkeleton.d.ts.map +1 -1
  305. package/dist/components/MediaManager/skeletons/MediaListTableSkeleton.js +7 -15
  306. package/dist/components/MediaManager/skeletons/MediaListTableSkeleton.js.map +1 -1
  307. package/dist/components/MediaManager/skeletons/MediaManagerMainSkeleton.d.ts +3 -0
  308. package/dist/components/MediaManager/skeletons/MediaManagerMainSkeleton.d.ts.map +1 -0
  309. package/dist/components/MediaManager/skeletons/MediaManagerMainSkeleton.js +15 -0
  310. package/dist/components/MediaManager/skeletons/MediaManagerMainSkeleton.js.map +1 -0
  311. package/dist/components/MediaManager/skeletons/MediaManagerPageSkeleton.d.ts +3 -0
  312. package/dist/components/MediaManager/skeletons/MediaManagerPageSkeleton.d.ts.map +1 -0
  313. package/dist/components/MediaManager/skeletons/MediaManagerPageSkeleton.js +21 -0
  314. package/dist/components/MediaManager/skeletons/MediaManagerPageSkeleton.js.map +1 -0
  315. package/dist/components/public/MarkdownContent.d.ts.map +1 -1
  316. package/dist/components/public/MarkdownContent.js +1 -2
  317. package/dist/components/public/MarkdownContent.js.map +1 -1
  318. package/dist/components/public/RichTextContent.d.ts.map +1 -1
  319. package/dist/components/public/RichTextContent.js +19 -8
  320. package/dist/components/public/RichTextContent.js.map +1 -1
  321. package/dist/components/public/SearchBox.d.ts.map +1 -1
  322. package/dist/components/public/SearchBox.js +32 -60
  323. package/dist/components/public/SearchBox.js.map +1 -1
  324. package/dist/components/public/index.cjs +6 -413
  325. package/dist/components/public/index.cjs.map +1 -1
  326. package/dist/components/skeletons/MainSlotSkeleton.d.ts +0 -7
  327. package/dist/components/skeletons/MainSlotSkeleton.d.ts.map +1 -1
  328. package/dist/components/skeletons/MainSlotSkeleton.js +4 -17
  329. package/dist/components/skeletons/MainSlotSkeleton.js.map +1 -1
  330. package/dist/components/skeletons/blocks.d.ts.map +1 -1
  331. package/dist/components/skeletons/blocks.js +15 -7
  332. package/dist/components/skeletons/blocks.js.map +1 -1
  333. package/dist/components/skeletons/index.d.ts +4 -4
  334. package/dist/components/skeletons/index.d.ts.map +1 -1
  335. package/dist/components/skeletons/index.js +1 -2
  336. package/dist/components/skeletons/index.js.map +1 -1
  337. package/dist/components/skeletons/primitives.d.ts +2 -2
  338. package/dist/components/skeletons/primitives.d.ts.map +1 -1
  339. package/dist/components/skeletons/primitives.js +3 -3
  340. package/dist/components/skeletons/primitives.js.map +1 -1
  341. package/dist/components/test/dndTestUtils.d.ts +7 -0
  342. package/dist/components/test/dndTestUtils.d.ts.map +1 -0
  343. package/dist/components/test/dndTestUtils.js +15 -0
  344. package/dist/components/test/dndTestUtils.js.map +1 -0
  345. package/dist/components/ui/Avatar/Avatar.d.ts +5 -0
  346. package/dist/components/ui/Avatar/Avatar.d.ts.map +1 -0
  347. package/dist/components/ui/Avatar/Avatar.js +63 -0
  348. package/dist/components/ui/Avatar/Avatar.js.map +1 -0
  349. package/dist/components/ui/{branch-chip.d.ts → BranchChip/BranchChip.d.ts} +2 -5
  350. package/dist/components/ui/BranchChip/BranchChip.d.ts.map +1 -0
  351. package/dist/components/ui/BranchChip/BranchChip.js +47 -0
  352. package/dist/components/ui/BranchChip/BranchChip.js.map +1 -0
  353. package/dist/components/ui/Button/Button.d.ts +15 -0
  354. package/dist/components/ui/Button/Button.d.ts.map +1 -0
  355. package/dist/components/ui/Button/Button.js +49 -0
  356. package/dist/components/ui/Button/Button.js.map +1 -0
  357. package/dist/components/ui/Card/Card.d.ts +6 -0
  358. package/dist/components/ui/Card/Card.d.ts.map +1 -0
  359. package/dist/components/ui/{card.js → Card/Card.js} +12 -22
  360. package/dist/components/ui/Card/Card.js.map +1 -0
  361. package/dist/components/ui/{chip.d.ts → Chip/Chip.d.ts} +1 -1
  362. package/dist/components/ui/Chip/Chip.d.ts.map +1 -0
  363. package/dist/components/ui/Chip/Chip.js +24 -0
  364. package/dist/components/ui/Chip/Chip.js.map +1 -0
  365. package/dist/components/ui/Dialog/Dialog.d.ts +32 -0
  366. package/dist/components/ui/Dialog/Dialog.d.ts.map +1 -0
  367. package/dist/components/ui/Dialog/Dialog.js +194 -0
  368. package/dist/components/ui/Dialog/Dialog.js.map +1 -0
  369. package/dist/components/ui/DropdownMenu/DropdownMenu.d.ts +66 -0
  370. package/dist/components/ui/DropdownMenu/DropdownMenu.d.ts.map +1 -0
  371. package/dist/components/ui/DropdownMenu/DropdownMenu.js +308 -0
  372. package/dist/components/ui/DropdownMenu/DropdownMenu.js.map +1 -0
  373. package/dist/components/ui/{field.d.ts → FormField/Field.d.ts} +1 -1
  374. package/dist/components/ui/FormField/Field.d.ts.map +1 -0
  375. package/dist/components/ui/FormField/Field.js +41 -0
  376. package/dist/components/ui/FormField/Field.js.map +1 -0
  377. package/dist/components/{FieldShell.d.ts → ui/FormField/FieldShell.d.ts} +2 -2
  378. package/dist/components/ui/FormField/FieldShell.d.ts.map +1 -0
  379. package/dist/components/ui/FormField/FieldShell.js +29 -0
  380. package/dist/components/ui/FormField/FieldShell.js.map +1 -0
  381. package/dist/components/ui/FormField/FormBooleanField.d.ts.map +1 -0
  382. package/dist/components/ui/FormField/FormBooleanField.js +56 -0
  383. package/dist/components/ui/FormField/FormBooleanField.js.map +1 -0
  384. package/dist/components/ui/FormField/FormColorField.d.ts.map +1 -0
  385. package/dist/components/{FormColorField.js → ui/FormField/FormColorField.js} +10 -13
  386. package/dist/components/ui/FormField/FormColorField.js.map +1 -0
  387. package/dist/components/{FormConditionalField.d.ts → ui/FormField/FormConditionalField.d.ts} +1 -1
  388. package/dist/components/ui/FormField/FormConditionalField.d.ts.map +1 -0
  389. package/dist/components/{FormConditionalField.js → ui/FormField/FormConditionalField.js} +61 -58
  390. package/dist/components/ui/FormField/FormConditionalField.js.map +1 -0
  391. package/dist/components/ui/FormField/FormDatetimeField.d.ts.map +1 -0
  392. package/dist/components/ui/FormField/FormDatetimeField.js +48 -0
  393. package/dist/components/ui/FormField/FormDatetimeField.js.map +1 -0
  394. package/dist/components/{FormFields.d.ts → ui/FormField/FormFields.d.ts} +1 -1
  395. package/dist/components/ui/FormField/FormFields.d.ts.map +1 -0
  396. package/dist/components/{FormFields.js → ui/FormField/FormFields.js} +6 -6
  397. package/dist/components/ui/FormField/FormFields.js.map +1 -0
  398. package/dist/components/{FormImageField.d.ts → ui/FormField/FormImageField.d.ts} +1 -1
  399. package/dist/components/ui/FormField/FormImageField.d.ts.map +1 -0
  400. package/dist/components/{FormImageField.js → ui/FormField/FormImageField.js} +25 -30
  401. package/dist/components/ui/FormField/FormImageField.js.map +1 -0
  402. package/dist/components/ui/FormField/FormJsonField.d.ts.map +1 -0
  403. package/dist/components/{FormJsonField.js → ui/FormField/FormJsonField.js} +7 -10
  404. package/dist/components/ui/FormField/FormJsonField.js.map +1 -0
  405. package/dist/components/ui/FormField/FormMarkdownField.d.ts.map +1 -0
  406. package/dist/components/{FormMarkdownField.js → ui/FormField/FormMarkdownField.js} +11 -20
  407. package/dist/components/ui/FormField/FormMarkdownField.js.map +1 -0
  408. package/dist/components/ui/FormField/FormNumberField.d.ts.map +1 -0
  409. package/dist/components/ui/FormField/FormNumberField.js +38 -0
  410. package/dist/components/ui/FormField/FormNumberField.js.map +1 -0
  411. package/dist/components/{FormReferenceField.d.ts → ui/FormField/FormReferenceField.d.ts} +1 -1
  412. package/dist/components/ui/FormField/FormReferenceField.d.ts.map +1 -0
  413. package/dist/components/{FormReferenceField.js → ui/FormField/FormReferenceField.js} +109 -118
  414. package/dist/components/ui/FormField/FormReferenceField.js.map +1 -0
  415. package/dist/components/{FormRichTextField.d.ts → ui/FormField/FormRichTextField.d.ts} +1 -1
  416. package/dist/components/ui/FormField/FormRichTextField.d.ts.map +1 -0
  417. package/dist/components/{FormRichTextField.js → ui/FormField/FormRichTextField.js} +28 -33
  418. package/dist/components/ui/FormField/FormRichTextField.js.map +1 -0
  419. package/dist/components/{FormSelectField.d.ts → ui/FormField/FormSelectField.d.ts} +1 -1
  420. package/dist/components/ui/FormField/FormSelectField.d.ts.map +1 -0
  421. package/dist/components/{FormSelectField.js → ui/FormField/FormSelectField.js} +11 -23
  422. package/dist/components/ui/FormField/FormSelectField.js.map +1 -0
  423. package/dist/components/ui/FormField/FormSlugField.d.ts.map +1 -0
  424. package/dist/components/{FormSlugField.js → ui/FormField/FormSlugField.js} +21 -26
  425. package/dist/components/ui/FormField/FormSlugField.js.map +1 -0
  426. package/dist/components/ui/FormField/FormStringField.d.ts.map +1 -0
  427. package/dist/components/ui/FormField/FormStringField.js +23 -0
  428. package/dist/components/ui/FormField/FormStringField.js.map +1 -0
  429. package/dist/components/ui/FormField/FormStringListField.d.ts.map +1 -0
  430. package/dist/components/{FormStringListField.js → ui/FormField/FormStringListField.js} +14 -25
  431. package/dist/components/ui/FormField/FormStringListField.js.map +1 -0
  432. package/dist/components/ui/FormField/FormTextField.d.ts.map +1 -0
  433. package/dist/components/ui/FormField/FormTextField.js +35 -0
  434. package/dist/components/ui/FormField/FormTextField.js.map +1 -0
  435. package/dist/components/ui/FormField/FormUrlField.d.ts.map +1 -0
  436. package/dist/components/ui/FormField/FormUrlField.js +26 -0
  437. package/dist/components/ui/FormField/FormUrlField.js.map +1 -0
  438. package/dist/components/{richtext → ui/FormField/richtext}/ComponentEmbedEditor.d.ts +1 -1
  439. package/dist/components/ui/FormField/richtext/ComponentEmbedEditor.d.ts.map +1 -0
  440. package/dist/components/ui/FormField/richtext/ComponentEmbedEditor.js +165 -0
  441. package/dist/components/ui/FormField/richtext/ComponentEmbedEditor.js.map +1 -0
  442. package/dist/components/ui/FormField/richtext/ConditionEmbedEditor.d.ts.map +1 -0
  443. package/dist/components/{richtext → ui/FormField/richtext}/ConditionEmbedEditor.js +25 -39
  444. package/dist/components/ui/FormField/richtext/ConditionEmbedEditor.js.map +1 -0
  445. package/dist/components/ui/FormField/richtext/ImageEmbedEditor.d.ts.map +1 -0
  446. package/dist/components/{richtext → ui/FormField/richtext}/ImageEmbedEditor.js +77 -56
  447. package/dist/components/ui/FormField/richtext/ImageEmbedEditor.js.map +1 -0
  448. package/dist/components/ui/FormField/richtext/ReferenceEmbedEditor.d.ts.map +1 -0
  449. package/dist/components/{richtext → ui/FormField/richtext}/ReferenceEmbedEditor.js +55 -43
  450. package/dist/components/ui/FormField/richtext/ReferenceEmbedEditor.js.map +1 -0
  451. package/dist/components/ui/FormField/richtext/SlashCommandMenu.d.ts.map +1 -0
  452. package/dist/components/{richtext → ui/FormField/richtext}/SlashCommandMenu.js +21 -33
  453. package/dist/components/ui/FormField/richtext/SlashCommandMenu.js.map +1 -0
  454. package/dist/components/ui/FormField/richtext/VariableEmbedEditor.d.ts.map +1 -0
  455. package/dist/components/ui/FormField/richtext/VariableEmbedEditor.js +61 -0
  456. package/dist/components/ui/FormField/richtext/VariableEmbedEditor.js.map +1 -0
  457. package/dist/components/ui/Icon/Icon.d.ts +77 -0
  458. package/dist/components/ui/Icon/Icon.d.ts.map +1 -0
  459. package/dist/components/ui/Icon/Icon.js +618 -0
  460. package/dist/components/ui/Icon/Icon.js.map +1 -0
  461. package/dist/components/ui/{input.d.ts → Input/Input.d.ts} +1 -1
  462. package/dist/components/ui/Input/Input.d.ts.map +1 -0
  463. package/dist/components/ui/Input/Input.js +25 -0
  464. package/dist/components/ui/Input/Input.js.map +1 -0
  465. package/dist/components/ui/{kbd.d.ts → Kbd/Kbd.d.ts} +1 -1
  466. package/dist/components/ui/Kbd/Kbd.d.ts.map +1 -0
  467. package/dist/components/ui/Kbd/Kbd.js +19 -0
  468. package/dist/components/ui/Kbd/Kbd.js.map +1 -0
  469. package/dist/components/ui/Label/Label.d.ts +3 -0
  470. package/dist/components/ui/Label/Label.d.ts.map +1 -0
  471. package/dist/components/ui/Label/Label.js +20 -0
  472. package/dist/components/ui/Label/Label.js.map +1 -0
  473. package/dist/components/ui/Portal/Portal.d.ts +8 -0
  474. package/dist/components/ui/Portal/Portal.d.ts.map +1 -0
  475. package/dist/components/ui/Portal/Portal.js +14 -0
  476. package/dist/components/ui/Portal/Portal.js.map +1 -0
  477. package/dist/components/ui/Select/Select.d.ts +33 -0
  478. package/dist/components/ui/Select/Select.d.ts.map +1 -0
  479. package/dist/components/ui/Select/Select.js +280 -0
  480. package/dist/components/ui/Select/Select.js.map +1 -0
  481. package/dist/components/ui/Slot/Slot.d.ts +6 -0
  482. package/dist/components/ui/Slot/Slot.d.ts.map +1 -0
  483. package/dist/components/ui/Slot/Slot.js +39 -0
  484. package/dist/components/ui/Slot/Slot.js.map +1 -0
  485. package/dist/components/ui/{status-badge.d.ts → StatusBadge/StatusBadge.d.ts} +2 -2
  486. package/dist/components/ui/StatusBadge/StatusBadge.d.ts.map +1 -0
  487. package/dist/components/ui/{status-badge.js → StatusBadge/StatusBadge.js} +8 -9
  488. package/dist/components/ui/StatusBadge/StatusBadge.js.map +1 -0
  489. package/dist/components/ui/Switcher/Switcher.d.ts +9 -0
  490. package/dist/components/ui/Switcher/Switcher.d.ts.map +1 -0
  491. package/dist/components/ui/Switcher/Switcher.js +75 -0
  492. package/dist/components/ui/Switcher/Switcher.js.map +1 -0
  493. package/dist/components/ui/{table.d.ts → Table/Table.d.ts} +1 -1
  494. package/dist/components/ui/Table/Table.d.ts.map +1 -0
  495. package/dist/components/ui/{table.js → Table/Table.js} +11 -29
  496. package/dist/components/ui/Table/Table.js.map +1 -0
  497. package/dist/components/ui/Tabs/Tabs.d.ts +16 -0
  498. package/dist/components/ui/Tabs/Tabs.d.ts.map +1 -0
  499. package/dist/components/ui/Tabs/Tabs.js +96 -0
  500. package/dist/components/ui/Tabs/Tabs.js.map +1 -0
  501. package/dist/components/ui/{textarea.d.ts → Textarea/Textarea.d.ts} +1 -1
  502. package/dist/components/ui/Textarea/Textarea.d.ts.map +1 -0
  503. package/dist/components/ui/Textarea/Textarea.js +16 -0
  504. package/dist/components/ui/Textarea/Textarea.js.map +1 -0
  505. package/dist/components/ui/Toast/Toast.d.ts +21 -0
  506. package/dist/components/ui/Toast/Toast.d.ts.map +1 -0
  507. package/dist/components/ui/Toast/Toast.js +98 -0
  508. package/dist/components/ui/Toast/Toast.js.map +1 -0
  509. package/dist/components/ui/{toaster.d.ts → Toaster/Toaster.d.ts} +1 -1
  510. package/dist/components/ui/Toaster/Toaster.d.ts.map +1 -0
  511. package/dist/components/ui/Toaster/Toaster.js +27 -0
  512. package/dist/components/ui/Toaster/Toaster.js.map +1 -0
  513. package/dist/components/ui/index.d.ts +45 -31
  514. package/dist/components/ui/index.d.ts.map +1 -1
  515. package/dist/components/ui/index.js +76 -36
  516. package/dist/components/ui/index.js.map +1 -1
  517. package/dist/config.cjs +4 -99
  518. package/dist/config.cjs.map +1 -1
  519. package/dist/defineConfig.cjs +0 -2
  520. package/dist/defineConfig.cjs.map +1 -1
  521. package/dist/globals.css +9648 -430
  522. package/dist/hooks/useComposedRefs.d.ts +5 -0
  523. package/dist/hooks/useComposedRefs.d.ts.map +1 -0
  524. package/dist/hooks/useComposedRefs.js +23 -0
  525. package/dist/hooks/useComposedRefs.js.map +1 -0
  526. package/dist/hooks/useControllableState.d.ts +8 -0
  527. package/dist/hooks/useControllableState.d.ts.map +1 -0
  528. package/dist/hooks/useControllableState.js +28 -0
  529. package/dist/hooks/useControllableState.js.map +1 -0
  530. package/dist/hooks/usePopoverContent.d.ts +26 -0
  531. package/dist/hooks/usePopoverContent.d.ts.map +1 -0
  532. package/dist/hooks/usePopoverContent.js +44 -0
  533. package/dist/hooks/usePopoverContent.js.map +1 -0
  534. package/dist/hooks/useToast.d.ts +4 -4
  535. package/dist/hooks/useToast.d.ts.map +1 -1
  536. package/dist/hooks/useToast.js +1 -3
  537. package/dist/hooks/useToast.js.map +1 -1
  538. package/dist/index.cjs +11 -9506
  539. package/dist/index.cjs.map +1 -1
  540. package/dist/{init-KWH66PKY.js → init-KNIWQGJL.js} +3 -18
  541. package/dist/init-KNIWQGJL.js.map +1 -0
  542. package/dist/lib/configStore.cjs +1 -3
  543. package/dist/lib/configStore.cjs.map +1 -1
  544. package/dist/lib/slugField.d.ts.map +1 -1
  545. package/dist/lib/slugField.js +3 -3
  546. package/dist/lib/slugField.js.map +1 -1
  547. package/dist/lib/slugify.d.ts +13 -0
  548. package/dist/lib/slugify.d.ts.map +1 -0
  549. package/dist/lib/slugify.js +8 -0
  550. package/dist/lib/slugify.js.map +1 -0
  551. package/dist/lib/utils.d.ts +5 -9
  552. package/dist/lib/utils.d.ts.map +1 -1
  553. package/dist/lib/utils.js +29 -3
  554. package/dist/lib/utils.js.map +1 -1
  555. package/dist/query.cjs +58 -9011
  556. package/dist/query.cjs.map +1 -1
  557. package/dist/types.cjs +0 -2
  558. package/dist/types.cjs.map +1 -1
  559. package/dist/types.d.ts +3 -1
  560. package/dist/types.d.ts.map +1 -1
  561. package/dist/{update-QNJRYPMC.js → update-QALIQG76.js} +2 -2
  562. package/dist/withOctoCMS.cjs +2 -36
  563. package/dist/withOctoCMS.cjs.map +1 -1
  564. package/globals.css +9648 -430
  565. package/package.json +1 -16
  566. package/dist/chunk-NAHOP7TG.js +0 -7
  567. package/dist/components/ContentModel/ContentModelList.skeleton.d.ts +0 -5
  568. package/dist/components/ContentModel/ContentModelList.skeleton.d.ts.map +0 -1
  569. package/dist/components/ContentModel/ContentModelList.skeleton.js +0 -16
  570. package/dist/components/ContentModel/ContentModelList.skeleton.js.map +0 -1
  571. package/dist/components/ContentModel/ContentTypeDetail.skeleton.d.ts +0 -5
  572. package/dist/components/ContentModel/ContentTypeDetail.skeleton.d.ts.map +0 -1
  573. package/dist/components/ContentModel/ContentTypeDetail.skeleton.js +0 -22
  574. package/dist/components/ContentModel/ContentTypeDetail.skeleton.js.map +0 -1
  575. package/dist/components/ContentTypes.d.ts +0 -7
  576. package/dist/components/ContentTypes.d.ts.map +0 -1
  577. package/dist/components/ContentTypes.js +0 -132
  578. package/dist/components/ContentTypes.js.map +0 -1
  579. package/dist/components/CreateBranchDialog.d.ts.map +0 -1
  580. package/dist/components/CreateBranchDialog.js.map +0 -1
  581. package/dist/components/Dashboard/DashboardContent.collection.skeleton.d.ts +0 -3
  582. package/dist/components/Dashboard/DashboardContent.collection.skeleton.d.ts.map +0 -1
  583. package/dist/components/Dashboard/DashboardContent.collection.skeleton.js +0 -10
  584. package/dist/components/Dashboard/DashboardContent.collection.skeleton.js.map +0 -1
  585. package/dist/components/Dashboard/DashboardContent.list.skeleton.d.ts +0 -7
  586. package/dist/components/Dashboard/DashboardContent.list.skeleton.d.ts.map +0 -1
  587. package/dist/components/Dashboard/DashboardContent.list.skeleton.js +0 -22
  588. package/dist/components/Dashboard/DashboardContent.list.skeleton.js.map +0 -1
  589. package/dist/components/Dashboard/DashboardContent.skeleton.d.ts +0 -2
  590. package/dist/components/Dashboard/DashboardContent.skeleton.d.ts.map +0 -1
  591. package/dist/components/Dashboard/DashboardContent.skeleton.js +0 -13
  592. package/dist/components/Dashboard/DashboardContent.skeleton.js.map +0 -1
  593. package/dist/components/EditPost/EditPost.skeleton.d.ts +0 -5
  594. package/dist/components/EditPost/EditPost.skeleton.d.ts.map +0 -1
  595. package/dist/components/EditPost/EditPost.skeleton.js +0 -34
  596. package/dist/components/EditPost/EditPost.skeleton.js.map +0 -1
  597. package/dist/components/ErrorBoundary.d.ts.map +0 -1
  598. package/dist/components/ErrorBoundary.js.map +0 -1
  599. package/dist/components/FieldHintAndError.d.ts +0 -8
  600. package/dist/components/FieldHintAndError.d.ts.map +0 -1
  601. package/dist/components/FieldHintAndError.js +0 -14
  602. package/dist/components/FieldHintAndError.js.map +0 -1
  603. package/dist/components/FieldLabel.d.ts +0 -11
  604. package/dist/components/FieldLabel.d.ts.map +0 -1
  605. package/dist/components/FieldLabel.js +0 -17
  606. package/dist/components/FieldLabel.js.map +0 -1
  607. package/dist/components/FieldShell.d.ts.map +0 -1
  608. package/dist/components/FieldShell.js +0 -29
  609. package/dist/components/FieldShell.js.map +0 -1
  610. package/dist/components/FileExplorer/FileExplorer.d.ts +0 -8
  611. package/dist/components/FileExplorer/FileExplorer.d.ts.map +0 -1
  612. package/dist/components/FileExplorer/FileExplorer.js +0 -68
  613. package/dist/components/FileExplorer/FileExplorer.js.map +0 -1
  614. package/dist/components/FormBooleanField.d.ts.map +0 -1
  615. package/dist/components/FormBooleanField.js +0 -52
  616. package/dist/components/FormBooleanField.js.map +0 -1
  617. package/dist/components/FormColorField.d.ts.map +0 -1
  618. package/dist/components/FormColorField.js.map +0 -1
  619. package/dist/components/FormConditionalField.d.ts.map +0 -1
  620. package/dist/components/FormConditionalField.js.map +0 -1
  621. package/dist/components/FormDatetimeField.d.ts.map +0 -1
  622. package/dist/components/FormDatetimeField.js +0 -42
  623. package/dist/components/FormDatetimeField.js.map +0 -1
  624. package/dist/components/FormFields.d.ts.map +0 -1
  625. package/dist/components/FormFields.js.map +0 -1
  626. package/dist/components/FormImageField.d.ts.map +0 -1
  627. package/dist/components/FormImageField.js.map +0 -1
  628. package/dist/components/FormJsonField.d.ts.map +0 -1
  629. package/dist/components/FormJsonField.js.map +0 -1
  630. package/dist/components/FormMarkdownField.d.ts.map +0 -1
  631. package/dist/components/FormMarkdownField.js.map +0 -1
  632. package/dist/components/FormNumberField.d.ts.map +0 -1
  633. package/dist/components/FormNumberField.js +0 -43
  634. package/dist/components/FormNumberField.js.map +0 -1
  635. package/dist/components/FormReferenceField.d.ts.map +0 -1
  636. package/dist/components/FormReferenceField.js.map +0 -1
  637. package/dist/components/FormRichTextField.d.ts.map +0 -1
  638. package/dist/components/FormRichTextField.js.map +0 -1
  639. package/dist/components/FormSelectField.d.ts.map +0 -1
  640. package/dist/components/FormSelectField.js.map +0 -1
  641. package/dist/components/FormSlugField.d.ts.map +0 -1
  642. package/dist/components/FormSlugField.js.map +0 -1
  643. package/dist/components/FormStringField.d.ts.map +0 -1
  644. package/dist/components/FormStringField.js +0 -28
  645. package/dist/components/FormStringField.js.map +0 -1
  646. package/dist/components/FormStringListField.d.ts.map +0 -1
  647. package/dist/components/FormStringListField.js.map +0 -1
  648. package/dist/components/FormTextField.d.ts.map +0 -1
  649. package/dist/components/FormTextField.js +0 -40
  650. package/dist/components/FormTextField.js.map +0 -1
  651. package/dist/components/FormUrlField.d.ts.map +0 -1
  652. package/dist/components/FormUrlField.js +0 -31
  653. package/dist/components/FormUrlField.js.map +0 -1
  654. package/dist/components/Layout/PageBar.d.ts +0 -10
  655. package/dist/components/Layout/PageBar.d.ts.map +0 -1
  656. package/dist/components/Layout/PageBar.js +0 -43
  657. package/dist/components/Layout/PageBar.js.map +0 -1
  658. package/dist/components/Layout/PageShell.d.ts +0 -30
  659. package/dist/components/Layout/PageShell.d.ts.map +0 -1
  660. package/dist/components/Layout/PageShell.js +0 -33
  661. package/dist/components/Layout/PageShell.js.map +0 -1
  662. package/dist/components/MediaAsset/MediaAsset.skeleton.d.ts +0 -3
  663. package/dist/components/MediaAsset/MediaAsset.skeleton.d.ts.map +0 -1
  664. package/dist/components/MediaAsset/MediaAsset.skeleton.js +0 -42
  665. package/dist/components/MediaAsset/MediaAsset.skeleton.js.map +0 -1
  666. package/dist/components/MediaManager/MediaManager.skeleton.d.ts +0 -3
  667. package/dist/components/MediaManager/MediaManager.skeleton.d.ts.map +0 -1
  668. package/dist/components/MediaManager/MediaManager.skeleton.js +0 -30
  669. package/dist/components/MediaManager/MediaManager.skeleton.js.map +0 -1
  670. package/dist/components/StatusBadge.d.ts +0 -2
  671. package/dist/components/StatusBadge.d.ts.map +0 -1
  672. package/dist/components/StatusBadge.js +0 -7
  673. package/dist/components/StatusBadge.js.map +0 -1
  674. package/dist/components/richtext/ComponentEmbedEditor.d.ts.map +0 -1
  675. package/dist/components/richtext/ComponentEmbedEditor.js +0 -153
  676. package/dist/components/richtext/ComponentEmbedEditor.js.map +0 -1
  677. package/dist/components/richtext/ConditionEmbedEditor.d.ts.map +0 -1
  678. package/dist/components/richtext/ConditionEmbedEditor.js.map +0 -1
  679. package/dist/components/richtext/ImageEmbedEditor.d.ts.map +0 -1
  680. package/dist/components/richtext/ImageEmbedEditor.js.map +0 -1
  681. package/dist/components/richtext/ReferenceEmbedEditor.d.ts.map +0 -1
  682. package/dist/components/richtext/ReferenceEmbedEditor.js.map +0 -1
  683. package/dist/components/richtext/SlashCommandMenu.d.ts.map +0 -1
  684. package/dist/components/richtext/SlashCommandMenu.js.map +0 -1
  685. package/dist/components/richtext/VariableEmbedEditor.d.ts.map +0 -1
  686. package/dist/components/richtext/VariableEmbedEditor.js +0 -58
  687. package/dist/components/richtext/VariableEmbedEditor.js.map +0 -1
  688. package/dist/components/ui/avatar-stack.d.ts +0 -13
  689. package/dist/components/ui/avatar-stack.d.ts.map +0 -1
  690. package/dist/components/ui/avatar-stack.js +0 -27
  691. package/dist/components/ui/avatar-stack.js.map +0 -1
  692. package/dist/components/ui/avatar.d.ts +0 -7
  693. package/dist/components/ui/avatar.d.ts.map +0 -1
  694. package/dist/components/ui/avatar.js +0 -45
  695. package/dist/components/ui/avatar.js.map +0 -1
  696. package/dist/components/ui/banner.d.ts +0 -13
  697. package/dist/components/ui/banner.d.ts.map +0 -1
  698. package/dist/components/ui/banner.js +0 -24
  699. package/dist/components/ui/banner.js.map +0 -1
  700. package/dist/components/ui/branch-chip.d.ts.map +0 -1
  701. package/dist/components/ui/branch-chip.js +0 -58
  702. package/dist/components/ui/branch-chip.js.map +0 -1
  703. package/dist/components/ui/button.d.ts +0 -14
  704. package/dist/components/ui/button.d.ts.map +0 -1
  705. package/dist/components/ui/button.js +0 -65
  706. package/dist/components/ui/button.js.map +0 -1
  707. package/dist/components/ui/card.d.ts +0 -7
  708. package/dist/components/ui/card.d.ts.map +0 -1
  709. package/dist/components/ui/card.js.map +0 -1
  710. package/dist/components/ui/chip.d.ts.map +0 -1
  711. package/dist/components/ui/chip.js +0 -44
  712. package/dist/components/ui/chip.js.map +0 -1
  713. package/dist/components/ui/dialog.d.ts +0 -20
  714. package/dist/components/ui/dialog.d.ts.map +0 -1
  715. package/dist/components/ui/dialog.js +0 -93
  716. package/dist/components/ui/dialog.js.map +0 -1
  717. package/dist/components/ui/dropdown-menu.d.ts +0 -28
  718. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  719. package/dist/components/ui/dropdown-menu.js +0 -165
  720. package/dist/components/ui/dropdown-menu.js.map +0 -1
  721. package/dist/components/ui/empty.d.ts +0 -11
  722. package/dist/components/ui/empty.d.ts.map +0 -1
  723. package/dist/components/ui/empty.js +0 -24
  724. package/dist/components/ui/empty.js.map +0 -1
  725. package/dist/components/ui/field.d.ts.map +0 -1
  726. package/dist/components/ui/field.js +0 -52
  727. package/dist/components/ui/field.js.map +0 -1
  728. package/dist/components/ui/input.d.ts.map +0 -1
  729. package/dist/components/ui/input.js +0 -51
  730. package/dist/components/ui/input.js.map +0 -1
  731. package/dist/components/ui/kbd.d.ts.map +0 -1
  732. package/dist/components/ui/kbd.js +0 -30
  733. package/dist/components/ui/kbd.js.map +0 -1
  734. package/dist/components/ui/label.d.ts +0 -6
  735. package/dist/components/ui/label.d.ts.map +0 -1
  736. package/dist/components/ui/label.js +0 -20
  737. package/dist/components/ui/label.js.map +0 -1
  738. package/dist/components/ui/publish-button.d.ts +0 -7
  739. package/dist/components/ui/publish-button.d.ts.map +0 -1
  740. package/dist/components/ui/publish-button.js +0 -50
  741. package/dist/components/ui/publish-button.js.map +0 -1
  742. package/dist/components/ui/select.d.ts +0 -14
  743. package/dist/components/ui/select.d.ts.map +0 -1
  744. package/dist/components/ui/select.js +0 -132
  745. package/dist/components/ui/select.js.map +0 -1
  746. package/dist/components/ui/sonner.d.ts +0 -6
  747. package/dist/components/ui/sonner.d.ts.map +0 -1
  748. package/dist/components/ui/sonner.js +0 -37
  749. package/dist/components/ui/sonner.js.map +0 -1
  750. package/dist/components/ui/status-badge.d.ts.map +0 -1
  751. package/dist/components/ui/status-badge.js.map +0 -1
  752. package/dist/components/ui/table.d.ts.map +0 -1
  753. package/dist/components/ui/table.js.map +0 -1
  754. package/dist/components/ui/tabs-pill.d.ts +0 -17
  755. package/dist/components/ui/tabs-pill.d.ts.map +0 -1
  756. package/dist/components/ui/tabs-pill.js +0 -67
  757. package/dist/components/ui/tabs-pill.js.map +0 -1
  758. package/dist/components/ui/tabs.d.ts +0 -8
  759. package/dist/components/ui/tabs.d.ts.map +0 -1
  760. package/dist/components/ui/tabs.js +0 -59
  761. package/dist/components/ui/tabs.js.map +0 -1
  762. package/dist/components/ui/textarea.d.ts.map +0 -1
  763. package/dist/components/ui/textarea.js +0 -25
  764. package/dist/components/ui/textarea.js.map +0 -1
  765. package/dist/components/ui/toast-card.d.ts +0 -15
  766. package/dist/components/ui/toast-card.d.ts.map +0 -1
  767. package/dist/components/ui/toast-card.js +0 -90
  768. package/dist/components/ui/toast-card.js.map +0 -1
  769. package/dist/components/ui/toast.d.ts +0 -16
  770. package/dist/components/ui/toast.d.ts.map +0 -1
  771. package/dist/components/ui/toast.js +0 -95
  772. package/dist/components/ui/toast.js.map +0 -1
  773. package/dist/components/ui/toaster.d.ts.map +0 -1
  774. package/dist/components/ui/toaster.js +0 -30
  775. package/dist/components/ui/toaster.js.map +0 -1
  776. package/dist/init-KWH66PKY.js.map +0 -1
  777. /package/dist/{agentDocs-M3R2CPUQ.js.map → agentDocs-QZ4NOQVH.js.map} +0 -0
  778. /package/dist/components/{ErrorBoundary.d.ts → ErrorBoundary/ErrorBoundary.d.ts} +0 -0
  779. /package/dist/components/{CreateBranchDialog.d.ts → Layout/CreateBranchDialog.d.ts} +0 -0
  780. /package/dist/components/{FormBooleanField.d.ts → ui/FormField/FormBooleanField.d.ts} +0 -0
  781. /package/dist/components/{FormColorField.d.ts → ui/FormField/FormColorField.d.ts} +0 -0
  782. /package/dist/components/{FormDatetimeField.d.ts → ui/FormField/FormDatetimeField.d.ts} +0 -0
  783. /package/dist/components/{FormJsonField.d.ts → ui/FormField/FormJsonField.d.ts} +0 -0
  784. /package/dist/components/{FormMarkdownField.d.ts → ui/FormField/FormMarkdownField.d.ts} +0 -0
  785. /package/dist/components/{FormNumberField.d.ts → ui/FormField/FormNumberField.d.ts} +0 -0
  786. /package/dist/components/{FormSlugField.d.ts → ui/FormField/FormSlugField.d.ts} +0 -0
  787. /package/dist/components/{FormStringField.d.ts → ui/FormField/FormStringField.d.ts} +0 -0
  788. /package/dist/components/{FormStringListField.d.ts → ui/FormField/FormStringListField.d.ts} +0 -0
  789. /package/dist/components/{FormTextField.d.ts → ui/FormField/FormTextField.d.ts} +0 -0
  790. /package/dist/components/{FormUrlField.d.ts → ui/FormField/FormUrlField.d.ts} +0 -0
  791. /package/dist/components/{richtext → ui/FormField/richtext}/ConditionEmbedEditor.d.ts +0 -0
  792. /package/dist/components/{richtext → ui/FormField/richtext}/ImageEmbedEditor.d.ts +0 -0
  793. /package/dist/components/{richtext → ui/FormField/richtext}/ReferenceEmbedEditor.d.ts +0 -0
  794. /package/dist/components/{richtext → ui/FormField/richtext}/SlashCommandMenu.d.ts +0 -0
  795. /package/dist/components/{richtext → ui/FormField/richtext}/VariableEmbedEditor.d.ts +0 -0
  796. /package/dist/{update-QNJRYPMC.js.map → update-QALIQG76.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  agentsMdSection,
3
3
  agentsMdTemplate
4
- } from "./chunk-DCDFWNC6.js";
4
+ } from "./chunk-I7VNI2IG.js";
5
5
  import {
6
6
  log
7
7
  } from "./chunk-6PHFHGTZ.js";
@@ -35,4 +35,4 @@ async function agentDocsCommand(projectRoot) {
35
35
  export {
36
36
  agentDocsCommand
37
37
  };
38
- //# sourceMappingURL=agentDocs-M3R2CPUQ.js.map
38
+ //# sourceMappingURL=agentDocs-QZ4NOQVH.js.map
@@ -100,8 +100,8 @@ var rootLayoutConfigInitImport = `${CONFIG_INIT_IMPORT}
100
100
  `;
101
101
  function buildAdminLayoutTemplate() {
102
102
  return `${CONFIG_INIT_IMPORT}
103
- import 'octocms/globals.css';
104
103
  import '@mdxeditor/editor/style.css';
104
+ import 'octocms/globals.css';
105
105
 
106
106
  export { AdminLayout as default, metadata } from 'octocms/admin';
107
107
  `;
@@ -303,12 +303,9 @@ Built with [OctoCMS](https://octocms.com) \u2014 a file-based CMS on Next.js.
303
303
 
304
304
  \`\`\`bash
305
305
  npm install octocms next-auth @tanstack/react-query @mdxeditor/editor \\
306
- @radix-ui/react-avatar @radix-ui/react-dialog @radix-ui/react-dropdown-menu \\
307
- @radix-ui/react-label @radix-ui/react-select @radix-ui/react-slot \\
308
- @radix-ui/react-tabs @radix-ui/react-toast \\
309
- class-variance-authority clsx glob lucide-react minisearch octokit \\
306
+ minisearch octokit \\
310
307
  react-markdown rehype-sanitize remark-gfm remark-mdx \\
311
- sharp slugify sonner tailwind-merge zod
308
+ sharp zod
312
309
  \`\`\`
313
310
 
314
311
  > The exact list (with the right \`octocms\` version pin) is also printed by \`npx octocms init\` \u2014 copy it from there.
@@ -420,4 +417,4 @@ export {
420
417
  agentsMdTemplate,
421
418
  tsconfigPaths
422
419
  };
423
- //# sourceMappingURL=chunk-DCDFWNC6.js.map
420
+ //# sourceMappingURL=chunk-I7VNI2IG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/lib/templates.ts"],"sourcesContent":["/**\n * File templates used by `octocms init` and `octocms update`.\n */\n\nconst CODEGEN_BANNER = `/*\n * AUTO-GENERATED — DO NOT EDIT.\n * Generated from cms/octocms.config.ts.\n * Run \\`npx octocms types:gen\\` to regenerate.\n */\n\n`;\n\n/** Static cms/__generated__/types.ts for the helloPage demo schema. */\nexport const generatedTypesTemplate =\n CODEGEN_BANNER +\n `import type { EntryStatus } from 'octocms/types';\n\nexport interface HelloPageFields {\n title: string;\n description: string;\n}\n\nexport interface HelloPageEntry {\n sys: { id: string; type: 'helloPage'; status: EntryStatus };\n fields: HelloPageFields;\n}\n\nexport type AnyEntry = HelloPageEntry;\n\nexport type EntryMap = {\n helloPage: HelloPageEntry;\n};\n`;\n\n/** Static cms/__generated__/enums.ts for the helloPage demo schema. */\nexport const generatedEnumsTemplate =\n CODEGEN_BANNER +\n `export const CollectionName = {\n HelloPage: 'helloPage',\n} as const;\nexport type CollectionName = (typeof CollectionName)[keyof typeof CollectionName];\n\nexport const COLLECTION_NAMES = ['helloPage'] as const;\n\nexport const FieldFormat = {\n String: 'string',\n Text: 'text',\n Markdown: 'markdown',\n Boolean: 'boolean',\n Reference: 'reference',\n Image: 'image',\n Number: 'number',\n Datetime: 'datetime',\n Json: 'json',\n Slug: 'slug',\n Select: 'select',\n Url: 'url',\n Color: 'color',\n Conditional: 'conditional',\n Richtext: 'richtext',\n} as const;\nexport type FieldFormat = (typeof FieldFormat)[keyof typeof FieldFormat];\n`;\n\n/** Static cms/__generated__/content.d.ts for the helloPage demo schema. */\nexport const generatedContentDeclsTemplate =\n CODEGEN_BANNER +\n `import type { EntryStatus } from 'octocms/types';\n\n// Raw on-disk types (before query() processing).\nexport interface RawHelloPageFields {\n title: string;\n description: string;\n}\n\nexport interface RawHelloPageEntry {\n sys: { id: string; type: 'helloPage'; status: EntryStatus };\n fields: RawHelloPageFields;\n}\n`;\n\n/** Static cms/__generated__/index.ts — always the same shape. */\nexport const generatedIndexTemplate =\n CODEGEN_BANNER +\n `export * from './types';\nexport * from './enums';\nexport * from './query';\n`;\n\n/** Static cms/__generated__/query.ts — always the same shape (schema-independent). */\nexport const generatedQueryTemplate =\n CODEGEN_BANNER +\n `import { createQuery } from 'octocms/query';\nimport { configOctoCMS, type OctoConfig } from '../octocms.config';\nimport type { EntryMap } from './types';\n\n// configOctoCMS is widened to Config for admin internals; cast back to OctoConfig so\n// createQuery preserves literal collection/field names for type-safe queries.\nexport const query = createQuery<EntryMap, OctoConfig>(configOctoCMS as unknown as OctoConfig);\n`;\n\n/** Static cms/__generated__/configInit.ts — always the same shape (schema-independent). */\nexport const generatedConfigInitTemplate =\n CODEGEN_BANNER +\n `import { configOctoCMS } from '../octocms.config';\nimport { setConfig } from 'octocms/lib/configStore';\n\nsetConfig(configOctoCMS);\n`;\n\n/**\n * All scaffolded files import the generated config initialiser via the bare\n * specifier `cms/__generated__/configInit`. Resolution works in two layers:\n *\n * - TypeScript IntelliSense: the consumer's `tsconfig.json` `paths` (added\n * by `octocms init`).\n * - Bundler: an alias registered by `withOctoCMS()` so Webpack and Turbopack\n * resolve the bare specifier from anywhere — including `app/layout.tsx`,\n * route handlers at any depth, and files inside `node_modules/octocms/`.\n *\n * This eliminates the previous depth-counting (`'../../../cms/...'`) that was\n * a recurring source of off-by-one bugs across templates and routes.\n */\nconst CONFIG_INIT_IMPORT = \"import 'cms/__generated__/configInit';\";\n\n/**\n * Minimal root layout written when `app/layout.tsx` does not already exist.\n * The configInit import is the critical side-effect; the rest is a Next.js\n * boilerplate shell.\n */\nexport const rootLayoutTemplate = `${CONFIG_INIT_IMPORT}\nimport type { Metadata } from 'next';\n\nexport const metadata: Metadata = {\n title: 'My App',\n};\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n return (\n <html lang=\"en\">\n <body>{children}</body>\n </html>\n );\n}\n`;\n\n/** The one-liner prepended to an existing root layout to register the config. */\nexport const rootLayoutConfigInitImport = `${CONFIG_INIT_IMPORT}\\n`;\n\nexport function buildAdminLayoutTemplate(): string {\n return `${CONFIG_INIT_IMPORT}\nimport 'octocms/globals.css';\nimport '@mdxeditor/editor/style.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin';\n`;\n}\n\n/**\n * Catch-all admin route — every \\`/cms/*\\` URL renders the package's\n * \\`AdminApp\\` async server component (awaits \\`params\\`, no outer Suspense).\n * Side-effect-imports \\`configInit\\` so server-action bundles register\n * \\`setConfig()\\` even when Next.js does not load \\`layout.tsx\\` for the POST.\n */\nexport function buildAdminPageTemplate(): string {\n return `// Registers setConfig() for server actions — some POST bundles skip layout.tsx.\n${CONFIG_INIT_IMPORT}\n\nexport { AdminApp as default } from 'octocms/admin';\n`;\n}\n\n/**\n * Admin error boundary — rendered by Next.js when anything in the catch-all\n * tree throws during render. Re-uses the shared \\`AdminErrorView\\` so GitHub\n * config / auth / availability / rate-limit copy stays consistent with the\n * public-page error boundary.\n */\nexport const adminErrorTemplate = `'use client';\n\nexport { AdminError as default } from 'octocms/admin';\n`;\n\n/**\n * Historical template values used by \\`octocms update\\` to recognise an\n * unmodified install when migrating between routing models. Each entry is\n * the literal file content shipped by a previous OctoCMS version. If a\n * user-app file matches one of these byte-for-byte, \\`update\\` will replace\n * it with the current template; otherwise it leaves it alone.\n */\nexport const LEGACY_ADMIN_LAYOUT_TEMPLATES: ReadonlyArray<string> = [\n // 0.4.x — re-exported from the deep path.\n `import '../../cms/__generated__/configInit';\nimport 'octocms/globals.css';\nimport '@mdxeditor/editor/style.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin/pages/AdminLayout';\n`,\n // 0.5.x — barrel re-export with depth-counted relative configInit import.\n `import '../../cms/__generated__/configInit';\nimport 'octocms/globals.css';\nimport '@mdxeditor/editor/style.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin';\n`,\n];\n\nexport const LEGACY_ADMIN_CATCH_ALL_TEMPLATES: ReadonlyArray<string> = [\n // 0.4.x — re-exported from the deep path.\n `export { AdminApp as default } from 'octocms/admin/AdminApp';\n`,\n // 0.5.x — barrel re-export without configInit on the page (server actions could miss setConfig).\n `export { AdminApp as default } from 'octocms/admin';\n`,\n // 0.5.x with depth-counted configInit (replaced by bare-specifier alias).\n `// Registers setConfig() for server actions — some POST bundles skip layout.tsx.\nimport '../../../cms/__generated__/configInit';\n\nexport { AdminApp as default } from 'octocms/admin';\n`,\n];\n\nexport const nextAuthRouteTemplate = `import NextAuth from 'next-auth';\nimport { authOptions } from 'octocms/admin/auth';\n\nconst handler = NextAuth(authOptions);\n\nexport { handler as GET, handler as POST };\n`;\n\n/**\n * Build a thin re-export Route Handler for the chat-agent SSE endpoint.\n *\n * The actual handler lives in `octocms/agent/chatApi.ts`\n * (`chatRoute` / `chatStatusRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so\n * `getAgentConfig()` resolves on cold start (Route Handlers don't run\n * `app/layout.tsx`); and\n * 2. re-exports `chatRoute` as `POST` and `chatStatusRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic and can be\n * placed under `app/` or `src/app/` without code changes.\n */\nexport function agentChatRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` + \\`agentConfig\\` into the\n// runtime stores so \\`getAgentConfig()\\` resolves on cold start. Route Handlers\n// don't run \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { chatRoute as POST, chatStatusRoute as GET } from 'octocms/agent';\n`;\n}\n\n/**\n * Build a thin re-export Route Handler for the `/media/[...slug]` proxy.\n *\n * The actual handler lives in `octocms/admin/mediaRoute.ts`\n * (`mediaRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so `getConfig()`\n * resolves on cold start (Route Handlers don't run `app/layout.tsx`); and\n * 2. re-exports `mediaRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic.\n */\nexport function mediaRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` into the runtime store so\n// \\`getConfig()\\` resolves on cold start. Route Handlers don't run\n// \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { mediaRoute as GET } from 'octocms/admin/mediaRoute';\n`;\n}\n\n/**\n * Build a thin re-export Route Handler for the public-site `/api/search`\n * endpoint consumed by the `SearchBox` component shipped at\n * `octocms/components/public`.\n *\n * The actual handler lives in `octocms/admin/searchRoute.ts`\n * (`searchRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so `getConfig()`\n * resolves on cold start (Route Handlers don't run `app/layout.tsx`); and\n * 2. re-exports `searchRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic.\n */\nexport function searchRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` into the runtime store so\n// \\`getConfig()\\` resolves on cold start. Route Handlers don't run\n// \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { searchRoute as GET } from 'octocms/admin/searchRoute';\n`;\n}\n\ntype SchemaInitOpts = { projectName: string; baseBranch: string; pointerBranch?: string };\n\n/**\n * The starter schema used by `octocms init`. The data lives in `cms/schema.json`\n * (source of truth — hand-editable + edited by the Content Model UI). The other\n * two scaffolded files (`cms/__generated__/schema.ts` and `cms/octocms.config.ts`)\n * mirror this same shape — keep them aligned by editing here only and letting\n * `npx octocms types:gen` regenerate the rest in the user's project.\n */\nfunction buildStarterSchema(opts: SchemaInitOpts): Record<string, unknown> {\n const git: Record<string, string> = { baseBranch: opts.baseBranch };\n if (opts.pointerBranch) git.publishedPointerBranch = opts.pointerBranch;\n return {\n projectName: opts.projectName,\n git,\n contentFolder: 'cms/content',\n mediaContentFolder: 'cms/media',\n mediaFolder: 'public/media',\n mediaAllowedFormats: ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'avif'],\n collections: {\n helloPage: {\n label: 'Hello Page',\n fields: {\n title: { label: 'Title', format: 'string', entryTitle: true, required: true },\n description: { label: 'Description', format: 'text' },\n },\n },\n },\n };\n}\n\n/**\n * `cms/schema.json` — the source of truth. The Content Model UI (`/cms/model`)\n * reads and writes this file via `getSchema()` / `saveSchema()` server actions.\n */\nexport function schemaJsonTemplate(opts: SchemaInitOpts): string {\n return JSON.stringify(buildStarterSchema(opts), null, 2) + '\\n';\n}\n\n/**\n * `cms/__generated__/schema.ts` — auto-generated literal-typed mirror of\n * `cms/schema.json`. Required because `query()` infers narrow collection /\n * field / format types from the literal `defineConfig()` call — a plain JSON\n * import cannot preserve those literals.\n *\n * `npx octocms types:gen` regenerates this from `cms/schema.json` after every\n * schema edit (and `npm run types:check` fails on drift).\n */\nexport function generatedSchemaShimTemplate(opts: SchemaInitOpts): string {\n const gitBlock = opts.pointerBranch\n ? ` git: {\\n baseBranch: '${opts.baseBranch}',\\n publishedPointerBranch: '${opts.pointerBranch}',\\n },`\n : ` git: { baseBranch: '${opts.baseBranch}' },`;\n return `/*\n * AUTO-GENERATED — DO NOT EDIT.\n * Generated from cms/schema.json.\n * Run \\`npx octocms types:gen\\` to regenerate.\n */\n\nimport { defineConfig } from 'octocms/defineConfig';\n\nexport const schema = defineConfig({\n projectName: '${opts.projectName}',\n${gitBlock}\n contentFolder: 'cms/content',\n mediaContentFolder: 'cms/media',\n mediaFolder: 'public/media',\n mediaAllowedFormats: ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'avif'],\n collections: {\n helloPage: {\n label: 'Hello Page',\n fields: {\n title: { label: 'Title', format: 'string', entryTitle: true, required: true },\n description: { label: 'Description', format: 'text' },\n },\n },\n },\n});\n`;\n}\n\n/**\n * `cms/octocms.config.ts` — thin TS binding. Imports the literal-typed\n * `schema` from the generated shim and re-exports it as `configOctoCMS` (the\n * runtime `Config`) and `OctoConfig` (the literal type used by `query()`).\n *\n * Hand-edits should go to `cms/schema.json`. After editing the JSON, run\n * `npx octocms types:gen` to refresh `cms/__generated__/schema.ts`.\n */\nexport function octoConfigTemplate(_opts: SchemaInitOpts): string {\n return `import type { Config } from 'octocms/types';\nimport { schema } from './__generated__/schema';\n\n/**\n * The schema is defined in \\`cms/schema.json\\` (source of truth — hand-editable\n * and editable through the Content Model UI). \\`npx octocms types:gen\\` mirrors\n * it into \\`cms/__generated__/schema.ts\\` as a literal-typed \\`defineConfig()\\`\n * call so the downstream \\`query()\\` API can infer narrow collection / field /\n * format types (which a plain JSON import cannot preserve).\n *\n * \\`npm run types:check\\` fails if the JSON and the generated shim drift.\n */\nconst _typedConfigOctoCMS = schema;\n\n/** Runtime config — widened to \\`Config\\` for dynamic indexing in CMS internals. */\nexport const configOctoCMS: Config = _typedConfigOctoCMS as Config;\n\n/**\n * Exact literal type of the config — use this for type-level inference only\n * (e.g. the \\`query()\\` API derives collection/field names from it).\n */\nexport type OctoConfig = typeof _typedConfigOctoCMS;\n`;\n}\n\nexport function nextConfigTemplate(): string {\n return `import type { NextConfig } from 'next';\nimport { withOctoCMS } from 'octocms/config';\nimport { configOctoCMS } from './cms/octocms.config';\n\nexport { configOctoCMS } from './cms/octocms.config';\nexport type { OctoConfig } from './cms/octocms.config';\n\nconst nextConfig: NextConfig = {};\n\nexport default withOctoCMS(nextConfig, configOctoCMS);\n`;\n}\n\nexport function demoHelloPageJson(): string {\n return JSON.stringify(\n {\n sys: { id: '0000', type: 'helloPage', status: 'merged' },\n fields: {\n title: 'Hello World',\n description: 'Welcome to your new OctoCMS site! Edit this content in the CMS admin panel.',\n },\n },\n null,\n 2,\n );\n}\n\nexport const helloPageTemplate = `import { query } from 'cms/__generated__/query';\n\nexport default async function HelloPage() {\n const page = await query('helloPage').first();\n if (!page) return null;\n return (\n <main>\n <h1>{page.fields.title}</h1>\n <p>{page.fields.description}</p>\n </main>\n );\n}\n`;\n\nexport function readmeTemplate(projectName: string): string {\n return `# ${projectName}\n\nBuilt with [OctoCMS](https://octocms.com) — a file-based CMS on Next.js.\n\n## Setup\n\n### 1. Install dependencies\n\n\\`\\`\\`bash\nnpm install octocms next-auth @tanstack/react-query @mdxeditor/editor \\\\\n @radix-ui/react-avatar @radix-ui/react-dialog @radix-ui/react-dropdown-menu \\\\\n @radix-ui/react-label @radix-ui/react-select @radix-ui/react-slot \\\\\n @radix-ui/react-tabs @radix-ui/react-toast \\\\\n class-variance-authority clsx glob lucide-react minisearch octokit \\\\\n react-markdown rehype-sanitize remark-gfm remark-mdx \\\\\n sharp slugify sonner tailwind-merge zod\n\\`\\`\\`\n\n> The exact list (with the right \\`octocms\\` version pin) is also printed by \\`npx octocms init\\` — copy it from there.\n\n### 2. Create a GitHub App\n\nFollow the [OctoCMS GitHub App setup guide](https://octocms.com/docs/github-app) to create a GitHub App for authentication.\n\n### 3. Configure environment variables\n\nCopy the values from your GitHub App into \\`.env.local\\`:\n\n\\`\\`\\`bash\n# GitHub App credentials (required for CMS auth)\nGITHUB_ID=your_github_app_client_id\nGITHUB_SECRET=your_github_app_client_secret\n\n# NextAuth (generate secret: openssl rand -base64 32)\nNEXTAUTH_SECRET=your_nextauth_secret\nNEXTAUTH_URL=http://localhost:3000\n\n# GitHub repo for content storage (required in production)\nGITHUB_REPO_OWNER=your_github_username_or_org\nGITHUB_REPO_NAME=your_repo_name\n\n# Optional: static GitHub token for private repos / higher API rate limits\n# CMS_GITHUB_TOKEN=your_github_pat\n\\`\\`\\`\n\n### 4. Run the dev server\n\n\\`\\`\\`bash\nnpm run dev\n\\`\\`\\`\n\nOpen [http://localhost:3000/cms](http://localhost:3000/cms) to access the CMS admin.\n`;\n}\n\nexport function envLocalTemplate(): string {\n return `# GitHub App credentials (required for CMS auth)\n# Create a GitHub App at: https://github.com/settings/apps/new\nGITHUB_ID=\nGITHUB_SECRET=\n\n# NextAuth secret — generate with: openssl rand -base64 32\nNEXTAUTH_SECRET=\nNEXTAUTH_URL=http://localhost:3000\n\n# GitHub repo for content storage (required in production)\nGITHUB_REPO_OWNER=\nGITHUB_REPO_NAME=\n\n# Optional: static GitHub token for private repos or higher API rate limits\n# CMS_GITHUB_TOKEN=\n`;\n}\n\nconst AGENT_DOCS_MARKER = '<!-- octocms:agent-docs -->';\n\nexport function agentsMdSection(): string {\n return `${AGENT_DOCS_MARKER}\n## OctoCMS — AI Content Management\n\nFor tasks that involve creating, editing, or deleting CMS content directly (without the admin UI), read the auto-generated agent docs:\n\n- **\\`octocms/docs/overview.md\\`** — How to find, create, update, and delete content entries via file operations\n- **\\`octocms/docs/schema.md\\`** — Per-collection field definitions, example JSON, and file path conventions\n\nThese docs are generated from \\`cms/octocms.config.ts\\`. Regenerate after schema changes: \\`npm run agent-docs:gen\\`.`;\n}\n\nexport function agentsMdTemplate(): string {\n return `# Project Guidelines\n\n${agentsMdSection()}\n`;\n}\n\nexport function tsconfigPaths(): Record<string, string[]> {\n return {\n 'cms/__generated__': ['./cms/__generated__/index.ts'],\n 'cms/__generated__/*': ['./cms/__generated__/*'],\n '@/*': ['./src/*'],\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../cli/lib/templates.ts"],"sourcesContent":["/**\n * File templates used by `octocms init` and `octocms update`.\n */\n\nconst CODEGEN_BANNER = `/*\n * AUTO-GENERATED — DO NOT EDIT.\n * Generated from cms/octocms.config.ts.\n * Run \\`npx octocms types:gen\\` to regenerate.\n */\n\n`;\n\n/** Static cms/__generated__/types.ts for the helloPage demo schema. */\nexport const generatedTypesTemplate =\n CODEGEN_BANNER +\n `import type { EntryStatus } from 'octocms/types';\n\nexport interface HelloPageFields {\n title: string;\n description: string;\n}\n\nexport interface HelloPageEntry {\n sys: { id: string; type: 'helloPage'; status: EntryStatus };\n fields: HelloPageFields;\n}\n\nexport type AnyEntry = HelloPageEntry;\n\nexport type EntryMap = {\n helloPage: HelloPageEntry;\n};\n`;\n\n/** Static cms/__generated__/enums.ts for the helloPage demo schema. */\nexport const generatedEnumsTemplate =\n CODEGEN_BANNER +\n `export const CollectionName = {\n HelloPage: 'helloPage',\n} as const;\nexport type CollectionName = (typeof CollectionName)[keyof typeof CollectionName];\n\nexport const COLLECTION_NAMES = ['helloPage'] as const;\n\nexport const FieldFormat = {\n String: 'string',\n Text: 'text',\n Markdown: 'markdown',\n Boolean: 'boolean',\n Reference: 'reference',\n Image: 'image',\n Number: 'number',\n Datetime: 'datetime',\n Json: 'json',\n Slug: 'slug',\n Select: 'select',\n Url: 'url',\n Color: 'color',\n Conditional: 'conditional',\n Richtext: 'richtext',\n} as const;\nexport type FieldFormat = (typeof FieldFormat)[keyof typeof FieldFormat];\n`;\n\n/** Static cms/__generated__/content.d.ts for the helloPage demo schema. */\nexport const generatedContentDeclsTemplate =\n CODEGEN_BANNER +\n `import type { EntryStatus } from 'octocms/types';\n\n// Raw on-disk types (before query() processing).\nexport interface RawHelloPageFields {\n title: string;\n description: string;\n}\n\nexport interface RawHelloPageEntry {\n sys: { id: string; type: 'helloPage'; status: EntryStatus };\n fields: RawHelloPageFields;\n}\n`;\n\n/** Static cms/__generated__/index.ts — always the same shape. */\nexport const generatedIndexTemplate =\n CODEGEN_BANNER +\n `export * from './types';\nexport * from './enums';\nexport * from './query';\n`;\n\n/** Static cms/__generated__/query.ts — always the same shape (schema-independent). */\nexport const generatedQueryTemplate =\n CODEGEN_BANNER +\n `import { createQuery } from 'octocms/query';\nimport { configOctoCMS, type OctoConfig } from '../octocms.config';\nimport type { EntryMap } from './types';\n\n// configOctoCMS is widened to Config for admin internals; cast back to OctoConfig so\n// createQuery preserves literal collection/field names for type-safe queries.\nexport const query = createQuery<EntryMap, OctoConfig>(configOctoCMS as unknown as OctoConfig);\n`;\n\n/** Static cms/__generated__/configInit.ts — always the same shape (schema-independent). */\nexport const generatedConfigInitTemplate =\n CODEGEN_BANNER +\n `import { configOctoCMS } from '../octocms.config';\nimport { setConfig } from 'octocms/lib/configStore';\n\nsetConfig(configOctoCMS);\n`;\n\n/**\n * All scaffolded files import the generated config initialiser via the bare\n * specifier `cms/__generated__/configInit`. Resolution works in two layers:\n *\n * - TypeScript IntelliSense: the consumer's `tsconfig.json` `paths` (added\n * by `octocms init`).\n * - Bundler: an alias registered by `withOctoCMS()` so Webpack and Turbopack\n * resolve the bare specifier from anywhere — including `app/layout.tsx`,\n * route handlers at any depth, and files inside `node_modules/octocms/`.\n *\n * This eliminates the previous depth-counting (`'../../../cms/...'`) that was\n * a recurring source of off-by-one bugs across templates and routes.\n */\nconst CONFIG_INIT_IMPORT = \"import 'cms/__generated__/configInit';\";\n\n/**\n * Minimal root layout written when `app/layout.tsx` does not already exist.\n * The configInit import is the critical side-effect; the rest is a Next.js\n * boilerplate shell.\n */\nexport const rootLayoutTemplate = `${CONFIG_INIT_IMPORT}\nimport type { Metadata } from 'next';\n\nexport const metadata: Metadata = {\n title: 'My App',\n};\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n return (\n <html lang=\"en\">\n <body>{children}</body>\n </html>\n );\n}\n`;\n\n/** The one-liner prepended to an existing root layout to register the config. */\nexport const rootLayoutConfigInitImport = `${CONFIG_INIT_IMPORT}\\n`;\n\nexport function buildAdminLayoutTemplate(): string {\n return `${CONFIG_INIT_IMPORT}\nimport '@mdxeditor/editor/style.css';\nimport 'octocms/globals.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin';\n`;\n}\n\n/**\n * Catch-all admin route — every \\`/cms/*\\` URL renders the package's\n * \\`AdminApp\\` async server component (awaits \\`params\\`, no outer Suspense).\n * Side-effect-imports \\`configInit\\` so server-action bundles register\n * \\`setConfig()\\` even when Next.js does not load \\`layout.tsx\\` for the POST.\n */\nexport function buildAdminPageTemplate(): string {\n return `// Registers setConfig() for server actions — some POST bundles skip layout.tsx.\n${CONFIG_INIT_IMPORT}\n\nexport { AdminApp as default } from 'octocms/admin';\n`;\n}\n\n/**\n * Admin error boundary — rendered by Next.js when anything in the catch-all\n * tree throws during render. Re-uses the shared \\`AdminErrorView\\` so GitHub\n * config / auth / availability / rate-limit copy stays consistent with the\n * public-page error boundary.\n */\nexport const adminErrorTemplate = `'use client';\n\nexport { AdminError as default } from 'octocms/admin';\n`;\n\n/**\n * Historical template values used by \\`octocms update\\` to recognise an\n * unmodified install when migrating between routing models. Each entry is\n * the literal file content shipped by a previous OctoCMS version. If a\n * user-app file matches one of these byte-for-byte, \\`update\\` will replace\n * it with the current template; otherwise it leaves it alone.\n */\nexport const LEGACY_ADMIN_LAYOUT_TEMPLATES: ReadonlyArray<string> = [\n // 0.4.x — re-exported from the deep path.\n `import '../../cms/__generated__/configInit';\nimport 'octocms/globals.css';\nimport '@mdxeditor/editor/style.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin/pages/AdminLayout';\n`,\n // 0.5.x — barrel re-export with depth-counted relative configInit import.\n `import '../../cms/__generated__/configInit';\nimport 'octocms/globals.css';\nimport '@mdxeditor/editor/style.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin';\n`,\n];\n\nexport const LEGACY_ADMIN_CATCH_ALL_TEMPLATES: ReadonlyArray<string> = [\n // 0.4.x — re-exported from the deep path.\n `export { AdminApp as default } from 'octocms/admin/AdminApp';\n`,\n // 0.5.x — barrel re-export without configInit on the page (server actions could miss setConfig).\n `export { AdminApp as default } from 'octocms/admin';\n`,\n // 0.5.x with depth-counted configInit (replaced by bare-specifier alias).\n `// Registers setConfig() for server actions — some POST bundles skip layout.tsx.\nimport '../../../cms/__generated__/configInit';\n\nexport { AdminApp as default } from 'octocms/admin';\n`,\n];\n\nexport const nextAuthRouteTemplate = `import NextAuth from 'next-auth';\nimport { authOptions } from 'octocms/admin/auth';\n\nconst handler = NextAuth(authOptions);\n\nexport { handler as GET, handler as POST };\n`;\n\n/**\n * Build a thin re-export Route Handler for the chat-agent SSE endpoint.\n *\n * The actual handler lives in `octocms/agent/chatApi.ts`\n * (`chatRoute` / `chatStatusRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so\n * `getAgentConfig()` resolves on cold start (Route Handlers don't run\n * `app/layout.tsx`); and\n * 2. re-exports `chatRoute` as `POST` and `chatStatusRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic and can be\n * placed under `app/` or `src/app/` without code changes.\n */\nexport function agentChatRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` + \\`agentConfig\\` into the\n// runtime stores so \\`getAgentConfig()\\` resolves on cold start. Route Handlers\n// don't run \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { chatRoute as POST, chatStatusRoute as GET } from 'octocms/agent';\n`;\n}\n\n/**\n * Build a thin re-export Route Handler for the `/media/[...slug]` proxy.\n *\n * The actual handler lives in `octocms/admin/mediaRoute.ts`\n * (`mediaRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so `getConfig()`\n * resolves on cold start (Route Handlers don't run `app/layout.tsx`); and\n * 2. re-exports `mediaRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic.\n */\nexport function mediaRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` into the runtime store so\n// \\`getConfig()\\` resolves on cold start. Route Handlers don't run\n// \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { mediaRoute as GET } from 'octocms/admin/mediaRoute';\n`;\n}\n\n/**\n * Build a thin re-export Route Handler for the public-site `/api/search`\n * endpoint consumed by the `SearchBox` component shipped at\n * `octocms/components/public`.\n *\n * The actual handler lives in `octocms/admin/searchRoute.ts`\n * (`searchRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so `getConfig()`\n * resolves on cold start (Route Handlers don't run `app/layout.tsx`); and\n * 2. re-exports `searchRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic.\n */\nexport function searchRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` into the runtime store so\n// \\`getConfig()\\` resolves on cold start. Route Handlers don't run\n// \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { searchRoute as GET } from 'octocms/admin/searchRoute';\n`;\n}\n\ntype SchemaInitOpts = { projectName: string; baseBranch: string; pointerBranch?: string };\n\n/**\n * The starter schema used by `octocms init`. The data lives in `cms/schema.json`\n * (source of truth — hand-editable + edited by the Content Model UI). The other\n * two scaffolded files (`cms/__generated__/schema.ts` and `cms/octocms.config.ts`)\n * mirror this same shape — keep them aligned by editing here only and letting\n * `npx octocms types:gen` regenerate the rest in the user's project.\n */\nfunction buildStarterSchema(opts: SchemaInitOpts): Record<string, unknown> {\n const git: Record<string, string> = { baseBranch: opts.baseBranch };\n if (opts.pointerBranch) git.publishedPointerBranch = opts.pointerBranch;\n return {\n projectName: opts.projectName,\n git,\n contentFolder: 'cms/content',\n mediaContentFolder: 'cms/media',\n mediaFolder: 'public/media',\n mediaAllowedFormats: ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'avif'],\n collections: {\n helloPage: {\n label: 'Hello Page',\n fields: {\n title: { label: 'Title', format: 'string', entryTitle: true, required: true },\n description: { label: 'Description', format: 'text' },\n },\n },\n },\n };\n}\n\n/**\n * `cms/schema.json` — the source of truth. The Content Model UI (`/cms/model`)\n * reads and writes this file via `getSchema()` / `saveSchema()` server actions.\n */\nexport function schemaJsonTemplate(opts: SchemaInitOpts): string {\n return JSON.stringify(buildStarterSchema(opts), null, 2) + '\\n';\n}\n\n/**\n * `cms/__generated__/schema.ts` — auto-generated literal-typed mirror of\n * `cms/schema.json`. Required because `query()` infers narrow collection /\n * field / format types from the literal `defineConfig()` call — a plain JSON\n * import cannot preserve those literals.\n *\n * `npx octocms types:gen` regenerates this from `cms/schema.json` after every\n * schema edit (and `npm run types:check` fails on drift).\n */\nexport function generatedSchemaShimTemplate(opts: SchemaInitOpts): string {\n const gitBlock = opts.pointerBranch\n ? ` git: {\\n baseBranch: '${opts.baseBranch}',\\n publishedPointerBranch: '${opts.pointerBranch}',\\n },`\n : ` git: { baseBranch: '${opts.baseBranch}' },`;\n return `/*\n * AUTO-GENERATED — DO NOT EDIT.\n * Generated from cms/schema.json.\n * Run \\`npx octocms types:gen\\` to regenerate.\n */\n\nimport { defineConfig } from 'octocms/defineConfig';\n\nexport const schema = defineConfig({\n projectName: '${opts.projectName}',\n${gitBlock}\n contentFolder: 'cms/content',\n mediaContentFolder: 'cms/media',\n mediaFolder: 'public/media',\n mediaAllowedFormats: ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'avif'],\n collections: {\n helloPage: {\n label: 'Hello Page',\n fields: {\n title: { label: 'Title', format: 'string', entryTitle: true, required: true },\n description: { label: 'Description', format: 'text' },\n },\n },\n },\n});\n`;\n}\n\n/**\n * `cms/octocms.config.ts` — thin TS binding. Imports the literal-typed\n * `schema` from the generated shim and re-exports it as `configOctoCMS` (the\n * runtime `Config`) and `OctoConfig` (the literal type used by `query()`).\n *\n * Hand-edits should go to `cms/schema.json`. After editing the JSON, run\n * `npx octocms types:gen` to refresh `cms/__generated__/schema.ts`.\n */\nexport function octoConfigTemplate(_opts: SchemaInitOpts): string {\n return `import type { Config } from 'octocms/types';\nimport { schema } from './__generated__/schema';\n\n/**\n * The schema is defined in \\`cms/schema.json\\` (source of truth — hand-editable\n * and editable through the Content Model UI). \\`npx octocms types:gen\\` mirrors\n * it into \\`cms/__generated__/schema.ts\\` as a literal-typed \\`defineConfig()\\`\n * call so the downstream \\`query()\\` API can infer narrow collection / field /\n * format types (which a plain JSON import cannot preserve).\n *\n * \\`npm run types:check\\` fails if the JSON and the generated shim drift.\n */\nconst _typedConfigOctoCMS = schema;\n\n/** Runtime config — widened to \\`Config\\` for dynamic indexing in CMS internals. */\nexport const configOctoCMS: Config = _typedConfigOctoCMS as Config;\n\n/**\n * Exact literal type of the config — use this for type-level inference only\n * (e.g. the \\`query()\\` API derives collection/field names from it).\n */\nexport type OctoConfig = typeof _typedConfigOctoCMS;\n`;\n}\n\nexport function nextConfigTemplate(): string {\n return `import type { NextConfig } from 'next';\nimport { withOctoCMS } from 'octocms/config';\nimport { configOctoCMS } from './cms/octocms.config';\n\nexport { configOctoCMS } from './cms/octocms.config';\nexport type { OctoConfig } from './cms/octocms.config';\n\nconst nextConfig: NextConfig = {};\n\nexport default withOctoCMS(nextConfig, configOctoCMS);\n`;\n}\n\nexport function demoHelloPageJson(): string {\n return JSON.stringify(\n {\n sys: { id: '0000', type: 'helloPage', status: 'merged' },\n fields: {\n title: 'Hello World',\n description: 'Welcome to your new OctoCMS site! Edit this content in the CMS admin panel.',\n },\n },\n null,\n 2,\n );\n}\n\nexport const helloPageTemplate = `import { query } from 'cms/__generated__/query';\n\nexport default async function HelloPage() {\n const page = await query('helloPage').first();\n if (!page) return null;\n return (\n <main>\n <h1>{page.fields.title}</h1>\n <p>{page.fields.description}</p>\n </main>\n );\n}\n`;\n\nexport function readmeTemplate(projectName: string): string {\n return `# ${projectName}\n\nBuilt with [OctoCMS](https://octocms.com) — a file-based CMS on Next.js.\n\n## Setup\n\n### 1. Install dependencies\n\n\\`\\`\\`bash\nnpm install octocms next-auth @tanstack/react-query @mdxeditor/editor \\\\\n minisearch octokit \\\\\n react-markdown rehype-sanitize remark-gfm remark-mdx \\\\\n sharp zod\n\\`\\`\\`\n\n> The exact list (with the right \\`octocms\\` version pin) is also printed by \\`npx octocms init\\` — copy it from there.\n\n### 2. Create a GitHub App\n\nFollow the [OctoCMS GitHub App setup guide](https://octocms.com/docs/github-app) to create a GitHub App for authentication.\n\n### 3. Configure environment variables\n\nCopy the values from your GitHub App into \\`.env.local\\`:\n\n\\`\\`\\`bash\n# GitHub App credentials (required for CMS auth)\nGITHUB_ID=your_github_app_client_id\nGITHUB_SECRET=your_github_app_client_secret\n\n# NextAuth (generate secret: openssl rand -base64 32)\nNEXTAUTH_SECRET=your_nextauth_secret\nNEXTAUTH_URL=http://localhost:3000\n\n# GitHub repo for content storage (required in production)\nGITHUB_REPO_OWNER=your_github_username_or_org\nGITHUB_REPO_NAME=your_repo_name\n\n# Optional: static GitHub token for private repos / higher API rate limits\n# CMS_GITHUB_TOKEN=your_github_pat\n\\`\\`\\`\n\n### 4. Run the dev server\n\n\\`\\`\\`bash\nnpm run dev\n\\`\\`\\`\n\nOpen [http://localhost:3000/cms](http://localhost:3000/cms) to access the CMS admin.\n`;\n}\n\nexport function envLocalTemplate(): string {\n return `# GitHub App credentials (required for CMS auth)\n# Create a GitHub App at: https://github.com/settings/apps/new\nGITHUB_ID=\nGITHUB_SECRET=\n\n# NextAuth secret — generate with: openssl rand -base64 32\nNEXTAUTH_SECRET=\nNEXTAUTH_URL=http://localhost:3000\n\n# GitHub repo for content storage (required in production)\nGITHUB_REPO_OWNER=\nGITHUB_REPO_NAME=\n\n# Optional: static GitHub token for private repos or higher API rate limits\n# CMS_GITHUB_TOKEN=\n`;\n}\n\nconst AGENT_DOCS_MARKER = '<!-- octocms:agent-docs -->';\n\nexport function agentsMdSection(): string {\n return `${AGENT_DOCS_MARKER}\n## OctoCMS — AI Content Management\n\nFor tasks that involve creating, editing, or deleting CMS content directly (without the admin UI), read the auto-generated agent docs:\n\n- **\\`octocms/docs/overview.md\\`** — How to find, create, update, and delete content entries via file operations\n- **\\`octocms/docs/schema.md\\`** — Per-collection field definitions, example JSON, and file path conventions\n\nThese docs are generated from \\`cms/octocms.config.ts\\`. Regenerate after schema changes: \\`npm run agent-docs:gen\\`.`;\n}\n\nexport function agentsMdTemplate(): string {\n return `# Project Guidelines\n\n${agentsMdSection()}\n`;\n}\n\nexport function tsconfigPaths(): Record<string, string[]> {\n return {\n 'cms/__generated__': ['./cms/__generated__/index.ts'],\n 'cms/__generated__/*': ['./cms/__generated__/*'],\n '@/*': ['./src/*'],\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,7 @@
1
+ // package.json
2
+ var version = "0.4.16";
3
+
4
+ export {
5
+ version
6
+ };
7
+ //# sourceMappingURL=chunk-TOUAHFDW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"octocms\",\n \"version\": \"0.4.13\",\n \"description\": \"A file-based CMS for Next.js — schema-driven, Git-backed, no database\",\n \"license\": \"MIT\",\n \"type\": \"module\",\n \"keywords\": [\n \"cms\",\n \"nextjs\",\n \"headless-cms\",\n \"git-cms\",\n \"content-management\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/octocms/octocms.git\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"require\": \"./dist/index.cjs\",\n \"import\": \"./dist/index.js\"\n },\n \"./query\": {\n \"types\": \"./dist/query.d.ts\",\n \"require\": \"./dist/query.cjs\",\n \"import\": \"./dist/query.js\"\n },\n \"./config\": {\n \"types\": \"./dist/config.d.ts\",\n \"require\": \"./dist/config.cjs\",\n \"import\": \"./dist/config.js\"\n },\n \"./defineConfig\": {\n \"types\": \"./dist/defineConfig.d.ts\",\n \"require\": \"./dist/defineConfig.cjs\",\n \"import\": \"./dist/defineConfig.js\"\n },\n \"./types\": {\n \"types\": \"./dist/types.d.ts\",\n \"require\": \"./dist/types.cjs\",\n \"import\": \"./dist/types.js\"\n },\n \"./withOctoCMS\": {\n \"types\": \"./dist/withOctoCMS.d.ts\",\n \"require\": \"./dist/withOctoCMS.cjs\",\n \"import\": \"./dist/withOctoCMS.js\"\n },\n \"./agent\": {\n \"types\": \"./dist/agent/index.d.ts\",\n \"require\": \"./dist/agent/index.cjs\",\n \"import\": \"./dist/agent/index.js\"\n },\n \"./schema\": {\n \"types\": \"./dist/schema/index.d.ts\",\n \"import\": \"./dist/schema/index.js\"\n },\n \"./components/public\": {\n \"types\": \"./dist/components/public/index.d.ts\",\n \"require\": \"./dist/components/public/index.cjs\",\n \"import\": \"./dist/components/public/index.js\"\n },\n \"./lib/configStore\": {\n \"types\": \"./dist/lib/configStore.d.ts\",\n \"require\": \"./dist/lib/configStore.cjs\",\n \"import\": \"./dist/lib/configStore.js\"\n },\n \"./admin\": {\n \"types\": \"./dist/admin/index.d.ts\",\n \"import\": \"./dist/admin/index.js\"\n },\n \"./admin/*\": {\n \"types\": \"./dist/admin/*.d.ts\",\n \"import\": \"./dist/admin/*.js\"\n },\n \"./components/*\": {\n \"types\": \"./dist/components/*.d.ts\",\n \"import\": \"./dist/components/*.js\"\n },\n \"./hooks/*\": {\n \"types\": \"./dist/hooks/*.d.ts\",\n \"import\": \"./dist/hooks/*.js\"\n },\n \"./lib/*\": {\n \"types\": \"./dist/lib/*.d.ts\",\n \"import\": \"./dist/lib/*.js\"\n },\n \"./schema/*\": {\n \"types\": \"./dist/schema/*.d.ts\",\n \"import\": \"./dist/schema/*.js\"\n },\n \"./utils/*\": {\n \"types\": \"./dist/utils/*.d.ts\",\n \"import\": \"./dist/utils/*.js\"\n },\n \"./globals.css\": \"./globals.css\",\n \"./docs/*\": \"./docs/*\"\n },\n \"bin\": {\n \"octocms\": \"dist/cli/index.js\"\n },\n \"files\": [\n \"dist\",\n \"docs\",\n \"globals.css\"\n ],\n \"scripts\": {\n \"build\": \"tsup && tsc -p tsconfig.build.json && cp globals.css dist/globals.css\",\n \"prepublishOnly\": \"npm run checks && npm run build\",\n \"lint\": \"oxlint .\",\n \"lint:fix\": \"oxlint --fix .\",\n \"fmt\": \"oxfmt .\",\n \"fmt:check\": \"oxfmt --check .\",\n \"test\": \"vitest\",\n \"test:run\": \"vitest run\",\n \"ts-check\": \"tsc --noEmit --incremental false\",\n \"checks\": \"npm run lint && npm run ts-check && npm run fmt:check && npm run test:run\",\n \"checks:fix\": \"npm run lint:fix && npm run fmt && npm run test:run\"\n },\n \"peerDependencies\": {\n \"@anthropic-ai/sdk\": \">=0.91\",\n \"@huggingface/transformers\": \">=4\",\n \"@mdxeditor/editor\": \">=3\",\n \"@radix-ui/react-avatar\": \">=1\",\n \"@radix-ui/react-dialog\": \">=1\",\n \"@radix-ui/react-dropdown-menu\": \">=2\",\n \"@radix-ui/react-label\": \">=2\",\n \"@radix-ui/react-select\": \">=2\",\n \"@radix-ui/react-slot\": \">=1\",\n \"@radix-ui/react-tabs\": \">=1\",\n \"@radix-ui/react-toast\": \">=1\",\n \"@tanstack/react-query\": \">=5\",\n \"class-variance-authority\": \">=0.7\",\n \"clsx\": \">=2\",\n \"glob\": \">=11\",\n \"lucide-react\": \">=1\",\n \"mammoth\": \">=1.12\",\n \"minisearch\": \">=7\",\n \"next\": \">=15\",\n \"next-auth\": \">=4\",\n \"octokit\": \">=4\",\n \"openai\": \">=4\",\n \"pdfjs-dist\": \">=4\",\n \"react\": \">=18\",\n \"react-dom\": \">=18\",\n \"react-markdown\": \">=10\",\n \"rehype-sanitize\": \">=6\",\n \"remark-gfm\": \">=4\",\n \"remark-mdx\": \">=3\",\n \"sharp\": \">=0.34\",\n \"slugify\": \">=1\",\n \"sonner\": \">=2\",\n \"tailwind-merge\": \">=3\",\n \"zod\": \">=4\"\n },\n \"peerDependenciesMeta\": {\n \"@anthropic-ai/sdk\": {\n \"optional\": true\n },\n \"@huggingface/transformers\": {\n \"optional\": true\n },\n \"mammoth\": {\n \"optional\": true\n },\n \"openai\": {\n \"optional\": true\n },\n \"pdfjs-dist\": {\n \"optional\": true\n }\n },\n \"devDependencies\": {\n \"@tanstack/react-query\": \"^5.100.9\",\n \"@testing-library/dom\": \"^10.4.1\",\n \"@testing-library/react\": \"^16.3.2\",\n \"@types/node\": \"^20\",\n \"@types/react\": \"^19.2.14\",\n \"@types/react-dom\": \"^19.2.3\",\n \"@vitejs/plugin-react\": \"^6.0.1\",\n \"jsdom\": \"^29.0.1\",\n \"oxfmt\": \"^0.11.0\",\n \"oxlint\": \"^0.17.0\",\n \"tsup\": \"^8.0.0\",\n \"typescript\": \"^5.9.3\",\n \"vite-tsconfig-paths\": \"^6.1.1\",\n \"vitest\": \"^4.1.2\"\n }\n}\n"],"mappings":";AAEE,cAAW;","names":[]}
1
+ {"version":3,"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"octocms\",\n \"version\": \"0.4.16\",\n \"description\": \"A file-based CMS for Next.js — schema-driven, Git-backed, no database\",\n \"license\": \"MIT\",\n \"type\": \"module\",\n \"keywords\": [\n \"cms\",\n \"nextjs\",\n \"headless-cms\",\n \"git-cms\",\n \"content-management\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/octocms/octocms.git\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"require\": \"./dist/index.cjs\",\n \"import\": \"./dist/index.js\"\n },\n \"./query\": {\n \"types\": \"./dist/query.d.ts\",\n \"require\": \"./dist/query.cjs\",\n \"import\": \"./dist/query.js\"\n },\n \"./config\": {\n \"types\": \"./dist/config.d.ts\",\n \"require\": \"./dist/config.cjs\",\n \"import\": \"./dist/config.js\"\n },\n \"./defineConfig\": {\n \"types\": \"./dist/defineConfig.d.ts\",\n \"require\": \"./dist/defineConfig.cjs\",\n \"import\": \"./dist/defineConfig.js\"\n },\n \"./types\": {\n \"types\": \"./dist/types.d.ts\",\n \"require\": \"./dist/types.cjs\",\n \"import\": \"./dist/types.js\"\n },\n \"./withOctoCMS\": {\n \"types\": \"./dist/withOctoCMS.d.ts\",\n \"require\": \"./dist/withOctoCMS.cjs\",\n \"import\": \"./dist/withOctoCMS.js\"\n },\n \"./agent\": {\n \"types\": \"./dist/agent/index.d.ts\",\n \"require\": \"./dist/agent/index.cjs\",\n \"import\": \"./dist/agent/index.js\"\n },\n \"./schema\": {\n \"types\": \"./dist/schema/index.d.ts\",\n \"import\": \"./dist/schema/index.js\"\n },\n \"./components/public\": {\n \"types\": \"./dist/components/public/index.d.ts\",\n \"require\": \"./dist/components/public/index.cjs\",\n \"import\": \"./dist/components/public/index.js\"\n },\n \"./lib/configStore\": {\n \"types\": \"./dist/lib/configStore.d.ts\",\n \"require\": \"./dist/lib/configStore.cjs\",\n \"import\": \"./dist/lib/configStore.js\"\n },\n \"./admin\": {\n \"types\": \"./dist/admin/index.d.ts\",\n \"import\": \"./dist/admin/index.js\"\n },\n \"./admin/*\": {\n \"types\": \"./dist/admin/*.d.ts\",\n \"import\": \"./dist/admin/*.js\"\n },\n \"./components/*\": {\n \"types\": \"./dist/components/*.d.ts\",\n \"import\": \"./dist/components/*.js\"\n },\n \"./hooks/*\": {\n \"types\": \"./dist/hooks/*.d.ts\",\n \"import\": \"./dist/hooks/*.js\"\n },\n \"./lib/*\": {\n \"types\": \"./dist/lib/*.d.ts\",\n \"import\": \"./dist/lib/*.js\"\n },\n \"./schema/*\": {\n \"types\": \"./dist/schema/*.d.ts\",\n \"import\": \"./dist/schema/*.js\"\n },\n \"./utils/*\": {\n \"types\": \"./dist/utils/*.d.ts\",\n \"import\": \"./dist/utils/*.js\"\n },\n \"./globals.css\": \"./globals.css\",\n \"./docs/*\": \"./docs/*\"\n },\n \"bin\": {\n \"octocms\": \"dist/cli/index.js\"\n },\n \"files\": [\n \"dist\",\n \"docs\",\n \"globals.css\"\n ],\n \"scripts\": {\n \"build\": \"tsup && tsc -p tsconfig.build.json && cp globals.css dist/globals.css\",\n \"prepublishOnly\": \"npm run checks && npm run build\",\n \"lint\": \"oxlint .\",\n \"lint:fix\": \"oxlint --fix .\",\n \"fmt\": \"oxfmt .\",\n \"fmt:check\": \"oxfmt --check .\",\n \"test\": \"vitest\",\n \"test:run\": \"vitest run\",\n \"ts-check\": \"tsc --noEmit --incremental false\",\n \"checks\": \"npm run lint && npm run ts-check && npm run fmt:check && npm run test:run\",\n \"checks:fix\": \"npm run lint:fix && npm run fmt && npm run test:run\"\n },\n \"peerDependencies\": {\n \"@anthropic-ai/sdk\": \">=0.91\",\n \"@huggingface/transformers\": \">=4\",\n \"@mdxeditor/editor\": \">=3\",\n \"@tanstack/react-query\": \">=5\",\n \"mammoth\": \">=1.12\",\n \"minisearch\": \">=7\",\n \"next\": \">=15\",\n \"next-auth\": \">=4\",\n \"octokit\": \">=4\",\n \"openai\": \">=4\",\n \"pdfjs-dist\": \">=4\",\n \"react\": \">=18\",\n \"react-dom\": \">=18\",\n \"react-markdown\": \">=10\",\n \"rehype-sanitize\": \">=6\",\n \"remark-gfm\": \">=4\",\n \"remark-mdx\": \">=3\",\n \"sharp\": \">=0.34\",\n \"zod\": \">=4\"\n },\n \"peerDependenciesMeta\": {\n \"@anthropic-ai/sdk\": {\n \"optional\": true\n },\n \"@huggingface/transformers\": {\n \"optional\": true\n },\n \"mammoth\": {\n \"optional\": true\n },\n \"openai\": {\n \"optional\": true\n },\n \"pdfjs-dist\": {\n \"optional\": true\n }\n },\n \"devDependencies\": {\n \"@tanstack/react-query\": \"^5.100.9\",\n \"@testing-library/dom\": \"^10.4.1\",\n \"@testing-library/react\": \"^16.3.2\",\n \"@types/node\": \"^20\",\n \"@types/react\": \"^19.2.14\",\n \"@types/react-dom\": \"^19.2.3\",\n \"@vitejs/plugin-react\": \"^6.0.1\",\n \"jsdom\": \"^29.0.1\",\n \"oxfmt\": \"^0.11.0\",\n \"oxlint\": \"^0.17.0\",\n \"tsup\": \"^8.0.0\",\n \"typescript\": \"^5.9.3\",\n \"vite-tsconfig-paths\": \"^6.1.1\",\n \"vitest\": \"^4.1.2\"\n }\n}\n"],"mappings":";AAEE,cAAW;","names":[]}
package/dist/cli/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  version
4
- } from "../chunk-NAHOP7TG.js";
4
+ } from "../chunk-TOUAHFDW.js";
5
5
  import {
6
6
  resolveProjectRoot
7
7
  } from "../chunk-ZYUK2J5L.js";
@@ -164,7 +164,7 @@ async function main() {
164
164
  try {
165
165
  switch (command) {
166
166
  case "init": {
167
- const { initCommand } = await import("../init-KWH66PKY.js");
167
+ const { initCommand } = await import("../init-KNIWQGJL.js");
168
168
  await initCommand(process.cwd(), { yes: flags.yes === true });
169
169
  break;
170
170
  }
@@ -195,13 +195,13 @@ async function main() {
195
195
  }
196
196
  case "update": {
197
197
  const projectRoot = resolveProjectRoot();
198
- const { updateCommand } = await import("../update-QNJRYPMC.js");
198
+ const { updateCommand } = await import("../update-QALIQG76.js");
199
199
  await updateCommand(projectRoot);
200
200
  break;
201
201
  }
202
202
  case "agent-docs": {
203
203
  const projectRoot = resolveProjectRoot();
204
- const { agentDocsCommand } = await import("../agentDocs-M3R2CPUQ.js");
204
+ const { agentDocsCommand } = await import("../agentDocs-QZ4NOQVH.js");
205
205
  await agentDocsCommand(projectRoot);
206
206
  break;
207
207
  }
@@ -100,8 +100,8 @@ const rootLayoutConfigInitImport = `${CONFIG_INIT_IMPORT}
100
100
  `;
101
101
  function buildAdminLayoutTemplate() {
102
102
  return `${CONFIG_INIT_IMPORT}
103
- import 'octocms/globals.css';
104
103
  import '@mdxeditor/editor/style.css';
104
+ import 'octocms/globals.css';
105
105
 
106
106
  export { AdminLayout as default, metadata } from 'octocms/admin';
107
107
  `;
@@ -312,12 +312,9 @@ Built with [OctoCMS](https://octocms.com) \u2014 a file-based CMS on Next.js.
312
312
 
313
313
  \`\`\`bash
314
314
  npm install octocms next-auth @tanstack/react-query @mdxeditor/editor \\
315
- @radix-ui/react-avatar @radix-ui/react-dialog @radix-ui/react-dropdown-menu \\
316
- @radix-ui/react-label @radix-ui/react-select @radix-ui/react-slot \\
317
- @radix-ui/react-tabs @radix-ui/react-toast \\
318
- class-variance-authority clsx glob lucide-react minisearch octokit \\
315
+ minisearch octokit \\
319
316
  react-markdown rehype-sanitize remark-gfm remark-mdx \\
320
- sharp slugify sonner tailwind-merge zod
317
+ sharp zod
321
318
  \`\`\`
322
319
 
323
320
  > The exact list (with the right \`octocms\` version pin) is also printed by \`npx octocms init\` \u2014 copy it from there.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../cli/lib/templates.ts"],"sourcesContent":["/**\n * File templates used by `octocms init` and `octocms update`.\n */\n\nconst CODEGEN_BANNER = `/*\n * AUTO-GENERATED — DO NOT EDIT.\n * Generated from cms/octocms.config.ts.\n * Run \\`npx octocms types:gen\\` to regenerate.\n */\n\n`;\n\n/** Static cms/__generated__/types.ts for the helloPage demo schema. */\nexport const generatedTypesTemplate =\n CODEGEN_BANNER +\n `import type { EntryStatus } from 'octocms/types';\n\nexport interface HelloPageFields {\n title: string;\n description: string;\n}\n\nexport interface HelloPageEntry {\n sys: { id: string; type: 'helloPage'; status: EntryStatus };\n fields: HelloPageFields;\n}\n\nexport type AnyEntry = HelloPageEntry;\n\nexport type EntryMap = {\n helloPage: HelloPageEntry;\n};\n`;\n\n/** Static cms/__generated__/enums.ts for the helloPage demo schema. */\nexport const generatedEnumsTemplate =\n CODEGEN_BANNER +\n `export const CollectionName = {\n HelloPage: 'helloPage',\n} as const;\nexport type CollectionName = (typeof CollectionName)[keyof typeof CollectionName];\n\nexport const COLLECTION_NAMES = ['helloPage'] as const;\n\nexport const FieldFormat = {\n String: 'string',\n Text: 'text',\n Markdown: 'markdown',\n Boolean: 'boolean',\n Reference: 'reference',\n Image: 'image',\n Number: 'number',\n Datetime: 'datetime',\n Json: 'json',\n Slug: 'slug',\n Select: 'select',\n Url: 'url',\n Color: 'color',\n Conditional: 'conditional',\n Richtext: 'richtext',\n} as const;\nexport type FieldFormat = (typeof FieldFormat)[keyof typeof FieldFormat];\n`;\n\n/** Static cms/__generated__/content.d.ts for the helloPage demo schema. */\nexport const generatedContentDeclsTemplate =\n CODEGEN_BANNER +\n `import type { EntryStatus } from 'octocms/types';\n\n// Raw on-disk types (before query() processing).\nexport interface RawHelloPageFields {\n title: string;\n description: string;\n}\n\nexport interface RawHelloPageEntry {\n sys: { id: string; type: 'helloPage'; status: EntryStatus };\n fields: RawHelloPageFields;\n}\n`;\n\n/** Static cms/__generated__/index.ts — always the same shape. */\nexport const generatedIndexTemplate =\n CODEGEN_BANNER +\n `export * from './types';\nexport * from './enums';\nexport * from './query';\n`;\n\n/** Static cms/__generated__/query.ts — always the same shape (schema-independent). */\nexport const generatedQueryTemplate =\n CODEGEN_BANNER +\n `import { createQuery } from 'octocms/query';\nimport { configOctoCMS, type OctoConfig } from '../octocms.config';\nimport type { EntryMap } from './types';\n\n// configOctoCMS is widened to Config for admin internals; cast back to OctoConfig so\n// createQuery preserves literal collection/field names for type-safe queries.\nexport const query = createQuery<EntryMap, OctoConfig>(configOctoCMS as unknown as OctoConfig);\n`;\n\n/** Static cms/__generated__/configInit.ts — always the same shape (schema-independent). */\nexport const generatedConfigInitTemplate =\n CODEGEN_BANNER +\n `import { configOctoCMS } from '../octocms.config';\nimport { setConfig } from 'octocms/lib/configStore';\n\nsetConfig(configOctoCMS);\n`;\n\n/**\n * All scaffolded files import the generated config initialiser via the bare\n * specifier `cms/__generated__/configInit`. Resolution works in two layers:\n *\n * - TypeScript IntelliSense: the consumer's `tsconfig.json` `paths` (added\n * by `octocms init`).\n * - Bundler: an alias registered by `withOctoCMS()` so Webpack and Turbopack\n * resolve the bare specifier from anywhere — including `app/layout.tsx`,\n * route handlers at any depth, and files inside `node_modules/octocms/`.\n *\n * This eliminates the previous depth-counting (`'../../../cms/...'`) that was\n * a recurring source of off-by-one bugs across templates and routes.\n */\nconst CONFIG_INIT_IMPORT = \"import 'cms/__generated__/configInit';\";\n\n/**\n * Minimal root layout written when `app/layout.tsx` does not already exist.\n * The configInit import is the critical side-effect; the rest is a Next.js\n * boilerplate shell.\n */\nexport const rootLayoutTemplate = `${CONFIG_INIT_IMPORT}\nimport type { Metadata } from 'next';\n\nexport const metadata: Metadata = {\n title: 'My App',\n};\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n return (\n <html lang=\"en\">\n <body>{children}</body>\n </html>\n );\n}\n`;\n\n/** The one-liner prepended to an existing root layout to register the config. */\nexport const rootLayoutConfigInitImport = `${CONFIG_INIT_IMPORT}\\n`;\n\nexport function buildAdminLayoutTemplate(): string {\n return `${CONFIG_INIT_IMPORT}\nimport 'octocms/globals.css';\nimport '@mdxeditor/editor/style.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin';\n`;\n}\n\n/**\n * Catch-all admin route — every \\`/cms/*\\` URL renders the package's\n * \\`AdminApp\\` async server component (awaits \\`params\\`, no outer Suspense).\n * Side-effect-imports \\`configInit\\` so server-action bundles register\n * \\`setConfig()\\` even when Next.js does not load \\`layout.tsx\\` for the POST.\n */\nexport function buildAdminPageTemplate(): string {\n return `// Registers setConfig() for server actions — some POST bundles skip layout.tsx.\n${CONFIG_INIT_IMPORT}\n\nexport { AdminApp as default } from 'octocms/admin';\n`;\n}\n\n/**\n * Admin error boundary — rendered by Next.js when anything in the catch-all\n * tree throws during render. Re-uses the shared \\`AdminErrorView\\` so GitHub\n * config / auth / availability / rate-limit copy stays consistent with the\n * public-page error boundary.\n */\nexport const adminErrorTemplate = `'use client';\n\nexport { AdminError as default } from 'octocms/admin';\n`;\n\n/**\n * Historical template values used by \\`octocms update\\` to recognise an\n * unmodified install when migrating between routing models. Each entry is\n * the literal file content shipped by a previous OctoCMS version. If a\n * user-app file matches one of these byte-for-byte, \\`update\\` will replace\n * it with the current template; otherwise it leaves it alone.\n */\nexport const LEGACY_ADMIN_LAYOUT_TEMPLATES: ReadonlyArray<string> = [\n // 0.4.x — re-exported from the deep path.\n `import '../../cms/__generated__/configInit';\nimport 'octocms/globals.css';\nimport '@mdxeditor/editor/style.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin/pages/AdminLayout';\n`,\n // 0.5.x — barrel re-export with depth-counted relative configInit import.\n `import '../../cms/__generated__/configInit';\nimport 'octocms/globals.css';\nimport '@mdxeditor/editor/style.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin';\n`,\n];\n\nexport const LEGACY_ADMIN_CATCH_ALL_TEMPLATES: ReadonlyArray<string> = [\n // 0.4.x — re-exported from the deep path.\n `export { AdminApp as default } from 'octocms/admin/AdminApp';\n`,\n // 0.5.x — barrel re-export without configInit on the page (server actions could miss setConfig).\n `export { AdminApp as default } from 'octocms/admin';\n`,\n // 0.5.x with depth-counted configInit (replaced by bare-specifier alias).\n `// Registers setConfig() for server actions — some POST bundles skip layout.tsx.\nimport '../../../cms/__generated__/configInit';\n\nexport { AdminApp as default } from 'octocms/admin';\n`,\n];\n\nexport const nextAuthRouteTemplate = `import NextAuth from 'next-auth';\nimport { authOptions } from 'octocms/admin/auth';\n\nconst handler = NextAuth(authOptions);\n\nexport { handler as GET, handler as POST };\n`;\n\n/**\n * Build a thin re-export Route Handler for the chat-agent SSE endpoint.\n *\n * The actual handler lives in `octocms/agent/chatApi.ts`\n * (`chatRoute` / `chatStatusRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so\n * `getAgentConfig()` resolves on cold start (Route Handlers don't run\n * `app/layout.tsx`); and\n * 2. re-exports `chatRoute` as `POST` and `chatStatusRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic and can be\n * placed under `app/` or `src/app/` without code changes.\n */\nexport function agentChatRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` + \\`agentConfig\\` into the\n// runtime stores so \\`getAgentConfig()\\` resolves on cold start. Route Handlers\n// don't run \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { chatRoute as POST, chatStatusRoute as GET } from 'octocms/agent';\n`;\n}\n\n/**\n * Build a thin re-export Route Handler for the `/media/[...slug]` proxy.\n *\n * The actual handler lives in `octocms/admin/mediaRoute.ts`\n * (`mediaRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so `getConfig()`\n * resolves on cold start (Route Handlers don't run `app/layout.tsx`); and\n * 2. re-exports `mediaRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic.\n */\nexport function mediaRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` into the runtime store so\n// \\`getConfig()\\` resolves on cold start. Route Handlers don't run\n// \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { mediaRoute as GET } from 'octocms/admin/mediaRoute';\n`;\n}\n\n/**\n * Build a thin re-export Route Handler for the public-site `/api/search`\n * endpoint consumed by the `SearchBox` component shipped at\n * `octocms/components/public`.\n *\n * The actual handler lives in `octocms/admin/searchRoute.ts`\n * (`searchRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so `getConfig()`\n * resolves on cold start (Route Handlers don't run `app/layout.tsx`); and\n * 2. re-exports `searchRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic.\n */\nexport function searchRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` into the runtime store so\n// \\`getConfig()\\` resolves on cold start. Route Handlers don't run\n// \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { searchRoute as GET } from 'octocms/admin/searchRoute';\n`;\n}\n\ntype SchemaInitOpts = { projectName: string; baseBranch: string; pointerBranch?: string };\n\n/**\n * The starter schema used by `octocms init`. The data lives in `cms/schema.json`\n * (source of truth — hand-editable + edited by the Content Model UI). The other\n * two scaffolded files (`cms/__generated__/schema.ts` and `cms/octocms.config.ts`)\n * mirror this same shape — keep them aligned by editing here only and letting\n * `npx octocms types:gen` regenerate the rest in the user's project.\n */\nfunction buildStarterSchema(opts: SchemaInitOpts): Record<string, unknown> {\n const git: Record<string, string> = { baseBranch: opts.baseBranch };\n if (opts.pointerBranch) git.publishedPointerBranch = opts.pointerBranch;\n return {\n projectName: opts.projectName,\n git,\n contentFolder: 'cms/content',\n mediaContentFolder: 'cms/media',\n mediaFolder: 'public/media',\n mediaAllowedFormats: ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'avif'],\n collections: {\n helloPage: {\n label: 'Hello Page',\n fields: {\n title: { label: 'Title', format: 'string', entryTitle: true, required: true },\n description: { label: 'Description', format: 'text' },\n },\n },\n },\n };\n}\n\n/**\n * `cms/schema.json` — the source of truth. The Content Model UI (`/cms/model`)\n * reads and writes this file via `getSchema()` / `saveSchema()` server actions.\n */\nexport function schemaJsonTemplate(opts: SchemaInitOpts): string {\n return JSON.stringify(buildStarterSchema(opts), null, 2) + '\\n';\n}\n\n/**\n * `cms/__generated__/schema.ts` — auto-generated literal-typed mirror of\n * `cms/schema.json`. Required because `query()` infers narrow collection /\n * field / format types from the literal `defineConfig()` call — a plain JSON\n * import cannot preserve those literals.\n *\n * `npx octocms types:gen` regenerates this from `cms/schema.json` after every\n * schema edit (and `npm run types:check` fails on drift).\n */\nexport function generatedSchemaShimTemplate(opts: SchemaInitOpts): string {\n const gitBlock = opts.pointerBranch\n ? ` git: {\\n baseBranch: '${opts.baseBranch}',\\n publishedPointerBranch: '${opts.pointerBranch}',\\n },`\n : ` git: { baseBranch: '${opts.baseBranch}' },`;\n return `/*\n * AUTO-GENERATED — DO NOT EDIT.\n * Generated from cms/schema.json.\n * Run \\`npx octocms types:gen\\` to regenerate.\n */\n\nimport { defineConfig } from 'octocms/defineConfig';\n\nexport const schema = defineConfig({\n projectName: '${opts.projectName}',\n${gitBlock}\n contentFolder: 'cms/content',\n mediaContentFolder: 'cms/media',\n mediaFolder: 'public/media',\n mediaAllowedFormats: ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'avif'],\n collections: {\n helloPage: {\n label: 'Hello Page',\n fields: {\n title: { label: 'Title', format: 'string', entryTitle: true, required: true },\n description: { label: 'Description', format: 'text' },\n },\n },\n },\n});\n`;\n}\n\n/**\n * `cms/octocms.config.ts` — thin TS binding. Imports the literal-typed\n * `schema` from the generated shim and re-exports it as `configOctoCMS` (the\n * runtime `Config`) and `OctoConfig` (the literal type used by `query()`).\n *\n * Hand-edits should go to `cms/schema.json`. After editing the JSON, run\n * `npx octocms types:gen` to refresh `cms/__generated__/schema.ts`.\n */\nexport function octoConfigTemplate(_opts: SchemaInitOpts): string {\n return `import type { Config } from 'octocms/types';\nimport { schema } from './__generated__/schema';\n\n/**\n * The schema is defined in \\`cms/schema.json\\` (source of truth — hand-editable\n * and editable through the Content Model UI). \\`npx octocms types:gen\\` mirrors\n * it into \\`cms/__generated__/schema.ts\\` as a literal-typed \\`defineConfig()\\`\n * call so the downstream \\`query()\\` API can infer narrow collection / field /\n * format types (which a plain JSON import cannot preserve).\n *\n * \\`npm run types:check\\` fails if the JSON and the generated shim drift.\n */\nconst _typedConfigOctoCMS = schema;\n\n/** Runtime config — widened to \\`Config\\` for dynamic indexing in CMS internals. */\nexport const configOctoCMS: Config = _typedConfigOctoCMS as Config;\n\n/**\n * Exact literal type of the config — use this for type-level inference only\n * (e.g. the \\`query()\\` API derives collection/field names from it).\n */\nexport type OctoConfig = typeof _typedConfigOctoCMS;\n`;\n}\n\nexport function nextConfigTemplate(): string {\n return `import type { NextConfig } from 'next';\nimport { withOctoCMS } from 'octocms/config';\nimport { configOctoCMS } from './cms/octocms.config';\n\nexport { configOctoCMS } from './cms/octocms.config';\nexport type { OctoConfig } from './cms/octocms.config';\n\nconst nextConfig: NextConfig = {};\n\nexport default withOctoCMS(nextConfig, configOctoCMS);\n`;\n}\n\nexport function demoHelloPageJson(): string {\n return JSON.stringify(\n {\n sys: { id: '0000', type: 'helloPage', status: 'merged' },\n fields: {\n title: 'Hello World',\n description: 'Welcome to your new OctoCMS site! Edit this content in the CMS admin panel.',\n },\n },\n null,\n 2,\n );\n}\n\nexport const helloPageTemplate = `import { query } from 'cms/__generated__/query';\n\nexport default async function HelloPage() {\n const page = await query('helloPage').first();\n if (!page) return null;\n return (\n <main>\n <h1>{page.fields.title}</h1>\n <p>{page.fields.description}</p>\n </main>\n );\n}\n`;\n\nexport function readmeTemplate(projectName: string): string {\n return `# ${projectName}\n\nBuilt with [OctoCMS](https://octocms.com) — a file-based CMS on Next.js.\n\n## Setup\n\n### 1. Install dependencies\n\n\\`\\`\\`bash\nnpm install octocms next-auth @tanstack/react-query @mdxeditor/editor \\\\\n @radix-ui/react-avatar @radix-ui/react-dialog @radix-ui/react-dropdown-menu \\\\\n @radix-ui/react-label @radix-ui/react-select @radix-ui/react-slot \\\\\n @radix-ui/react-tabs @radix-ui/react-toast \\\\\n class-variance-authority clsx glob lucide-react minisearch octokit \\\\\n react-markdown rehype-sanitize remark-gfm remark-mdx \\\\\n sharp slugify sonner tailwind-merge zod\n\\`\\`\\`\n\n> The exact list (with the right \\`octocms\\` version pin) is also printed by \\`npx octocms init\\` — copy it from there.\n\n### 2. Create a GitHub App\n\nFollow the [OctoCMS GitHub App setup guide](https://octocms.com/docs/github-app) to create a GitHub App for authentication.\n\n### 3. Configure environment variables\n\nCopy the values from your GitHub App into \\`.env.local\\`:\n\n\\`\\`\\`bash\n# GitHub App credentials (required for CMS auth)\nGITHUB_ID=your_github_app_client_id\nGITHUB_SECRET=your_github_app_client_secret\n\n# NextAuth (generate secret: openssl rand -base64 32)\nNEXTAUTH_SECRET=your_nextauth_secret\nNEXTAUTH_URL=http://localhost:3000\n\n# GitHub repo for content storage (required in production)\nGITHUB_REPO_OWNER=your_github_username_or_org\nGITHUB_REPO_NAME=your_repo_name\n\n# Optional: static GitHub token for private repos / higher API rate limits\n# CMS_GITHUB_TOKEN=your_github_pat\n\\`\\`\\`\n\n### 4. Run the dev server\n\n\\`\\`\\`bash\nnpm run dev\n\\`\\`\\`\n\nOpen [http://localhost:3000/cms](http://localhost:3000/cms) to access the CMS admin.\n`;\n}\n\nexport function envLocalTemplate(): string {\n return `# GitHub App credentials (required for CMS auth)\n# Create a GitHub App at: https://github.com/settings/apps/new\nGITHUB_ID=\nGITHUB_SECRET=\n\n# NextAuth secret — generate with: openssl rand -base64 32\nNEXTAUTH_SECRET=\nNEXTAUTH_URL=http://localhost:3000\n\n# GitHub repo for content storage (required in production)\nGITHUB_REPO_OWNER=\nGITHUB_REPO_NAME=\n\n# Optional: static GitHub token for private repos or higher API rate limits\n# CMS_GITHUB_TOKEN=\n`;\n}\n\nconst AGENT_DOCS_MARKER = '<!-- octocms:agent-docs -->';\n\nexport function agentsMdSection(): string {\n return `${AGENT_DOCS_MARKER}\n## OctoCMS — AI Content Management\n\nFor tasks that involve creating, editing, or deleting CMS content directly (without the admin UI), read the auto-generated agent docs:\n\n- **\\`octocms/docs/overview.md\\`** — How to find, create, update, and delete content entries via file operations\n- **\\`octocms/docs/schema.md\\`** — Per-collection field definitions, example JSON, and file path conventions\n\nThese docs are generated from \\`cms/octocms.config.ts\\`. Regenerate after schema changes: \\`npm run agent-docs:gen\\`.`;\n}\n\nexport function agentsMdTemplate(): string {\n return `# Project Guidelines\n\n${agentsMdSection()}\n`;\n}\n\nexport function tsconfigPaths(): Record<string, string[]> {\n return {\n 'cms/__generated__': ['./cms/__generated__/index.ts'],\n 'cms/__generated__/*': ['./cms/__generated__/*'],\n '@/*': ['./src/*'],\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../cli/lib/templates.ts"],"sourcesContent":["/**\n * File templates used by `octocms init` and `octocms update`.\n */\n\nconst CODEGEN_BANNER = `/*\n * AUTO-GENERATED — DO NOT EDIT.\n * Generated from cms/octocms.config.ts.\n * Run \\`npx octocms types:gen\\` to regenerate.\n */\n\n`;\n\n/** Static cms/__generated__/types.ts for the helloPage demo schema. */\nexport const generatedTypesTemplate =\n CODEGEN_BANNER +\n `import type { EntryStatus } from 'octocms/types';\n\nexport interface HelloPageFields {\n title: string;\n description: string;\n}\n\nexport interface HelloPageEntry {\n sys: { id: string; type: 'helloPage'; status: EntryStatus };\n fields: HelloPageFields;\n}\n\nexport type AnyEntry = HelloPageEntry;\n\nexport type EntryMap = {\n helloPage: HelloPageEntry;\n};\n`;\n\n/** Static cms/__generated__/enums.ts for the helloPage demo schema. */\nexport const generatedEnumsTemplate =\n CODEGEN_BANNER +\n `export const CollectionName = {\n HelloPage: 'helloPage',\n} as const;\nexport type CollectionName = (typeof CollectionName)[keyof typeof CollectionName];\n\nexport const COLLECTION_NAMES = ['helloPage'] as const;\n\nexport const FieldFormat = {\n String: 'string',\n Text: 'text',\n Markdown: 'markdown',\n Boolean: 'boolean',\n Reference: 'reference',\n Image: 'image',\n Number: 'number',\n Datetime: 'datetime',\n Json: 'json',\n Slug: 'slug',\n Select: 'select',\n Url: 'url',\n Color: 'color',\n Conditional: 'conditional',\n Richtext: 'richtext',\n} as const;\nexport type FieldFormat = (typeof FieldFormat)[keyof typeof FieldFormat];\n`;\n\n/** Static cms/__generated__/content.d.ts for the helloPage demo schema. */\nexport const generatedContentDeclsTemplate =\n CODEGEN_BANNER +\n `import type { EntryStatus } from 'octocms/types';\n\n// Raw on-disk types (before query() processing).\nexport interface RawHelloPageFields {\n title: string;\n description: string;\n}\n\nexport interface RawHelloPageEntry {\n sys: { id: string; type: 'helloPage'; status: EntryStatus };\n fields: RawHelloPageFields;\n}\n`;\n\n/** Static cms/__generated__/index.ts — always the same shape. */\nexport const generatedIndexTemplate =\n CODEGEN_BANNER +\n `export * from './types';\nexport * from './enums';\nexport * from './query';\n`;\n\n/** Static cms/__generated__/query.ts — always the same shape (schema-independent). */\nexport const generatedQueryTemplate =\n CODEGEN_BANNER +\n `import { createQuery } from 'octocms/query';\nimport { configOctoCMS, type OctoConfig } from '../octocms.config';\nimport type { EntryMap } from './types';\n\n// configOctoCMS is widened to Config for admin internals; cast back to OctoConfig so\n// createQuery preserves literal collection/field names for type-safe queries.\nexport const query = createQuery<EntryMap, OctoConfig>(configOctoCMS as unknown as OctoConfig);\n`;\n\n/** Static cms/__generated__/configInit.ts — always the same shape (schema-independent). */\nexport const generatedConfigInitTemplate =\n CODEGEN_BANNER +\n `import { configOctoCMS } from '../octocms.config';\nimport { setConfig } from 'octocms/lib/configStore';\n\nsetConfig(configOctoCMS);\n`;\n\n/**\n * All scaffolded files import the generated config initialiser via the bare\n * specifier `cms/__generated__/configInit`. Resolution works in two layers:\n *\n * - TypeScript IntelliSense: the consumer's `tsconfig.json` `paths` (added\n * by `octocms init`).\n * - Bundler: an alias registered by `withOctoCMS()` so Webpack and Turbopack\n * resolve the bare specifier from anywhere — including `app/layout.tsx`,\n * route handlers at any depth, and files inside `node_modules/octocms/`.\n *\n * This eliminates the previous depth-counting (`'../../../cms/...'`) that was\n * a recurring source of off-by-one bugs across templates and routes.\n */\nconst CONFIG_INIT_IMPORT = \"import 'cms/__generated__/configInit';\";\n\n/**\n * Minimal root layout written when `app/layout.tsx` does not already exist.\n * The configInit import is the critical side-effect; the rest is a Next.js\n * boilerplate shell.\n */\nexport const rootLayoutTemplate = `${CONFIG_INIT_IMPORT}\nimport type { Metadata } from 'next';\n\nexport const metadata: Metadata = {\n title: 'My App',\n};\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n return (\n <html lang=\"en\">\n <body>{children}</body>\n </html>\n );\n}\n`;\n\n/** The one-liner prepended to an existing root layout to register the config. */\nexport const rootLayoutConfigInitImport = `${CONFIG_INIT_IMPORT}\\n`;\n\nexport function buildAdminLayoutTemplate(): string {\n return `${CONFIG_INIT_IMPORT}\nimport '@mdxeditor/editor/style.css';\nimport 'octocms/globals.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin';\n`;\n}\n\n/**\n * Catch-all admin route — every \\`/cms/*\\` URL renders the package's\n * \\`AdminApp\\` async server component (awaits \\`params\\`, no outer Suspense).\n * Side-effect-imports \\`configInit\\` so server-action bundles register\n * \\`setConfig()\\` even when Next.js does not load \\`layout.tsx\\` for the POST.\n */\nexport function buildAdminPageTemplate(): string {\n return `// Registers setConfig() for server actions — some POST bundles skip layout.tsx.\n${CONFIG_INIT_IMPORT}\n\nexport { AdminApp as default } from 'octocms/admin';\n`;\n}\n\n/**\n * Admin error boundary — rendered by Next.js when anything in the catch-all\n * tree throws during render. Re-uses the shared \\`AdminErrorView\\` so GitHub\n * config / auth / availability / rate-limit copy stays consistent with the\n * public-page error boundary.\n */\nexport const adminErrorTemplate = `'use client';\n\nexport { AdminError as default } from 'octocms/admin';\n`;\n\n/**\n * Historical template values used by \\`octocms update\\` to recognise an\n * unmodified install when migrating between routing models. Each entry is\n * the literal file content shipped by a previous OctoCMS version. If a\n * user-app file matches one of these byte-for-byte, \\`update\\` will replace\n * it with the current template; otherwise it leaves it alone.\n */\nexport const LEGACY_ADMIN_LAYOUT_TEMPLATES: ReadonlyArray<string> = [\n // 0.4.x — re-exported from the deep path.\n `import '../../cms/__generated__/configInit';\nimport 'octocms/globals.css';\nimport '@mdxeditor/editor/style.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin/pages/AdminLayout';\n`,\n // 0.5.x — barrel re-export with depth-counted relative configInit import.\n `import '../../cms/__generated__/configInit';\nimport 'octocms/globals.css';\nimport '@mdxeditor/editor/style.css';\n\nexport { AdminLayout as default, metadata } from 'octocms/admin';\n`,\n];\n\nexport const LEGACY_ADMIN_CATCH_ALL_TEMPLATES: ReadonlyArray<string> = [\n // 0.4.x — re-exported from the deep path.\n `export { AdminApp as default } from 'octocms/admin/AdminApp';\n`,\n // 0.5.x — barrel re-export without configInit on the page (server actions could miss setConfig).\n `export { AdminApp as default } from 'octocms/admin';\n`,\n // 0.5.x with depth-counted configInit (replaced by bare-specifier alias).\n `// Registers setConfig() for server actions — some POST bundles skip layout.tsx.\nimport '../../../cms/__generated__/configInit';\n\nexport { AdminApp as default } from 'octocms/admin';\n`,\n];\n\nexport const nextAuthRouteTemplate = `import NextAuth from 'next-auth';\nimport { authOptions } from 'octocms/admin/auth';\n\nconst handler = NextAuth(authOptions);\n\nexport { handler as GET, handler as POST };\n`;\n\n/**\n * Build a thin re-export Route Handler for the chat-agent SSE endpoint.\n *\n * The actual handler lives in `octocms/agent/chatApi.ts`\n * (`chatRoute` / `chatStatusRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so\n * `getAgentConfig()` resolves on cold start (Route Handlers don't run\n * `app/layout.tsx`); and\n * 2. re-exports `chatRoute` as `POST` and `chatStatusRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic and can be\n * placed under `app/` or `src/app/` without code changes.\n */\nexport function agentChatRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` + \\`agentConfig\\` into the\n// runtime stores so \\`getAgentConfig()\\` resolves on cold start. Route Handlers\n// don't run \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { chatRoute as POST, chatStatusRoute as GET } from 'octocms/agent';\n`;\n}\n\n/**\n * Build a thin re-export Route Handler for the `/media/[...slug]` proxy.\n *\n * The actual handler lives in `octocms/admin/mediaRoute.ts`\n * (`mediaRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so `getConfig()`\n * resolves on cold start (Route Handlers don't run `app/layout.tsx`); and\n * 2. re-exports `mediaRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic.\n */\nexport function mediaRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` into the runtime store so\n// \\`getConfig()\\` resolves on cold start. Route Handlers don't run\n// \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { mediaRoute as GET } from 'octocms/admin/mediaRoute';\n`;\n}\n\n/**\n * Build a thin re-export Route Handler for the public-site `/api/search`\n * endpoint consumed by the `SearchBox` component shipped at\n * `octocms/components/public`.\n *\n * The actual handler lives in `octocms/admin/searchRoute.ts`\n * (`searchRoute`). The user-app file just:\n * 1. side-effect-imports `cms/__generated__/configInit` so `getConfig()`\n * resolves on cold start (Route Handlers don't run `app/layout.tsx`); and\n * 2. re-exports `searchRoute` as `GET`.\n *\n * The configInit import uses the bare specifier (resolved by the bundler\n * alias from `withOctoCMS()`), so the route file is depth-agnostic.\n */\nexport function searchRouteTemplate(): string {\n return `// Side-effect import: registers \\`configOctoCMS\\` into the runtime store so\n// \\`getConfig()\\` resolves on cold start. Route Handlers don't run\n// \\`app/layout.tsx\\`, so this import has to live here.\n${CONFIG_INIT_IMPORT}\n\nexport { searchRoute as GET } from 'octocms/admin/searchRoute';\n`;\n}\n\ntype SchemaInitOpts = { projectName: string; baseBranch: string; pointerBranch?: string };\n\n/**\n * The starter schema used by `octocms init`. The data lives in `cms/schema.json`\n * (source of truth — hand-editable + edited by the Content Model UI). The other\n * two scaffolded files (`cms/__generated__/schema.ts` and `cms/octocms.config.ts`)\n * mirror this same shape — keep them aligned by editing here only and letting\n * `npx octocms types:gen` regenerate the rest in the user's project.\n */\nfunction buildStarterSchema(opts: SchemaInitOpts): Record<string, unknown> {\n const git: Record<string, string> = { baseBranch: opts.baseBranch };\n if (opts.pointerBranch) git.publishedPointerBranch = opts.pointerBranch;\n return {\n projectName: opts.projectName,\n git,\n contentFolder: 'cms/content',\n mediaContentFolder: 'cms/media',\n mediaFolder: 'public/media',\n mediaAllowedFormats: ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'avif'],\n collections: {\n helloPage: {\n label: 'Hello Page',\n fields: {\n title: { label: 'Title', format: 'string', entryTitle: true, required: true },\n description: { label: 'Description', format: 'text' },\n },\n },\n },\n };\n}\n\n/**\n * `cms/schema.json` — the source of truth. The Content Model UI (`/cms/model`)\n * reads and writes this file via `getSchema()` / `saveSchema()` server actions.\n */\nexport function schemaJsonTemplate(opts: SchemaInitOpts): string {\n return JSON.stringify(buildStarterSchema(opts), null, 2) + '\\n';\n}\n\n/**\n * `cms/__generated__/schema.ts` — auto-generated literal-typed mirror of\n * `cms/schema.json`. Required because `query()` infers narrow collection /\n * field / format types from the literal `defineConfig()` call — a plain JSON\n * import cannot preserve those literals.\n *\n * `npx octocms types:gen` regenerates this from `cms/schema.json` after every\n * schema edit (and `npm run types:check` fails on drift).\n */\nexport function generatedSchemaShimTemplate(opts: SchemaInitOpts): string {\n const gitBlock = opts.pointerBranch\n ? ` git: {\\n baseBranch: '${opts.baseBranch}',\\n publishedPointerBranch: '${opts.pointerBranch}',\\n },`\n : ` git: { baseBranch: '${opts.baseBranch}' },`;\n return `/*\n * AUTO-GENERATED — DO NOT EDIT.\n * Generated from cms/schema.json.\n * Run \\`npx octocms types:gen\\` to regenerate.\n */\n\nimport { defineConfig } from 'octocms/defineConfig';\n\nexport const schema = defineConfig({\n projectName: '${opts.projectName}',\n${gitBlock}\n contentFolder: 'cms/content',\n mediaContentFolder: 'cms/media',\n mediaFolder: 'public/media',\n mediaAllowedFormats: ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'avif'],\n collections: {\n helloPage: {\n label: 'Hello Page',\n fields: {\n title: { label: 'Title', format: 'string', entryTitle: true, required: true },\n description: { label: 'Description', format: 'text' },\n },\n },\n },\n});\n`;\n}\n\n/**\n * `cms/octocms.config.ts` — thin TS binding. Imports the literal-typed\n * `schema` from the generated shim and re-exports it as `configOctoCMS` (the\n * runtime `Config`) and `OctoConfig` (the literal type used by `query()`).\n *\n * Hand-edits should go to `cms/schema.json`. After editing the JSON, run\n * `npx octocms types:gen` to refresh `cms/__generated__/schema.ts`.\n */\nexport function octoConfigTemplate(_opts: SchemaInitOpts): string {\n return `import type { Config } from 'octocms/types';\nimport { schema } from './__generated__/schema';\n\n/**\n * The schema is defined in \\`cms/schema.json\\` (source of truth — hand-editable\n * and editable through the Content Model UI). \\`npx octocms types:gen\\` mirrors\n * it into \\`cms/__generated__/schema.ts\\` as a literal-typed \\`defineConfig()\\`\n * call so the downstream \\`query()\\` API can infer narrow collection / field /\n * format types (which a plain JSON import cannot preserve).\n *\n * \\`npm run types:check\\` fails if the JSON and the generated shim drift.\n */\nconst _typedConfigOctoCMS = schema;\n\n/** Runtime config — widened to \\`Config\\` for dynamic indexing in CMS internals. */\nexport const configOctoCMS: Config = _typedConfigOctoCMS as Config;\n\n/**\n * Exact literal type of the config — use this for type-level inference only\n * (e.g. the \\`query()\\` API derives collection/field names from it).\n */\nexport type OctoConfig = typeof _typedConfigOctoCMS;\n`;\n}\n\nexport function nextConfigTemplate(): string {\n return `import type { NextConfig } from 'next';\nimport { withOctoCMS } from 'octocms/config';\nimport { configOctoCMS } from './cms/octocms.config';\n\nexport { configOctoCMS } from './cms/octocms.config';\nexport type { OctoConfig } from './cms/octocms.config';\n\nconst nextConfig: NextConfig = {};\n\nexport default withOctoCMS(nextConfig, configOctoCMS);\n`;\n}\n\nexport function demoHelloPageJson(): string {\n return JSON.stringify(\n {\n sys: { id: '0000', type: 'helloPage', status: 'merged' },\n fields: {\n title: 'Hello World',\n description: 'Welcome to your new OctoCMS site! Edit this content in the CMS admin panel.',\n },\n },\n null,\n 2,\n );\n}\n\nexport const helloPageTemplate = `import { query } from 'cms/__generated__/query';\n\nexport default async function HelloPage() {\n const page = await query('helloPage').first();\n if (!page) return null;\n return (\n <main>\n <h1>{page.fields.title}</h1>\n <p>{page.fields.description}</p>\n </main>\n );\n}\n`;\n\nexport function readmeTemplate(projectName: string): string {\n return `# ${projectName}\n\nBuilt with [OctoCMS](https://octocms.com) — a file-based CMS on Next.js.\n\n## Setup\n\n### 1. Install dependencies\n\n\\`\\`\\`bash\nnpm install octocms next-auth @tanstack/react-query @mdxeditor/editor \\\\\n minisearch octokit \\\\\n react-markdown rehype-sanitize remark-gfm remark-mdx \\\\\n sharp zod\n\\`\\`\\`\n\n> The exact list (with the right \\`octocms\\` version pin) is also printed by \\`npx octocms init\\` — copy it from there.\n\n### 2. Create a GitHub App\n\nFollow the [OctoCMS GitHub App setup guide](https://octocms.com/docs/github-app) to create a GitHub App for authentication.\n\n### 3. Configure environment variables\n\nCopy the values from your GitHub App into \\`.env.local\\`:\n\n\\`\\`\\`bash\n# GitHub App credentials (required for CMS auth)\nGITHUB_ID=your_github_app_client_id\nGITHUB_SECRET=your_github_app_client_secret\n\n# NextAuth (generate secret: openssl rand -base64 32)\nNEXTAUTH_SECRET=your_nextauth_secret\nNEXTAUTH_URL=http://localhost:3000\n\n# GitHub repo for content storage (required in production)\nGITHUB_REPO_OWNER=your_github_username_or_org\nGITHUB_REPO_NAME=your_repo_name\n\n# Optional: static GitHub token for private repos / higher API rate limits\n# CMS_GITHUB_TOKEN=your_github_pat\n\\`\\`\\`\n\n### 4. Run the dev server\n\n\\`\\`\\`bash\nnpm run dev\n\\`\\`\\`\n\nOpen [http://localhost:3000/cms](http://localhost:3000/cms) to access the CMS admin.\n`;\n}\n\nexport function envLocalTemplate(): string {\n return `# GitHub App credentials (required for CMS auth)\n# Create a GitHub App at: https://github.com/settings/apps/new\nGITHUB_ID=\nGITHUB_SECRET=\n\n# NextAuth secret — generate with: openssl rand -base64 32\nNEXTAUTH_SECRET=\nNEXTAUTH_URL=http://localhost:3000\n\n# GitHub repo for content storage (required in production)\nGITHUB_REPO_OWNER=\nGITHUB_REPO_NAME=\n\n# Optional: static GitHub token for private repos or higher API rate limits\n# CMS_GITHUB_TOKEN=\n`;\n}\n\nconst AGENT_DOCS_MARKER = '<!-- octocms:agent-docs -->';\n\nexport function agentsMdSection(): string {\n return `${AGENT_DOCS_MARKER}\n## OctoCMS — AI Content Management\n\nFor tasks that involve creating, editing, or deleting CMS content directly (without the admin UI), read the auto-generated agent docs:\n\n- **\\`octocms/docs/overview.md\\`** — How to find, create, update, and delete content entries via file operations\n- **\\`octocms/docs/schema.md\\`** — Per-collection field definitions, example JSON, and file path conventions\n\nThese docs are generated from \\`cms/octocms.config.ts\\`. Regenerate after schema changes: \\`npm run agent-docs:gen\\`.`;\n}\n\nexport function agentsMdTemplate(): string {\n return `# Project Guidelines\n\n${agentsMdSection()}\n`;\n}\n\nexport function tsconfigPaths(): Record<string, string[]> {\n return {\n 'cms/__generated__': ['./cms/__generated__/index.ts'],\n 'cms/__generated__/*': ['./cms/__generated__/*'],\n '@/*': ['./src/*'],\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,7 @@
1
+ import type { ChatSetupInfo } from '../../agent/chatSetup';
2
+ type Props = {
3
+ setup: ChatSetupInfo;
4
+ };
5
+ export declare function ChatAgentSetup({ setup }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=ChatAgentSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatAgentSetup.d.ts","sourceRoot":"","sources":["../../../components/Chat/ChatAgentSetup.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,2CA0C9C"}
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import "../../chunk-B5LE2OEC.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import Link from "next/link";
5
+ import { Page } from "../Layout/Page";
6
+ import { Button, Icon } from "../ui";
7
+ function ChatAgentSetup({ setup }) {
8
+ return /* @__PURE__ */ jsx(Page, { className: "octo-chat-page", title: "Chat", breadcrumbs: [{ label: "Setup required" }], children: /* @__PURE__ */ jsxs("div", { className: "octo-chat-setup", "data-testid": "chat-agent-setup", children: [
9
+ /* @__PURE__ */ jsxs("div", { className: "octo-chat-setup__hero", children: [
10
+ /* @__PURE__ */ jsx(Icon.Bot, { className: "octo-chat-setup__icon octo-icon-xl", "aria-hidden": true }),
11
+ /* @__PURE__ */ jsx("h2", { className: "octo-chat-setup__headline", children: setup.headline }),
12
+ /* @__PURE__ */ jsx("p", { className: "octo-chat-setup__summary", children: setup.summary }),
13
+ /* @__PURE__ */ jsx(Button, { variant: "primary", asChild: true, children: /* @__PURE__ */ jsxs(Link, { href: setup.docsHref, target: "_blank", rel: "noopener noreferrer", children: [
14
+ "Open setup guide",
15
+ /* @__PURE__ */ jsx(Icon.ExternalLink, { className: "octo-icon-sm", "aria-hidden": true })
16
+ ] }) })
17
+ ] }),
18
+ /* @__PURE__ */ jsx("ol", { className: "octo-chat-setup__steps", children: setup.steps.map((step, index) => /* @__PURE__ */ jsxs("li", { className: "octo-chat-setup__step", children: [
19
+ /* @__PURE__ */ jsx("span", { className: "octo-chat-setup__step-index", "aria-hidden": true, children: index + 1 }),
20
+ /* @__PURE__ */ jsxs("div", { className: "octo-chat-setup__step-body", children: [
21
+ /* @__PURE__ */ jsx("div", { className: "octo-chat-setup__step-title", children: step.title }),
22
+ /* @__PURE__ */ jsx("p", { className: "octo-chat-setup__step-detail", children: step.detail }),
23
+ step.code ? /* @__PURE__ */ jsx("pre", { className: "octo-chat-setup__code", children: /* @__PURE__ */ jsx("code", { children: step.code }) }) : null
24
+ ] })
25
+ ] }, step.title)) }),
26
+ /* @__PURE__ */ jsxs("p", { className: "octo-chat-setup__footer", children: [
27
+ "Messages cannot be sent until credentials and config are in place. API routes at",
28
+ " ",
29
+ /* @__PURE__ */ jsx("code", { className: "octo-u-mono", children: "/api/agent" }),
30
+ " also return 404 until then \u2014 that is expected."
31
+ ] })
32
+ ] }) });
33
+ }
34
+ export {
35
+ ChatAgentSetup
36
+ };
37
+ //# sourceMappingURL=ChatAgentSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../components/Chat/ChatAgentSetup.tsx"],"sourcesContent":["'use client';\n\nimport Link from 'next/link';\nimport React from 'react';\n\nimport type { ChatSetupInfo } from '../../agent/chatSetup';\nimport { Page } from '../Layout/Page';\nimport { Button, Icon } from '../ui';\n\ntype Props = {\n setup: ChatSetupInfo;\n};\n\nexport function ChatAgentSetup({ setup }: Props) {\n return (\n <Page className=\"octo-chat-page\" title=\"Chat\" breadcrumbs={[{ label: 'Setup required' }]}>\n <div className=\"octo-chat-setup\" data-testid=\"chat-agent-setup\">\n <div className=\"octo-chat-setup__hero\">\n <Icon.Bot className=\"octo-chat-setup__icon octo-icon-xl\" aria-hidden />\n <h2 className=\"octo-chat-setup__headline\">{setup.headline}</h2>\n <p className=\"octo-chat-setup__summary\">{setup.summary}</p>\n <Button variant=\"primary\" asChild>\n <Link href={setup.docsHref} target=\"_blank\" rel=\"noopener noreferrer\">\n Open setup guide\n <Icon.ExternalLink className=\"octo-icon-sm\" aria-hidden />\n </Link>\n </Button>\n </div>\n\n <ol className=\"octo-chat-setup__steps\">\n {setup.steps.map((step, index) => (\n <li key={step.title} className=\"octo-chat-setup__step\">\n <span className=\"octo-chat-setup__step-index\" aria-hidden>\n {index + 1}\n </span>\n <div className=\"octo-chat-setup__step-body\">\n <div className=\"octo-chat-setup__step-title\">{step.title}</div>\n <p className=\"octo-chat-setup__step-detail\">{step.detail}</p>\n {step.code ? (\n <pre className=\"octo-chat-setup__code\">\n <code>{step.code}</code>\n </pre>\n ) : null}\n </div>\n </li>\n ))}\n </ol>\n\n <p className=\"octo-chat-setup__footer\">\n Messages cannot be sent until credentials and config are in place. API routes at{' '}\n <code className=\"octo-u-mono\">/api/agent</code> also return 404 until then — that is expected.\n </p>\n </div>\n </Page>\n );\n}\n"],"mappings":";;AAkBU,cAIE,YAJF;AAhBV,OAAO,UAAU;AAIjB,SAAS,YAAY;AACrB,SAAS,QAAQ,YAAY;AAMtB,SAAS,eAAe,EAAE,MAAM,GAAU;AAC/C,SACE,oBAAC,QAAK,WAAU,kBAAiB,OAAM,QAAO,aAAa,CAAC,EAAE,OAAO,iBAAiB,CAAC,GACrF,+BAAC,SAAI,WAAU,mBAAkB,eAAY,oBAC3C;AAAA,yBAAC,SAAI,WAAU,yBACb;AAAA,0BAAC,KAAK,KAAL,EAAS,WAAU,sCAAqC,eAAW,MAAC;AAAA,MACrE,oBAAC,QAAG,WAAU,6BAA6B,gBAAM,UAAS;AAAA,MAC1D,oBAAC,OAAE,WAAU,4BAA4B,gBAAM,SAAQ;AAAA,MACvD,oBAAC,UAAO,SAAQ,WAAU,SAAO,MAC/B,+BAAC,QAAK,MAAM,MAAM,UAAU,QAAO,UAAS,KAAI,uBAAsB;AAAA;AAAA,QAEpE,oBAAC,KAAK,cAAL,EAAkB,WAAU,gBAAe,eAAW,MAAC;AAAA,SAC1D,GACF;AAAA,OACF;AAAA,IAEA,oBAAC,QAAG,WAAU,0BACX,gBAAM,MAAM,IAAI,CAAC,MAAM,UACtB,qBAAC,QAAoB,WAAU,yBAC7B;AAAA,0BAAC,UAAK,WAAU,+BAA8B,eAAW,MACtD,kBAAQ,GACX;AAAA,MACA,qBAAC,SAAI,WAAU,8BACb;AAAA,4BAAC,SAAI,WAAU,+BAA+B,eAAK,OAAM;AAAA,QACzD,oBAAC,OAAE,WAAU,gCAAgC,eAAK,QAAO;AAAA,QACxD,KAAK,OACJ,oBAAC,SAAI,WAAU,yBACb,8BAAC,UAAM,eAAK,MAAK,GACnB,IACE;AAAA,SACN;AAAA,SAZO,KAAK,KAad,CACD,GACH;AAAA,IAEA,qBAAC,OAAE,WAAU,2BAA0B;AAAA;AAAA,MAC4C;AAAA,MACjF,oBAAC,UAAK,WAAU,eAAc,wBAAU;AAAA,MAAO;AAAA,OACjD;AAAA,KACF,GACF;AAEJ;","names":[]}
@@ -1,4 +1,9 @@
1
+ import type { ChatSetupInfo } from '../../agent/chatSetup';
1
2
  type Props = {
3
+ mode: 'setup';
4
+ setup: ChatSetupInfo;
5
+ } | {
6
+ mode: 'ready';
2
7
  /** Initial provider info — used until the SSE `meta` event arrives. */
3
8
  initialMeta: {
4
9
  provider: 'anthropic' | 'openai' | 'local';
@@ -10,6 +15,6 @@ type Props = {
10
15
  maxAttachmentsPerTurn: number;
11
16
  };
12
17
  };
13
- export declare function ChatPage({ initialMeta, attachmentLimits }: Props): import("react/jsx-runtime").JSX.Element;
18
+ export default function ChatPage(props: Props): import("react/jsx-runtime").JSX.Element;
14
19
  export {};
15
20
  //# sourceMappingURL=ChatPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPage.d.ts","sourceRoot":"","sources":["../../../components/Chat/ChatPage.tsx"],"names":[],"mappings":"AAYA,KAAK,KAAK,GAAG;IACX,uEAAuE;IACvE,WAAW,EAAE;QAAE,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,yEAAyE;IACzE,gBAAgB,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAA;KAAE,CAAC;CACjF,CAAC;AAQF,wBAAgB,QAAQ,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,KAAK,2CAiLhE"}
1
+ {"version":3,"file":"ChatPage.d.ts","sourceRoot":"","sources":["../../../components/Chat/ChatPage.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAU3D,KAAK,KAAK,GACN;IACE,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;CACtB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,uEAAuE;IACvE,WAAW,EAAE;QAAE,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,yEAAyE;IACzE,gBAAgB,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAA;KAAE,CAAC;CACjF,CAAC;AAEN,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,KAAK,2CAK5C"}