@se-studio/contentful-cms 0.0.0-next16-20260822103555

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 (1031) hide show
  1. package/CHANGELOG.md +1117 -0
  2. package/HOSTED.md +152 -0
  3. package/INSTALL.md +29 -0
  4. package/README.md +674 -0
  5. package/dist/audit/asset-usage.d.ts +29 -0
  6. package/dist/audit/asset-usage.d.ts.map +1 -0
  7. package/dist/audit/asset-usage.js +99 -0
  8. package/dist/audit/asset-usage.js.map +1 -0
  9. package/dist/audit/media-review-rules.d.ts +33 -0
  10. package/dist/audit/media-review-rules.d.ts.map +1 -0
  11. package/dist/audit/media-review-rules.js +120 -0
  12. package/dist/audit/media-review-rules.js.map +1 -0
  13. package/dist/audit/media-review.d.ts +45 -0
  14. package/dist/audit/media-review.d.ts.map +1 -0
  15. package/dist/audit/media-review.js +69 -0
  16. package/dist/audit/media-review.js.map +1 -0
  17. package/dist/bin/cms-edit.d.ts +4 -0
  18. package/dist/bin/cms-edit.d.ts.map +1 -0
  19. package/dist/bin/cms-edit.js +46 -0
  20. package/dist/bin/cms-edit.js.map +1 -0
  21. package/dist/cli/program.d.ts +9 -0
  22. package/dist/cli/program.d.ts.map +1 -0
  23. package/dist/cli/program.js +152 -0
  24. package/dist/cli/program.js.map +1 -0
  25. package/dist/cli/read-json-input.d.ts +27 -0
  26. package/dist/cli/read-json-input.d.ts.map +1 -0
  27. package/dist/cli/read-json-input.js +65 -0
  28. package/dist/cli/read-json-input.js.map +1 -0
  29. package/dist/cli/runner.d.ts +15 -0
  30. package/dist/cli/runner.d.ts.map +1 -0
  31. package/dist/cli/runner.js +113 -0
  32. package/dist/cli/runner.js.map +1 -0
  33. package/dist/commands/add-initial-fields.d.ts +27 -0
  34. package/dist/commands/add-initial-fields.d.ts.map +1 -0
  35. package/dist/commands/add-initial-fields.js +42 -0
  36. package/dist/commands/add-initial-fields.js.map +1 -0
  37. package/dist/commands/add-target-field.d.ts +15 -0
  38. package/dist/commands/add-target-field.d.ts.map +1 -0
  39. package/dist/commands/add-target-field.js +48 -0
  40. package/dist/commands/add-target-field.js.map +1 -0
  41. package/dist/commands/add.d.ts +4 -0
  42. package/dist/commands/add.d.ts.map +1 -0
  43. package/dist/commands/add.js +291 -0
  44. package/dist/commands/add.js.map +1 -0
  45. package/dist/commands/article-tags-from-json.d.ts +4 -0
  46. package/dist/commands/article-tags-from-json.d.ts.map +1 -0
  47. package/dist/commands/article-tags-from-json.js +55 -0
  48. package/dist/commands/article-tags-from-json.js.map +1 -0
  49. package/dist/commands/asset.d.ts +4 -0
  50. package/dist/commands/asset.d.ts.map +1 -0
  51. package/dist/commands/asset.js +685 -0
  52. package/dist/commands/asset.js.map +1 -0
  53. package/dist/commands/batch-assignments.d.ts +16 -0
  54. package/dist/commands/batch-assignments.d.ts.map +1 -0
  55. package/dist/commands/batch-assignments.js +61 -0
  56. package/dist/commands/batch-assignments.js.map +1 -0
  57. package/dist/commands/batch.d.ts +5 -0
  58. package/dist/commands/batch.d.ts.map +1 -0
  59. package/dist/commands/batch.js +272 -0
  60. package/dist/commands/batch.js.map +1 -0
  61. package/dist/commands/bulk-rtf-replace.d.ts +4 -0
  62. package/dist/commands/bulk-rtf-replace.d.ts.map +1 -0
  63. package/dist/commands/bulk-rtf-replace.js +103 -0
  64. package/dist/commands/bulk-rtf-replace.js.map +1 -0
  65. package/dist/commands/create-from-json.d.ts +8 -0
  66. package/dist/commands/create-from-json.d.ts.map +1 -0
  67. package/dist/commands/create-from-json.js +531 -0
  68. package/dist/commands/create-from-json.js.map +1 -0
  69. package/dist/commands/create-person-from-json.d.ts +4 -0
  70. package/dist/commands/create-person-from-json.d.ts.map +1 -0
  71. package/dist/commands/create-person-from-json.js +86 -0
  72. package/dist/commands/create-person-from-json.js.map +1 -0
  73. package/dist/commands/create-person.d.ts +4 -0
  74. package/dist/commands/create-person.d.ts.map +1 -0
  75. package/dist/commands/create-person.js +76 -0
  76. package/dist/commands/create-person.js.map +1 -0
  77. package/dist/commands/create-taxonomy-from-json.d.ts +4 -0
  78. package/dist/commands/create-taxonomy-from-json.d.ts.map +1 -0
  79. package/dist/commands/create-taxonomy-from-json.js +96 -0
  80. package/dist/commands/create-taxonomy-from-json.js.map +1 -0
  81. package/dist/commands/create-taxonomy.d.ts +36 -0
  82. package/dist/commands/create-taxonomy.d.ts.map +1 -0
  83. package/dist/commands/create-taxonomy.js +214 -0
  84. package/dist/commands/create-taxonomy.js.map +1 -0
  85. package/dist/commands/create.d.ts +4 -0
  86. package/dist/commands/create.d.ts.map +1 -0
  87. package/dist/commands/create.js +454 -0
  88. package/dist/commands/create.js.map +1 -0
  89. package/dist/commands/customer.d.ts +4 -0
  90. package/dist/commands/customer.d.ts.map +1 -0
  91. package/dist/commands/customer.js +56 -0
  92. package/dist/commands/customer.js.map +1 -0
  93. package/dist/commands/diagnose.d.ts +29 -0
  94. package/dist/commands/diagnose.d.ts.map +1 -0
  95. package/dist/commands/diagnose.js +119 -0
  96. package/dist/commands/diagnose.js.map +1 -0
  97. package/dist/commands/diff.d.ts +4 -0
  98. package/dist/commands/diff.d.ts.map +1 -0
  99. package/dist/commands/diff.js +33 -0
  100. package/dist/commands/diff.js.map +1 -0
  101. package/dist/commands/discard.d.ts +4 -0
  102. package/dist/commands/discard.d.ts.map +1 -0
  103. package/dist/commands/discard.js +63 -0
  104. package/dist/commands/discard.js.map +1 -0
  105. package/dist/commands/editor-pack.d.ts +4 -0
  106. package/dist/commands/editor-pack.d.ts.map +1 -0
  107. package/dist/commands/editor-pack.js +31 -0
  108. package/dist/commands/editor-pack.js.map +1 -0
  109. package/dist/commands/entry-lookup-target.d.ts +113 -0
  110. package/dist/commands/entry-lookup-target.d.ts.map +1 -0
  111. package/dist/commands/entry-lookup-target.js +235 -0
  112. package/dist/commands/entry-lookup-target.js.map +1 -0
  113. package/dist/commands/entry-search.d.ts +4 -0
  114. package/dist/commands/entry-search.d.ts.map +1 -0
  115. package/dist/commands/entry-search.js +91 -0
  116. package/dist/commands/entry-search.js.map +1 -0
  117. package/dist/commands/guide.d.ts +4 -0
  118. package/dist/commands/guide.d.ts.map +1 -0
  119. package/dist/commands/guide.js +18 -0
  120. package/dist/commands/guide.js.map +1 -0
  121. package/dist/commands/health.d.ts +4 -0
  122. package/dist/commands/health.d.ts.map +1 -0
  123. package/dist/commands/health.js +179 -0
  124. package/dist/commands/health.js.map +1 -0
  125. package/dist/commands/help.d.ts +4 -0
  126. package/dist/commands/help.d.ts.map +1 -0
  127. package/dist/commands/help.js +49 -0
  128. package/dist/commands/help.js.map +1 -0
  129. package/dist/commands/host-scaffold.d.ts +4 -0
  130. package/dist/commands/host-scaffold.d.ts.map +1 -0
  131. package/dist/commands/host-scaffold.js +104 -0
  132. package/dist/commands/host-scaffold.js.map +1 -0
  133. package/dist/commands/host-stage.d.ts +4 -0
  134. package/dist/commands/host-stage.d.ts.map +1 -0
  135. package/dist/commands/host-stage.js +60 -0
  136. package/dist/commands/host-stage.js.map +1 -0
  137. package/dist/commands/host.d.ts +3 -0
  138. package/dist/commands/host.d.ts.map +1 -0
  139. package/dist/commands/host.js +9 -0
  140. package/dist/commands/host.js.map +1 -0
  141. package/dist/commands/index-dump.d.ts +15 -0
  142. package/dist/commands/index-dump.d.ts.map +1 -0
  143. package/dist/commands/index-dump.js +207 -0
  144. package/dist/commands/index-dump.js.map +1 -0
  145. package/dist/commands/index.d.ts +4 -0
  146. package/dist/commands/index.d.ts.map +1 -0
  147. package/dist/commands/index.js +107 -0
  148. package/dist/commands/index.js.map +1 -0
  149. package/dist/commands/links.d.ts +4 -0
  150. package/dist/commands/links.d.ts.map +1 -0
  151. package/dist/commands/links.js +343 -0
  152. package/dist/commands/links.js.map +1 -0
  153. package/dist/commands/list.d.ts +4 -0
  154. package/dist/commands/list.d.ts.map +1 -0
  155. package/dist/commands/list.js +282 -0
  156. package/dist/commands/list.js.map +1 -0
  157. package/dist/commands/media.d.ts +4 -0
  158. package/dist/commands/media.d.ts.map +1 -0
  159. package/dist/commands/media.js +143 -0
  160. package/dist/commands/media.js.map +1 -0
  161. package/dist/commands/move.d.ts +3 -0
  162. package/dist/commands/move.d.ts.map +1 -0
  163. package/dist/commands/move.js +85 -0
  164. package/dist/commands/move.js.map +1 -0
  165. package/dist/commands/multiset-assignments.d.ts +16 -0
  166. package/dist/commands/multiset-assignments.d.ts.map +1 -0
  167. package/dist/commands/multiset-assignments.js +24 -0
  168. package/dist/commands/multiset-assignments.js.map +1 -0
  169. package/dist/commands/nav.d.ts +4 -0
  170. package/dist/commands/nav.d.ts.map +1 -0
  171. package/dist/commands/nav.js +327 -0
  172. package/dist/commands/nav.js.map +1 -0
  173. package/dist/commands/open.d.ts +4 -0
  174. package/dist/commands/open.d.ts.map +1 -0
  175. package/dist/commands/open.js +124 -0
  176. package/dist/commands/open.js.map +1 -0
  177. package/dist/commands/peek.d.ts +4 -0
  178. package/dist/commands/peek.d.ts.map +1 -0
  179. package/dist/commands/peek.js +105 -0
  180. package/dist/commands/peek.js.map +1 -0
  181. package/dist/commands/preview.d.ts +4 -0
  182. package/dist/commands/preview.d.ts.map +1 -0
  183. package/dist/commands/preview.js +242 -0
  184. package/dist/commands/preview.js.map +1 -0
  185. package/dist/commands/project.d.ts +4 -0
  186. package/dist/commands/project.d.ts.map +1 -0
  187. package/dist/commands/project.js +63 -0
  188. package/dist/commands/project.js.map +1 -0
  189. package/dist/commands/read.d.ts +4 -0
  190. package/dist/commands/read.d.ts.map +1 -0
  191. package/dist/commands/read.js +59 -0
  192. package/dist/commands/read.js.map +1 -0
  193. package/dist/commands/remove.d.ts +4 -0
  194. package/dist/commands/remove.d.ts.map +1 -0
  195. package/dist/commands/remove.js +104 -0
  196. package/dist/commands/remove.js.map +1 -0
  197. package/dist/commands/resolve.d.ts +4 -0
  198. package/dist/commands/resolve.d.ts.map +1 -0
  199. package/dist/commands/resolve.js +157 -0
  200. package/dist/commands/resolve.js.map +1 -0
  201. package/dist/commands/rtf.d.ts +4 -0
  202. package/dist/commands/rtf.d.ts.map +1 -0
  203. package/dist/commands/rtf.js +589 -0
  204. package/dist/commands/rtf.js.map +1 -0
  205. package/dist/commands/run.d.ts +4 -0
  206. package/dist/commands/run.d.ts.map +1 -0
  207. package/dist/commands/run.js +515 -0
  208. package/dist/commands/run.js.map +1 -0
  209. package/dist/commands/save-pending.d.ts +3 -0
  210. package/dist/commands/save-pending.d.ts.map +1 -0
  211. package/dist/commands/save-pending.js +5 -0
  212. package/dist/commands/save-pending.js.map +1 -0
  213. package/dist/commands/save.d.ts +4 -0
  214. package/dist/commands/save.d.ts.map +1 -0
  215. package/dist/commands/save.js +79 -0
  216. package/dist/commands/save.js.map +1 -0
  217. package/dist/commands/schema.d.ts +4 -0
  218. package/dist/commands/schema.d.ts.map +1 -0
  219. package/dist/commands/schema.js +283 -0
  220. package/dist/commands/schema.js.map +1 -0
  221. package/dist/commands/session-diff.d.ts +14 -0
  222. package/dist/commands/session-diff.d.ts.map +1 -0
  223. package/dist/commands/session-diff.js +238 -0
  224. package/dist/commands/session-diff.js.map +1 -0
  225. package/dist/commands/set.d.ts +4 -0
  226. package/dist/commands/set.d.ts.map +1 -0
  227. package/dist/commands/set.js +577 -0
  228. package/dist/commands/set.js.map +1 -0
  229. package/dist/commands/snapshot.d.ts +3 -0
  230. package/dist/commands/snapshot.d.ts.map +1 -0
  231. package/dist/commands/snapshot.js +31 -0
  232. package/dist/commands/snapshot.js.map +1 -0
  233. package/dist/commands/staged-upload.d.ts +4 -0
  234. package/dist/commands/staged-upload.d.ts.map +1 -0
  235. package/dist/commands/staged-upload.js +54 -0
  236. package/dist/commands/staged-upload.js.map +1 -0
  237. package/dist/commands/version.d.ts +4 -0
  238. package/dist/commands/version.d.ts.map +1 -0
  239. package/dist/commands/version.js +17 -0
  240. package/dist/commands/version.js.map +1 -0
  241. package/dist/config/data-root.d.ts +6 -0
  242. package/dist/config/data-root.d.ts.map +1 -0
  243. package/dist/config/data-root.js +21 -0
  244. package/dist/config/data-root.js.map +1 -0
  245. package/dist/config/hosted.d.ts +36 -0
  246. package/dist/config/hosted.d.ts.map +1 -0
  247. package/dist/config/hosted.js +113 -0
  248. package/dist/config/hosted.js.map +1 -0
  249. package/dist/config/load.d.ts +27 -0
  250. package/dist/config/load.d.ts.map +1 -0
  251. package/dist/config/load.js +139 -0
  252. package/dist/config/load.js.map +1 -0
  253. package/dist/config/types.d.ts +42 -0
  254. package/dist/config/types.d.ts.map +1 -0
  255. package/dist/config/types.js +2 -0
  256. package/dist/config/types.js.map +1 -0
  257. package/dist/contentful/article-tags-from-json.d.ts +25 -0
  258. package/dist/contentful/article-tags-from-json.d.ts.map +1 -0
  259. package/dist/contentful/article-tags-from-json.js +121 -0
  260. package/dist/contentful/article-tags-from-json.js.map +1 -0
  261. package/dist/contentful/article-type-resolve.d.ts +11 -0
  262. package/dist/contentful/article-type-resolve.d.ts.map +1 -0
  263. package/dist/contentful/article-type-resolve.js +35 -0
  264. package/dist/contentful/article-type-resolve.js.map +1 -0
  265. package/dist/contentful/asset-link-from-json.d.ts +17 -0
  266. package/dist/contentful/asset-link-from-json.d.ts.map +1 -0
  267. package/dist/contentful/asset-link-from-json.js +41 -0
  268. package/dist/contentful/asset-link-from-json.js.map +1 -0
  269. package/dist/contentful/assets.d.ts +54 -0
  270. package/dist/contentful/assets.d.ts.map +1 -0
  271. package/dist/contentful/assets.js +168 -0
  272. package/dist/contentful/assets.js.map +1 -0
  273. package/dist/contentful/bulk-rtf-replace.d.ts +29 -0
  274. package/dist/contentful/bulk-rtf-replace.d.ts.map +1 -0
  275. package/dist/contentful/bulk-rtf-replace.js +119 -0
  276. package/dist/contentful/bulk-rtf-replace.js.map +1 -0
  277. package/dist/contentful/cda-sync.d.ts +45 -0
  278. package/dist/contentful/cda-sync.d.ts.map +1 -0
  279. package/dist/contentful/cda-sync.js +382 -0
  280. package/dist/contentful/cda-sync.js.map +1 -0
  281. package/dist/contentful/client.d.ts +56 -0
  282. package/dist/contentful/client.d.ts.map +1 -0
  283. package/dist/contentful/client.js +78 -0
  284. package/dist/contentful/client.js.map +1 -0
  285. package/dist/contentful/cma-user-agent.d.ts +10 -0
  286. package/dist/contentful/cma-user-agent.d.ts.map +1 -0
  287. package/dist/contentful/cma-user-agent.js +20 -0
  288. package/dist/contentful/cma-user-agent.js.map +1 -0
  289. package/dist/contentful/content-type-disk-cache.d.ts +7 -0
  290. package/dist/contentful/content-type-disk-cache.d.ts.map +1 -0
  291. package/dist/contentful/content-type-disk-cache.js +42 -0
  292. package/dist/contentful/content-type-disk-cache.js.map +1 -0
  293. package/dist/contentful/delivery-token.d.ts +17 -0
  294. package/dist/contentful/delivery-token.d.ts.map +1 -0
  295. package/dist/contentful/delivery-token.js +104 -0
  296. package/dist/contentful/delivery-token.js.map +1 -0
  297. package/dist/contentful/entry-fields.d.ts +74 -0
  298. package/dist/contentful/entry-fields.d.ts.map +1 -0
  299. package/dist/contentful/entry-fields.js +403 -0
  300. package/dist/contentful/entry-fields.js.map +1 -0
  301. package/dist/contentful/entry-lookup.d.ts +16 -0
  302. package/dist/contentful/entry-lookup.d.ts.map +1 -0
  303. package/dist/contentful/entry-lookup.js +273 -0
  304. package/dist/contentful/entry-lookup.js.map +1 -0
  305. package/dist/contentful/featured-image-defaults.d.ts +16 -0
  306. package/dist/contentful/featured-image-defaults.d.ts.map +1 -0
  307. package/dist/contentful/featured-image-defaults.js +117 -0
  308. package/dist/contentful/featured-image-defaults.js.map +1 -0
  309. package/dist/contentful/fetch.d.ts +31 -0
  310. package/dist/contentful/fetch.d.ts.map +1 -0
  311. package/dist/contentful/fetch.js +115 -0
  312. package/dist/contentful/fetch.js.map +1 -0
  313. package/dist/contentful/field-metadata.d.ts +8 -0
  314. package/dist/contentful/field-metadata.d.ts.map +1 -0
  315. package/dist/contentful/field-metadata.js +12 -0
  316. package/dist/contentful/field-metadata.js.map +1 -0
  317. package/dist/contentful/field-value-from-json.d.ts +24 -0
  318. package/dist/contentful/field-value-from-json.d.ts.map +1 -0
  319. package/dist/contentful/field-value-from-json.js +206 -0
  320. package/dist/contentful/field-value-from-json.js.map +1 -0
  321. package/dist/contentful/hosted-asset-upload.d.ts +4 -0
  322. package/dist/contentful/hosted-asset-upload.d.ts.map +1 -0
  323. package/dist/contentful/hosted-asset-upload.js +9 -0
  324. package/dist/contentful/hosted-asset-upload.js.map +1 -0
  325. package/dist/contentful/link-fields.d.ts +22 -0
  326. package/dist/contentful/link-fields.d.ts.map +1 -0
  327. package/dist/contentful/link-fields.js +58 -0
  328. package/dist/contentful/link-fields.js.map +1 -0
  329. package/dist/contentful/linkedEntryFields.d.ts +29 -0
  330. package/dist/contentful/linkedEntryFields.d.ts.map +1 -0
  331. package/dist/contentful/linkedEntryFields.js +97 -0
  332. package/dist/contentful/linkedEntryFields.js.map +1 -0
  333. package/dist/contentful/list-entry-format.d.ts +18 -0
  334. package/dist/contentful/list-entry-format.d.ts.map +1 -0
  335. package/dist/contentful/list-entry-format.js +45 -0
  336. package/dist/contentful/list-entry-format.js.map +1 -0
  337. package/dist/contentful/media.d.ts +26 -0
  338. package/dist/contentful/media.d.ts.map +1 -0
  339. package/dist/contentful/media.js +82 -0
  340. package/dist/contentful/media.js.map +1 -0
  341. package/dist/contentful/person-create.d.ts +32 -0
  342. package/dist/contentful/person-create.d.ts.map +1 -0
  343. package/dist/contentful/person-create.js +102 -0
  344. package/dist/contentful/person-create.js.map +1 -0
  345. package/dist/contentful/reference-record.d.ts +45 -0
  346. package/dist/contentful/reference-record.d.ts.map +1 -0
  347. package/dist/contentful/reference-record.js +106 -0
  348. package/dist/contentful/reference-record.js.map +1 -0
  349. package/dist/contentful/references.d.ts +7 -0
  350. package/dist/contentful/references.d.ts.map +1 -0
  351. package/dist/contentful/references.js +12 -0
  352. package/dist/contentful/references.js.map +1 -0
  353. package/dist/contentful/regex.d.ts +14 -0
  354. package/dist/contentful/regex.d.ts.map +1 -0
  355. package/dist/contentful/regex.js +38 -0
  356. package/dist/contentful/regex.js.map +1 -0
  357. package/dist/contentful/resolve-content-type.d.ts +9 -0
  358. package/dist/contentful/resolve-content-type.d.ts.map +1 -0
  359. package/dist/contentful/resolve-content-type.js +38 -0
  360. package/dist/contentful/resolve-content-type.js.map +1 -0
  361. package/dist/contentful/scalar-value.d.ts +19 -0
  362. package/dist/contentful/scalar-value.d.ts.map +1 -0
  363. package/dist/contentful/scalar-value.js +95 -0
  364. package/dist/contentful/scalar-value.js.map +1 -0
  365. package/dist/contentful/set-field-schema.d.ts +32 -0
  366. package/dist/contentful/set-field-schema.d.ts.map +1 -0
  367. package/dist/contentful/set-field-schema.js +123 -0
  368. package/dist/contentful/set-field-schema.js.map +1 -0
  369. package/dist/contentful/slug-validation.d.ts +7 -0
  370. package/dist/contentful/slug-validation.d.ts.map +1 -0
  371. package/dist/contentful/slug-validation.js +15 -0
  372. package/dist/contentful/slug-validation.js.map +1 -0
  373. package/dist/contentful/upload-fetch.d.ts +11 -0
  374. package/dist/contentful/upload-fetch.d.ts.map +1 -0
  375. package/dist/contentful/upload-fetch.js +26 -0
  376. package/dist/contentful/upload-fetch.js.map +1 -0
  377. package/dist/contentful/upload-limits.d.ts +7 -0
  378. package/dist/contentful/upload-limits.d.ts.map +1 -0
  379. package/dist/contentful/upload-limits.js +13 -0
  380. package/dist/contentful/upload-limits.js.map +1 -0
  381. package/dist/contentful/write.d.ts +16 -0
  382. package/dist/contentful/write.d.ts.map +1 -0
  383. package/dist/contentful/write.js +97 -0
  384. package/dist/contentful/write.js.map +1 -0
  385. package/dist/editor-pack/capabilities.d.ts +105 -0
  386. package/dist/editor-pack/capabilities.d.ts.map +1 -0
  387. package/dist/editor-pack/capabilities.js +497 -0
  388. package/dist/editor-pack/capabilities.js.map +1 -0
  389. package/dist/editor-pack/generate.d.ts +19 -0
  390. package/dist/editor-pack/generate.d.ts.map +1 -0
  391. package/dist/editor-pack/generate.js +337 -0
  392. package/dist/editor-pack/generate.js.map +1 -0
  393. package/dist/editor-pack/load.d.ts +13 -0
  394. package/dist/editor-pack/load.d.ts.map +1 -0
  395. package/dist/editor-pack/load.js +99 -0
  396. package/dist/editor-pack/load.js.map +1 -0
  397. package/dist/editor-pack/parse-constants.d.ts +23 -0
  398. package/dist/editor-pack/parse-constants.d.ts.map +1 -0
  399. package/dist/editor-pack/parse-constants.js +99 -0
  400. package/dist/editor-pack/parse-constants.js.map +1 -0
  401. package/dist/editor-pack/parse-guidelines.d.ts +17 -0
  402. package/dist/editor-pack/parse-guidelines.d.ts.map +1 -0
  403. package/dist/editor-pack/parse-guidelines.js +93 -0
  404. package/dist/editor-pack/parse-guidelines.js.map +1 -0
  405. package/dist/editor-pack/parse-registrations.d.ts +7 -0
  406. package/dist/editor-pack/parse-registrations.d.ts.map +1 -0
  407. package/dist/editor-pack/parse-registrations.js +57 -0
  408. package/dist/editor-pack/parse-registrations.js.map +1 -0
  409. package/dist/editor-pack/production-site.d.ts +3 -0
  410. package/dist/editor-pack/production-site.d.ts.map +1 -0
  411. package/dist/editor-pack/production-site.js +68 -0
  412. package/dist/editor-pack/production-site.js.map +1 -0
  413. package/dist/generated/hosted-guide.d.ts +2 -0
  414. package/dist/generated/hosted-guide.d.ts.map +1 -0
  415. package/dist/generated/hosted-guide.js +3 -0
  416. package/dist/generated/hosted-guide.js.map +1 -0
  417. package/dist/generated/version.d.ts +3 -0
  418. package/dist/generated/version.d.ts.map +1 -0
  419. package/dist/generated/version.js +4 -0
  420. package/dist/generated/version.js.map +1 -0
  421. package/dist/hosted/customer-playbooks.d.ts +23 -0
  422. package/dist/hosted/customer-playbooks.d.ts.map +1 -0
  423. package/dist/hosted/customer-playbooks.js +69 -0
  424. package/dist/hosted/customer-playbooks.js.map +1 -0
  425. package/dist/hosted/index.d.ts +30 -0
  426. package/dist/hosted/index.d.ts.map +1 -0
  427. package/dist/hosted/index.js +29 -0
  428. package/dist/hosted/index.js.map +1 -0
  429. package/dist/hosted/next/HostedPageShell.d.ts +18 -0
  430. package/dist/hosted/next/HostedPageShell.d.ts.map +1 -0
  431. package/dist/hosted/next/HostedPageShell.js +12 -0
  432. package/dist/hosted/next/HostedPageShell.js.map +1 -0
  433. package/dist/hosted/next/claude-connect.d.ts +8 -0
  434. package/dist/hosted/next/claude-connect.d.ts.map +1 -0
  435. package/dist/hosted/next/claude-connect.js +23 -0
  436. package/dist/hosted/next/claude-connect.js.map +1 -0
  437. package/dist/hosted/next/context.d.ts +3 -0
  438. package/dist/hosted/next/context.d.ts.map +1 -0
  439. package/dist/hosted/next/context.js +11 -0
  440. package/dist/hosted/next/context.js.map +1 -0
  441. package/dist/hosted/next/editor-pack-path.d.ts +2 -0
  442. package/dist/hosted/next/editor-pack-path.d.ts.map +1 -0
  443. package/dist/hosted/next/editor-pack-path.js +6 -0
  444. package/dist/hosted/next/editor-pack-path.js.map +1 -0
  445. package/dist/hosted/next/page-styles.d.ts +31 -0
  446. package/dist/hosted/next/page-styles.d.ts.map +1 -0
  447. package/dist/hosted/next/page-styles.js +166 -0
  448. package/dist/hosted/next/page-styles.js.map +1 -0
  449. package/dist/hosted/next/pages/CmsEditPage.d.ts +2 -0
  450. package/dist/hosted/next/pages/CmsEditPage.d.ts.map +1 -0
  451. package/dist/hosted/next/pages/CmsEditPage.js +24 -0
  452. package/dist/hosted/next/pages/CmsEditPage.js.map +1 -0
  453. package/dist/hosted/next/pages/ContentfulCallbackPage.d.ts +2 -0
  454. package/dist/hosted/next/pages/ContentfulCallbackPage.d.ts.map +1 -0
  455. package/dist/hosted/next/pages/ContentfulCallbackPage.js +47 -0
  456. package/dist/hosted/next/pages/ContentfulCallbackPage.js.map +1 -0
  457. package/dist/hosted/next/pages/CustomerPlaybookPage.d.ts +8 -0
  458. package/dist/hosted/next/pages/CustomerPlaybookPage.d.ts.map +1 -0
  459. package/dist/hosted/next/pages/CustomerPlaybookPage.js +24 -0
  460. package/dist/hosted/next/pages/CustomerPlaybookPage.js.map +1 -0
  461. package/dist/hosted/next/pages/CustomerPlaybooksPage.d.ts +2 -0
  462. package/dist/hosted/next/pages/CustomerPlaybooksPage.d.ts.map +1 -0
  463. package/dist/hosted/next/pages/CustomerPlaybooksPage.js +29 -0
  464. package/dist/hosted/next/pages/CustomerPlaybooksPage.js.map +1 -0
  465. package/dist/hosted/next/pages/HomePage.d.ts +2 -0
  466. package/dist/hosted/next/pages/HomePage.d.ts.map +1 -0
  467. package/dist/hosted/next/pages/HomePage.js +37 -0
  468. package/dist/hosted/next/pages/HomePage.js.map +1 -0
  469. package/dist/hosted/next/redis.d.ts +5 -0
  470. package/dist/hosted/next/redis.d.ts.map +1 -0
  471. package/dist/hosted/next/redis.js +49 -0
  472. package/dist/hosted/next/redis.js.map +1 -0
  473. package/dist/hosted/next/routes/connect.d.ts +2 -0
  474. package/dist/hosted/next/routes/connect.d.ts.map +1 -0
  475. package/dist/hosted/next/routes/connect.js +19 -0
  476. package/dist/hosted/next/routes/connect.js.map +1 -0
  477. package/dist/hosted/next/routes/customer-index.d.ts +2 -0
  478. package/dist/hosted/next/routes/customer-index.d.ts.map +1 -0
  479. package/dist/hosted/next/routes/customer-index.js +12 -0
  480. package/dist/hosted/next/routes/customer-index.js.map +1 -0
  481. package/dist/hosted/next/routes/customer-resource.d.ts +8 -0
  482. package/dist/hosted/next/routes/customer-resource.d.ts.map +1 -0
  483. package/dist/hosted/next/routes/customer-resource.js +19 -0
  484. package/dist/hosted/next/routes/customer-resource.js.map +1 -0
  485. package/dist/hosted/next/routes/health.d.ts +2 -0
  486. package/dist/hosted/next/routes/health.d.ts.map +1 -0
  487. package/dist/hosted/next/routes/health.js +82 -0
  488. package/dist/hosted/next/routes/health.js.map +1 -0
  489. package/dist/hosted/next/routes/link-contentful.d.ts +2 -0
  490. package/dist/hosted/next/routes/link-contentful.d.ts.map +1 -0
  491. package/dist/hosted/next/routes/link-contentful.js +6 -0
  492. package/dist/hosted/next/routes/link-contentful.js.map +1 -0
  493. package/dist/hosted/next/routes/mcp.d.ts +4 -0
  494. package/dist/hosted/next/routes/mcp.d.ts.map +1 -0
  495. package/dist/hosted/next/routes/mcp.js +116 -0
  496. package/dist/hosted/next/routes/mcp.js.map +1 -0
  497. package/dist/hosted/next/routes/oauth-authorization-server.d.ts +2 -0
  498. package/dist/hosted/next/routes/oauth-authorization-server.d.ts.map +1 -0
  499. package/dist/hosted/next/routes/oauth-authorization-server.js +5 -0
  500. package/dist/hosted/next/routes/oauth-authorization-server.js.map +1 -0
  501. package/dist/hosted/next/routes/oauth-authorize.d.ts +2 -0
  502. package/dist/hosted/next/routes/oauth-authorize.d.ts.map +1 -0
  503. package/dist/hosted/next/routes/oauth-authorize.js +6 -0
  504. package/dist/hosted/next/routes/oauth-authorize.js.map +1 -0
  505. package/dist/hosted/next/routes/oauth-protected-resource.d.ts +2 -0
  506. package/dist/hosted/next/routes/oauth-protected-resource.d.ts.map +1 -0
  507. package/dist/hosted/next/routes/oauth-protected-resource.js +5 -0
  508. package/dist/hosted/next/routes/oauth-protected-resource.js.map +1 -0
  509. package/dist/hosted/next/routes/oauth-register.d.ts +2 -0
  510. package/dist/hosted/next/routes/oauth-register.d.ts.map +1 -0
  511. package/dist/hosted/next/routes/oauth-register.js +6 -0
  512. package/dist/hosted/next/routes/oauth-register.js.map +1 -0
  513. package/dist/hosted/next/routes/oauth-token.d.ts +2 -0
  514. package/dist/hosted/next/routes/oauth-token.d.ts.map +1 -0
  515. package/dist/hosted/next/routes/oauth-token.js +6 -0
  516. package/dist/hosted/next/routes/oauth-token.js.map +1 -0
  517. package/dist/hosted/next/routes/staged-upload.d.ts +2 -0
  518. package/dist/hosted/next/routes/staged-upload.d.ts.map +1 -0
  519. package/dist/hosted/next/routes/staged-upload.js +83 -0
  520. package/dist/hosted/next/routes/staged-upload.js.map +1 -0
  521. package/dist/hosted/next/stage-site.d.ts +11 -0
  522. package/dist/hosted/next/stage-site.d.ts.map +1 -0
  523. package/dist/hosted/next/stage-site.js +50 -0
  524. package/dist/hosted/next/stage-site.js.map +1 -0
  525. package/dist/hosted/oauth/auth.d.ts +15 -0
  526. package/dist/hosted/oauth/auth.d.ts.map +1 -0
  527. package/dist/hosted/oauth/auth.js +54 -0
  528. package/dist/hosted/oauth/auth.js.map +1 -0
  529. package/dist/hosted/oauth/cached-cma.d.ts +14 -0
  530. package/dist/hosted/oauth/cached-cma.d.ts.map +1 -0
  531. package/dist/hosted/oauth/cached-cma.js +41 -0
  532. package/dist/hosted/oauth/cached-cma.js.map +1 -0
  533. package/dist/hosted/oauth/complete.d.ts +16 -0
  534. package/dist/hosted/oauth/complete.d.ts.map +1 -0
  535. package/dist/hosted/oauth/complete.js +55 -0
  536. package/dist/hosted/oauth/complete.js.map +1 -0
  537. package/dist/hosted/oauth/config.d.ts +7 -0
  538. package/dist/hosted/oauth/config.d.ts.map +1 -0
  539. package/dist/hosted/oauth/config.js +33 -0
  540. package/dist/hosted/oauth/config.js.map +1 -0
  541. package/dist/hosted/oauth/handlers.d.ts +18 -0
  542. package/dist/hosted/oauth/handlers.d.ts.map +1 -0
  543. package/dist/hosted/oauth/handlers.js +262 -0
  544. package/dist/hosted/oauth/handlers.js.map +1 -0
  545. package/dist/hosted/oauth/jwt.d.ts +9 -0
  546. package/dist/hosted/oauth/jwt.d.ts.map +1 -0
  547. package/dist/hosted/oauth/jwt.js +31 -0
  548. package/dist/hosted/oauth/jwt.js.map +1 -0
  549. package/dist/hosted/oauth/log.d.ts +12 -0
  550. package/dist/hosted/oauth/log.d.ts.map +1 -0
  551. package/dist/hosted/oauth/log.js +71 -0
  552. package/dist/hosted/oauth/log.js.map +1 -0
  553. package/dist/hosted/oauth/pat-cache.d.ts +11 -0
  554. package/dist/hosted/oauth/pat-cache.d.ts.map +1 -0
  555. package/dist/hosted/oauth/pat-cache.js +42 -0
  556. package/dist/hosted/oauth/pat-cache.js.map +1 -0
  557. package/dist/hosted/oauth/pkce.d.ts +3 -0
  558. package/dist/hosted/oauth/pkce.d.ts.map +1 -0
  559. package/dist/hosted/oauth/pkce.js +9 -0
  560. package/dist/hosted/oauth/pkce.js.map +1 -0
  561. package/dist/hosted/oauth/redirect-uri.d.ts +10 -0
  562. package/dist/hosted/oauth/redirect-uri.d.ts.map +1 -0
  563. package/dist/hosted/oauth/redirect-uri.js +61 -0
  564. package/dist/hosted/oauth/redirect-uri.js.map +1 -0
  565. package/dist/hosted/oauth/refresh.d.ts +22 -0
  566. package/dist/hosted/oauth/refresh.d.ts.map +1 -0
  567. package/dist/hosted/oauth/refresh.js +46 -0
  568. package/dist/hosted/oauth/refresh.js.map +1 -0
  569. package/dist/hosted/oauth/store.d.ts +75 -0
  570. package/dist/hosted/oauth/store.d.ts.map +1 -0
  571. package/dist/hosted/oauth/store.js +217 -0
  572. package/dist/hosted/oauth/store.js.map +1 -0
  573. package/dist/hosted/oauth/token-grant-response.d.ts +7 -0
  574. package/dist/hosted/oauth/token-grant-response.d.ts.map +1 -0
  575. package/dist/hosted/oauth/token-grant-response.js +34 -0
  576. package/dist/hosted/oauth/token-grant-response.js.map +1 -0
  577. package/dist/hosted/parse-customer-resource.d.ts +3 -0
  578. package/dist/hosted/parse-customer-resource.d.ts.map +1 -0
  579. package/dist/hosted/parse-customer-resource.js +16 -0
  580. package/dist/hosted/parse-customer-resource.js.map +1 -0
  581. package/dist/index/blob.d.ts +5 -0
  582. package/dist/index/blob.d.ts.map +1 -0
  583. package/dist/index/blob.js +15 -0
  584. package/dist/index/blob.js.map +1 -0
  585. package/dist/index/cache-keys.d.ts +9 -0
  586. package/dist/index/cache-keys.d.ts.map +1 -0
  587. package/dist/index/cache-keys.js +13 -0
  588. package/dist/index/cache-keys.js.map +1 -0
  589. package/dist/index/cache-store.d.ts +31 -0
  590. package/dist/index/cache-store.d.ts.map +1 -0
  591. package/dist/index/cache-store.js +17 -0
  592. package/dist/index/cache-store.js.map +1 -0
  593. package/dist/index/db.d.ts +12 -0
  594. package/dist/index/db.d.ts.map +1 -0
  595. package/dist/index/db.js +49 -0
  596. package/dist/index/db.js.map +1 -0
  597. package/dist/index/distributed-sync-lock.d.ts +3 -0
  598. package/dist/index/distributed-sync-lock.d.ts.map +1 -0
  599. package/dist/index/distributed-sync-lock.js +22 -0
  600. package/dist/index/distributed-sync-lock.js.map +1 -0
  601. package/dist/index/errors.d.ts +18 -0
  602. package/dist/index/errors.d.ts.map +1 -0
  603. package/dist/index/errors.js +18 -0
  604. package/dist/index/errors.js.map +1 -0
  605. package/dist/index/file-index-cache.d.ts +16 -0
  606. package/dist/index/file-index-cache.d.ts.map +1 -0
  607. package/dist/index/file-index-cache.js +103 -0
  608. package/dist/index/file-index-cache.js.map +1 -0
  609. package/dist/index/hydrate.d.ts +8 -0
  610. package/dist/index/hydrate.d.ts.map +1 -0
  611. package/dist/index/hydrate.js +26 -0
  612. package/dist/index/hydrate.js.map +1 -0
  613. package/dist/index/invalidate.d.ts +28 -0
  614. package/dist/index/invalidate.d.ts.map +1 -0
  615. package/dist/index/invalidate.js +114 -0
  616. package/dist/index/invalidate.js.map +1 -0
  617. package/dist/index/mode.d.ts +7 -0
  618. package/dist/index/mode.d.ts.map +1 -0
  619. package/dist/index/mode.js +9 -0
  620. package/dist/index/mode.js.map +1 -0
  621. package/dist/index/patch-index.d.ts +12 -0
  622. package/dist/index/patch-index.d.ts.map +1 -0
  623. package/dist/index/patch-index.js +80 -0
  624. package/dist/index/patch-index.js.map +1 -0
  625. package/dist/index/paths.d.ts +6 -0
  626. package/dist/index/paths.d.ts.map +1 -0
  627. package/dist/index/paths.js +23 -0
  628. package/dist/index/paths.js.map +1 -0
  629. package/dist/index/publish-cache.d.ts +5 -0
  630. package/dist/index/publish-cache.d.ts.map +1 -0
  631. package/dist/index/publish-cache.js +26 -0
  632. package/dist/index/publish-cache.js.map +1 -0
  633. package/dist/index/query.d.ts +139 -0
  634. package/dist/index/query.d.ts.map +1 -0
  635. package/dist/index/query.js +451 -0
  636. package/dist/index/query.js.map +1 -0
  637. package/dist/index/redis-index-cache.d.ts +24 -0
  638. package/dist/index/redis-index-cache.d.ts.map +1 -0
  639. package/dist/index/redis-index-cache.js +83 -0
  640. package/dist/index/redis-index-cache.js.map +1 -0
  641. package/dist/index/reference-lookup.d.ts +18 -0
  642. package/dist/index/reference-lookup.d.ts.map +1 -0
  643. package/dist/index/reference-lookup.js +123 -0
  644. package/dist/index/reference-lookup.js.map +1 -0
  645. package/dist/index/require.d.ts +22 -0
  646. package/dist/index/require.d.ts.map +1 -0
  647. package/dist/index/require.js +74 -0
  648. package/dist/index/require.js.map +1 -0
  649. package/dist/index/run-sync.d.ts +22 -0
  650. package/dist/index/run-sync.d.ts.map +1 -0
  651. package/dist/index/run-sync.js +76 -0
  652. package/dist/index/run-sync.js.map +1 -0
  653. package/dist/index/schema.d.ts +19 -0
  654. package/dist/index/schema.d.ts.map +1 -0
  655. package/dist/index/schema.js +81 -0
  656. package/dist/index/schema.js.map +1 -0
  657. package/dist/index/sync-lock.d.ts +9 -0
  658. package/dist/index/sync-lock.d.ts.map +1 -0
  659. package/dist/index/sync-lock.js +98 -0
  660. package/dist/index/sync-lock.js.map +1 -0
  661. package/dist/index/sync-log.d.ts +7 -0
  662. package/dist/index/sync-log.d.ts.map +1 -0
  663. package/dist/index/sync-log.js +23 -0
  664. package/dist/index/sync-log.js.map +1 -0
  665. package/dist/index/sync.d.ts +50 -0
  666. package/dist/index/sync.d.ts.map +1 -0
  667. package/dist/index/sync.js +292 -0
  668. package/dist/index/sync.js.map +1 -0
  669. package/dist/index.d.ts +7 -0
  670. package/dist/index.d.ts.map +1 -0
  671. package/dist/index.js +5 -0
  672. package/dist/index.js.map +1 -0
  673. package/dist/mcp/guide.d.ts +21 -0
  674. package/dist/mcp/guide.d.ts.map +1 -0
  675. package/dist/mcp/guide.js +97 -0
  676. package/dist/mcp/guide.js.map +1 -0
  677. package/dist/mcp/hosted-metadata.d.ts +12 -0
  678. package/dist/mcp/hosted-metadata.d.ts.map +1 -0
  679. package/dist/mcp/hosted-metadata.js +30 -0
  680. package/dist/mcp/hosted-metadata.js.map +1 -0
  681. package/dist/mcp/http-handler.d.ts +15 -0
  682. package/dist/mcp/http-handler.d.ts.map +1 -0
  683. package/dist/mcp/http-handler.js +38 -0
  684. package/dist/mcp/http-handler.js.map +1 -0
  685. package/dist/mcp/prompts/onboarding.d.ts +4 -0
  686. package/dist/mcp/prompts/onboarding.d.ts.map +1 -0
  687. package/dist/mcp/prompts/onboarding.js +398 -0
  688. package/dist/mcp/prompts/onboarding.js.map +1 -0
  689. package/dist/mcp/resources/customer.d.ts +7 -0
  690. package/dist/mcp/resources/customer.d.ts.map +1 -0
  691. package/dist/mcp/resources/customer.js +72 -0
  692. package/dist/mcp/resources/customer.js.map +1 -0
  693. package/dist/mcp/resources/guide.d.ts +4 -0
  694. package/dist/mcp/resources/guide.d.ts.map +1 -0
  695. package/dist/mcp/resources/guide.js +16 -0
  696. package/dist/mcp/resources/guide.js.map +1 -0
  697. package/dist/mcp/server.d.ts +17 -0
  698. package/dist/mcp/server.d.ts.map +1 -0
  699. package/dist/mcp/server.js +63 -0
  700. package/dist/mcp/server.js.map +1 -0
  701. package/dist/mcp/session-args.d.ts +10 -0
  702. package/dist/mcp/session-args.d.ts.map +1 -0
  703. package/dist/mcp/session-args.js +28 -0
  704. package/dist/mcp/session-args.js.map +1 -0
  705. package/dist/mcp/tools/cms-edit.d.ts +10 -0
  706. package/dist/mcp/tools/cms-edit.d.ts.map +1 -0
  707. package/dist/mcp/tools/cms-edit.js +148 -0
  708. package/dist/mcp/tools/cms-edit.js.map +1 -0
  709. package/dist/mcp/tools/customer.d.ts +8 -0
  710. package/dist/mcp/tools/customer.d.ts.map +1 -0
  711. package/dist/mcp/tools/customer.js +41 -0
  712. package/dist/mcp/tools/customer.js.map +1 -0
  713. package/dist/mcp/tools/help.d.ts +4 -0
  714. package/dist/mcp/tools/help.d.ts.map +1 -0
  715. package/dist/mcp/tools/help.js +23 -0
  716. package/dist/mcp/tools/help.js.map +1 -0
  717. package/dist/mcp/tools/media.d.ts +4 -0
  718. package/dist/mcp/tools/media.d.ts.map +1 -0
  719. package/dist/mcp/tools/media.js +176 -0
  720. package/dist/mcp/tools/media.js.map +1 -0
  721. package/dist/mcp/tools/staged-upload.d.ts +4 -0
  722. package/dist/mcp/tools/staged-upload.d.ts.map +1 -0
  723. package/dist/mcp/tools/staged-upload.js +77 -0
  724. package/dist/mcp/tools/staged-upload.js.map +1 -0
  725. package/dist/mcp/types.d.ts +2 -0
  726. package/dist/mcp/types.d.ts.map +1 -0
  727. package/dist/mcp/types.js +2 -0
  728. package/dist/mcp/types.js.map +1 -0
  729. package/dist/media-pipeline/actions.d.ts +32 -0
  730. package/dist/media-pipeline/actions.d.ts.map +1 -0
  731. package/dist/media-pipeline/actions.js +436 -0
  732. package/dist/media-pipeline/actions.js.map +1 -0
  733. package/dist/media-pipeline/client.d.ts +71 -0
  734. package/dist/media-pipeline/client.d.ts.map +1 -0
  735. package/dist/media-pipeline/client.js +79 -0
  736. package/dist/media-pipeline/client.js.map +1 -0
  737. package/dist/media-pipeline/config.d.ts +17 -0
  738. package/dist/media-pipeline/config.d.ts.map +1 -0
  739. package/dist/media-pipeline/config.js +52 -0
  740. package/dist/media-pipeline/config.js.map +1 -0
  741. package/dist/media-pipeline/import-filter.d.ts +36 -0
  742. package/dist/media-pipeline/import-filter.d.ts.map +1 -0
  743. package/dist/media-pipeline/import-filter.js +53 -0
  744. package/dist/media-pipeline/import-filter.js.map +1 -0
  745. package/dist/media-pipeline/import.d.ts +25 -0
  746. package/dist/media-pipeline/import.d.ts.map +1 -0
  747. package/dist/media-pipeline/import.js +225 -0
  748. package/dist/media-pipeline/import.js.map +1 -0
  749. package/dist/media-pipeline/index.d.ts +6 -0
  750. package/dist/media-pipeline/index.d.ts.map +1 -0
  751. package/dist/media-pipeline/index.js +6 -0
  752. package/dist/media-pipeline/index.js.map +1 -0
  753. package/dist/media-pipeline/job-store.d.ts +49 -0
  754. package/dist/media-pipeline/job-store.d.ts.map +1 -0
  755. package/dist/media-pipeline/job-store.js +215 -0
  756. package/dist/media-pipeline/job-store.js.map +1 -0
  757. package/dist/media-pipeline/limits.d.ts +19 -0
  758. package/dist/media-pipeline/limits.d.ts.map +1 -0
  759. package/dist/media-pipeline/limits.js +19 -0
  760. package/dist/media-pipeline/limits.js.map +1 -0
  761. package/dist/media-pipeline/log.d.ts +3 -0
  762. package/dist/media-pipeline/log.d.ts.map +1 -0
  763. package/dist/media-pipeline/log.js +12 -0
  764. package/dist/media-pipeline/log.js.map +1 -0
  765. package/dist/media-pipeline/validate.d.ts +18 -0
  766. package/dist/media-pipeline/validate.d.ts.map +1 -0
  767. package/dist/media-pipeline/validate.js +38 -0
  768. package/dist/media-pipeline/validate.js.map +1 -0
  769. package/dist/output/json.d.ts +53 -0
  770. package/dist/output/json.d.ts.map +1 -0
  771. package/dist/output/json.js +110 -0
  772. package/dist/output/json.js.map +1 -0
  773. package/dist/output/mode.d.ts +3 -0
  774. package/dist/output/mode.d.ts.map +1 -0
  775. package/dist/output/mode.js +16 -0
  776. package/dist/output/mode.js.map +1 -0
  777. package/dist/output/print.d.ts +14 -0
  778. package/dist/output/print.d.ts.map +1 -0
  779. package/dist/output/print.js +61 -0
  780. package/dist/output/print.js.map +1 -0
  781. package/dist/output/terminal-table.d.ts +15 -0
  782. package/dist/output/terminal-table.d.ts.map +1 -0
  783. package/dist/output/terminal-table.js +60 -0
  784. package/dist/output/terminal-table.js.map +1 -0
  785. package/dist/preview/capture-urls.d.ts +12 -0
  786. package/dist/preview/capture-urls.d.ts.map +1 -0
  787. package/dist/preview/capture-urls.js +41 -0
  788. package/dist/preview/capture-urls.js.map +1 -0
  789. package/dist/preview/entry-urls.d.ts +44 -0
  790. package/dist/preview/entry-urls.d.ts.map +1 -0
  791. package/dist/preview/entry-urls.js +153 -0
  792. package/dist/preview/entry-urls.js.map +1 -0
  793. package/dist/project/doctor.d.ts +9 -0
  794. package/dist/project/doctor.d.ts.map +1 -0
  795. package/dist/project/doctor.js +172 -0
  796. package/dist/project/doctor.js.map +1 -0
  797. package/dist/project/load.d.ts +5 -0
  798. package/dist/project/load.d.ts.map +1 -0
  799. package/dist/project/load.js +66 -0
  800. package/dist/project/load.js.map +1 -0
  801. package/dist/project/types.d.ts +54 -0
  802. package/dist/project/types.d.ts.map +1 -0
  803. package/dist/project/types.js +53 -0
  804. package/dist/project/types.js.map +1 -0
  805. package/dist/project/validate-hosted.d.ts +7 -0
  806. package/dist/project/validate-hosted.d.ts.map +1 -0
  807. package/dist/project/validate-hosted.js +12 -0
  808. package/dist/project/validate-hosted.js.map +1 -0
  809. package/dist/project/validate-secrets.d.ts +7 -0
  810. package/dist/project/validate-secrets.d.ts.map +1 -0
  811. package/dist/project/validate-secrets.js +61 -0
  812. package/dist/project/validate-secrets.js.map +1 -0
  813. package/dist/rtf/convertToRtf.d.ts +7 -0
  814. package/dist/rtf/convertToRtf.d.ts.map +1 -0
  815. package/dist/rtf/convertToRtf.js +24 -0
  816. package/dist/rtf/convertToRtf.js.map +1 -0
  817. package/dist/rtf/fromHtml.d.ts +8 -0
  818. package/dist/rtf/fromHtml.d.ts.map +1 -0
  819. package/dist/rtf/fromHtml.js +290 -0
  820. package/dist/rtf/fromHtml.js.map +1 -0
  821. package/dist/rtf/fromMarkdown.d.ts +25 -0
  822. package/dist/rtf/fromMarkdown.d.ts.map +1 -0
  823. package/dist/rtf/fromMarkdown.js +375 -0
  824. package/dist/rtf/fromMarkdown.js.map +1 -0
  825. package/dist/rtf/fromPlainText.d.ts +7 -0
  826. package/dist/rtf/fromPlainText.d.ts.map +1 -0
  827. package/dist/rtf/fromPlainText.js +39 -0
  828. package/dist/rtf/fromPlainText.js.map +1 -0
  829. package/dist/rtf/fromRtfJson.d.ts +10 -0
  830. package/dist/rtf/fromRtfJson.d.ts.map +1 -0
  831. package/dist/rtf/fromRtfJson.js +52 -0
  832. package/dist/rtf/fromRtfJson.js.map +1 -0
  833. package/dist/rtf/inlineHtml.d.ts +6 -0
  834. package/dist/rtf/inlineHtml.d.ts.map +1 -0
  835. package/dist/rtf/inlineHtml.js +152 -0
  836. package/dist/rtf/inlineHtml.js.map +1 -0
  837. package/dist/rtf/references.d.ts +9 -0
  838. package/dist/rtf/references.d.ts.map +1 -0
  839. package/dist/rtf/references.js +49 -0
  840. package/dist/rtf/references.js.map +1 -0
  841. package/dist/rtf/replacePlainText.d.ts +117 -0
  842. package/dist/rtf/replacePlainText.d.ts.map +1 -0
  843. package/dist/rtf/replacePlainText.js +598 -0
  844. package/dist/rtf/replacePlainText.js.map +1 -0
  845. package/dist/rtf/resolveRtfInput.d.ts +11 -0
  846. package/dist/rtf/resolveRtfInput.d.ts.map +1 -0
  847. package/dist/rtf/resolveRtfInput.js +23 -0
  848. package/dist/rtf/resolveRtfInput.js.map +1 -0
  849. package/dist/rtf/toMarkdown.d.ts +6 -0
  850. package/dist/rtf/toMarkdown.d.ts.map +1 -0
  851. package/dist/rtf/toMarkdown.js +179 -0
  852. package/dist/rtf/toMarkdown.js.map +1 -0
  853. package/dist/rtf/types.d.ts +5 -0
  854. package/dist/rtf/types.d.ts.map +1 -0
  855. package/dist/rtf/types.js +2 -0
  856. package/dist/rtf/types.js.map +1 -0
  857. package/dist/rtf/utils.d.ts +7 -0
  858. package/dist/rtf/utils.d.ts.map +1 -0
  859. package/dist/rtf/utils.js +11 -0
  860. package/dist/rtf/utils.js.map +1 -0
  861. package/dist/runtime/context.d.ts +32 -0
  862. package/dist/runtime/context.d.ts.map +1 -0
  863. package/dist/runtime/context.js +9 -0
  864. package/dist/runtime/context.js.map +1 -0
  865. package/dist/session/dirty.d.ts +20 -0
  866. package/dist/session/dirty.d.ts.map +1 -0
  867. package/dist/session/dirty.js +44 -0
  868. package/dist/session/dirty.js.map +1 -0
  869. package/dist/session/file-session-store.d.ts +10 -0
  870. package/dist/session/file-session-store.d.ts.map +1 -0
  871. package/dist/session/file-session-store.js +169 -0
  872. package/dist/session/file-session-store.js.map +1 -0
  873. package/dist/session/log.d.ts +6 -0
  874. package/dist/session/log.d.ts.map +1 -0
  875. package/dist/session/log.js +21 -0
  876. package/dist/session/log.js.map +1 -0
  877. package/dist/session/redis-session-store.d.ts +40 -0
  878. package/dist/session/redis-session-store.d.ts.map +1 -0
  879. package/dist/session/redis-session-store.js +199 -0
  880. package/dist/session/redis-session-store.js.map +1 -0
  881. package/dist/session/refs.d.ts +45 -0
  882. package/dist/session/refs.d.ts.map +1 -0
  883. package/dist/session/refs.js +152 -0
  884. package/dist/session/refs.js.map +1 -0
  885. package/dist/session/session-store.d.ts +27 -0
  886. package/dist/session/session-store.d.ts.map +1 -0
  887. package/dist/session/session-store.js +9 -0
  888. package/dist/session/session-store.js.map +1 -0
  889. package/dist/session/state.d.ts +106 -0
  890. package/dist/session/state.d.ts.map +1 -0
  891. package/dist/session/state.js +93 -0
  892. package/dist/session/state.js.map +1 -0
  893. package/dist/session/store.d.ts +16 -0
  894. package/dist/session/store.d.ts.map +1 -0
  895. package/dist/session/store.js +89 -0
  896. package/dist/session/store.js.map +1 -0
  897. package/dist/snapshot/field-value.d.ts +5 -0
  898. package/dist/snapshot/field-value.d.ts.map +1 -0
  899. package/dist/snapshot/field-value.js +42 -0
  900. package/dist/snapshot/field-value.js.map +1 -0
  901. package/dist/snapshot/fields.d.ts +10 -0
  902. package/dist/snapshot/fields.d.ts.map +1 -0
  903. package/dist/snapshot/fields.js +72 -0
  904. package/dist/snapshot/fields.js.map +1 -0
  905. package/dist/snapshot/render.d.ts +21 -0
  906. package/dist/snapshot/render.d.ts.map +1 -0
  907. package/dist/snapshot/render.js +231 -0
  908. package/dist/snapshot/render.js.map +1 -0
  909. package/dist/staged-upload/hmac.d.ts +6 -0
  910. package/dist/staged-upload/hmac.d.ts.map +1 -0
  911. package/dist/staged-upload/hmac.js +43 -0
  912. package/dist/staged-upload/hmac.js.map +1 -0
  913. package/dist/staged-upload/limits.d.ts +6 -0
  914. package/dist/staged-upload/limits.d.ts.map +1 -0
  915. package/dist/staged-upload/limits.js +9 -0
  916. package/dist/staged-upload/limits.js.map +1 -0
  917. package/dist/staged-upload/mime.d.ts +2 -0
  918. package/dist/staged-upload/mime.d.ts.map +1 -0
  919. package/dist/staged-upload/mime.js +15 -0
  920. package/dist/staged-upload/mime.js.map +1 -0
  921. package/dist/staged-upload/request.d.ts +11 -0
  922. package/dist/staged-upload/request.d.ts.map +1 -0
  923. package/dist/staged-upload/request.js +40 -0
  924. package/dist/staged-upload/request.js.map +1 -0
  925. package/dist/staged-upload/store.d.ts +19 -0
  926. package/dist/staged-upload/store.d.ts.map +1 -0
  927. package/dist/staged-upload/store.js +124 -0
  928. package/dist/staged-upload/store.js.map +1 -0
  929. package/dist/staged-upload/types.d.ts +27 -0
  930. package/dist/staged-upload/types.d.ts.map +1 -0
  931. package/dist/staged-upload/types.js +2 -0
  932. package/dist/staged-upload/types.js.map +1 -0
  933. package/dist/telemetry/axiom.d.ts +22 -0
  934. package/dist/telemetry/axiom.d.ts.map +1 -0
  935. package/dist/telemetry/axiom.js +45 -0
  936. package/dist/telemetry/axiom.js.map +1 -0
  937. package/dist/telemetry/composite.d.ts +9 -0
  938. package/dist/telemetry/composite.d.ts.map +1 -0
  939. package/dist/telemetry/composite.js +16 -0
  940. package/dist/telemetry/composite.js.map +1 -0
  941. package/dist/telemetry/enrich.d.ts +11 -0
  942. package/dist/telemetry/enrich.d.ts.map +1 -0
  943. package/dist/telemetry/enrich.js +32 -0
  944. package/dist/telemetry/enrich.js.map +1 -0
  945. package/dist/telemetry/factory.d.ts +8 -0
  946. package/dist/telemetry/factory.d.ts.map +1 -0
  947. package/dist/telemetry/factory.js +44 -0
  948. package/dist/telemetry/factory.js.map +1 -0
  949. package/dist/telemetry/index.d.ts +10 -0
  950. package/dist/telemetry/index.d.ts.map +1 -0
  951. package/dist/telemetry/index.js +9 -0
  952. package/dist/telemetry/index.js.map +1 -0
  953. package/dist/telemetry/local.d.ts +9 -0
  954. package/dist/telemetry/local.d.ts.map +1 -0
  955. package/dist/telemetry/local.js +21 -0
  956. package/dist/telemetry/local.js.map +1 -0
  957. package/dist/telemetry/noop.d.ts +7 -0
  958. package/dist/telemetry/noop.d.ts.map +1 -0
  959. package/dist/telemetry/noop.js +6 -0
  960. package/dist/telemetry/noop.js.map +1 -0
  961. package/dist/telemetry/record.d.ts +14 -0
  962. package/dist/telemetry/record.d.ts.map +1 -0
  963. package/dist/telemetry/record.js +61 -0
  964. package/dist/telemetry/record.js.map +1 -0
  965. package/dist/telemetry/request-stats.d.ts +15 -0
  966. package/dist/telemetry/request-stats.d.ts.map +1 -0
  967. package/dist/telemetry/request-stats.js +34 -0
  968. package/dist/telemetry/request-stats.js.map +1 -0
  969. package/dist/telemetry/types.d.ts +47 -0
  970. package/dist/telemetry/types.d.ts.map +1 -0
  971. package/dist/telemetry/types.js +2 -0
  972. package/dist/telemetry/types.js.map +1 -0
  973. package/dist/validation/allowed-types.d.ts +7 -0
  974. package/dist/validation/allowed-types.d.ts.map +1 -0
  975. package/dist/validation/allowed-types.js +17 -0
  976. package/dist/validation/allowed-types.js.map +1 -0
  977. package/dist/version.d.ts +9 -0
  978. package/dist/version.d.ts.map +1 -0
  979. package/dist/version.js +10 -0
  980. package/dist/version.js.map +1 -0
  981. package/docs/FEATURE_REQUESTS_ARCHIVE.md +141 -0
  982. package/docs/FUNCTIONAL_SPEC.md +303 -0
  983. package/docs/MEDIA_INDEX_PLAN.md +256 -0
  984. package/docs/SKILLS.md +29 -0
  985. package/docs/TELEMETRY_AXIOM.md +93 -0
  986. package/docs/editor-tasks/article-tags.md +47 -0
  987. package/docs/editor-tasks/authors-import.md +53 -0
  988. package/docs/editor-tasks/bulk-find-replace.md +52 -0
  989. package/docs/editor-tasks/clone-page.md +39 -0
  990. package/docs/editor-tasks/create-article.md +77 -0
  991. package/docs/editor-tasks/create-from-document.md +77 -0
  992. package/docs/editor-tasks/create-page.md +45 -0
  993. package/docs/editor-tasks/edit-rich-text.md +44 -0
  994. package/docs/editor-tasks/edit-scalar-fields.md +47 -0
  995. package/docs/editor-tasks/featured-images.md +46 -0
  996. package/docs/editor-tasks/media-pipeline-prepare.md +175 -0
  997. package/docs/editor-tasks/media-reuse-and-upload.md +122 -0
  998. package/docs/editor-tasks/media-review.md +139 -0
  999. package/docs/editor-tasks/navigation.md +39 -0
  1000. package/docs/editor-tasks/preview-verify.md +93 -0
  1001. package/docs/editor-tasks/publish-handoff.md +41 -0
  1002. package/docs/editor-tasks/seo-descriptions.md +48 -0
  1003. package/docs/editor-tasks/source-readiness-review.md +116 -0
  1004. package/docs/editor-tasks/taxonomy.md +51 -0
  1005. package/docs/help/article-tags-from-json.md +62 -0
  1006. package/docs/help/asset-review.md +56 -0
  1007. package/docs/help/batch-run.md +222 -0
  1008. package/docs/help/batch.md +94 -0
  1009. package/docs/help/bulk-rtf-replace.md +80 -0
  1010. package/docs/help/create-from-json.md +382 -0
  1011. package/docs/help/fields-article.md +161 -0
  1012. package/docs/help/fields-collection.md +133 -0
  1013. package/docs/help/fields-component.md +165 -0
  1014. package/docs/help/fields-page.md +123 -0
  1015. package/docs/help/fields-taxonomy.md +158 -0
  1016. package/docs/help/fields.md +60 -0
  1017. package/docs/help/index-sync.md +136 -0
  1018. package/docs/help/index.md +181 -0
  1019. package/docs/help/lookup.md +132 -0
  1020. package/docs/help/person-from-json.md +82 -0
  1021. package/docs/help/taxonomy-from-json.md +115 -0
  1022. package/docs/help/workflow.md +239 -0
  1023. package/docs/mcp/e2e-test-prompt.md +159 -0
  1024. package/docs/mcp/hosted-guide.md +354 -0
  1025. package/package.json +107 -0
  1026. package/skills/README.md +30 -0
  1027. package/skills/core/SKILL.md +860 -0
  1028. package/skills/editor-tasks/SKILL.md +86 -0
  1029. package/skills/manifest.json +6 -0
  1030. package/skills/setup/SKILL.md +102 -0
  1031. package/skills/templates/SKILL.md +21 -0
@@ -0,0 +1,685 @@
1
+ /** biome-ignore-all lint/suspicious/noConsole: Console output is intentional in CLI */
2
+ import * as path from 'node:path';
3
+ import pc from 'picocolors';
4
+ import { attachAssetUsages } from '../audit/asset-usage.js';
5
+ import { runMediaReview } from '../audit/media-review.js';
6
+ import { loadConfig, resolveSpaceConfig } from '../config/load.js';
7
+ import { defaultFileNameForMime, getAssetBacklinks, getAssetSummary, uploadAssetBuffer, } from '../contentful/assets.js';
8
+ import { createSafeEnvironment } from '../contentful/client.js';
9
+ import { HOSTED_ASSET_UPLOAD_BASE64_ERROR, isHostedAssetUploadContext, } from '../contentful/hosted-asset-upload.js';
10
+ import { createMediaEntry } from '../contentful/media.js';
11
+ import { parseSafeRegExpPattern } from '../contentful/regex.js';
12
+ import { getActiveFieldDef, getContentTypeCached } from '../contentful/set-field-schema.js';
13
+ import { fetchUploadSource } from '../contentful/upload-fetch.js';
14
+ import { ContentIndexSyncError } from '../index/errors.js';
15
+ import { notifyContentIndexChanged } from '../index/invalidate.js';
16
+ import { auditMissingAlt, findAssetByFileNameInIndex, mediaByAssetId, searchAssetsInIndex, } from '../index/query.js';
17
+ import { ensureContentIndex } from '../index/require.js';
18
+ import { assetSummaryToJson } from '../output/json.js';
19
+ import { isJsonMode } from '../output/mode.js';
20
+ import { errorMsg, infoMsg, successMsg, warnMsg } from '../output/print.js';
21
+ import { getRuntimeContext } from '../runtime/context.js';
22
+ import { makeAssetLink, makeEntryLink, resolveRef } from '../session/refs.js';
23
+ import { requireSession, saveSession } from '../session/store.js';
24
+ function handleAssetCommandError(err) {
25
+ if (err instanceof ContentIndexSyncError) {
26
+ errorMsg(err.message);
27
+ }
28
+ else {
29
+ errorMsg(err instanceof Error ? err.message : String(err));
30
+ }
31
+ process.exit(1);
32
+ }
33
+ export function registerAssetCommand(program) {
34
+ const asset = program.command('asset').description('Search and inspect Contentful assets');
35
+ asset
36
+ .command('search [query]')
37
+ .description('Search assets by title and/or filename')
38
+ .option('-n, --limit <n>', 'Max results (default 10)', '10')
39
+ .option('--skip <n>', 'Skip first N results for pagination', '0')
40
+ .option('--type <mime>', 'Filter by MIME type prefix (e.g. image/, application/pdf)')
41
+ .option('--filename <name>', 'Exact match on file.fileName')
42
+ .option('--filename-match <pattern>', 'Regex match on file.fileName')
43
+ .action(async (query, opts, cmd) => {
44
+ const parentOpts = cmd.parent?.parent?.opts() ?? {};
45
+ try {
46
+ const config = loadConfig(parentOpts.config);
47
+ const { space } = resolveSpaceConfig(config, parentOpts.space);
48
+ const limit = Number.parseInt(opts.limit, 10) || 10;
49
+ const skip = Number.parseInt(opts.skip, 10) || 0;
50
+ await ensureContentIndex(space, { onRebuild: warnMsg });
51
+ if (!query && !opts.filename && !opts.filenameMatch) {
52
+ errorMsg('Provide a title query and/or --filename / --filename-match.');
53
+ process.exit(1);
54
+ }
55
+ if (opts.filename && query) {
56
+ warnMsg('Ignoring title query — --filename takes precedence.');
57
+ }
58
+ if (opts.filenameMatch && query) {
59
+ warnMsg('Ignoring title query — --filename-match takes precedence.');
60
+ }
61
+ const pattern = opts.filenameMatch
62
+ ? parseSafeRegExpPattern(opts.filenameMatch, '--filename-match')
63
+ : undefined;
64
+ const results = searchAssetsInIndex(space, {
65
+ ...(opts.filename ? { exactFileName: opts.filename } : {}),
66
+ ...(pattern ? { fileNamePattern: pattern } : {}),
67
+ ...(query && !opts.filename && !opts.filenameMatch ? { query } : {}),
68
+ ...(opts.type ? { mimeTypePrefix: opts.type } : {}),
69
+ limit,
70
+ skip,
71
+ });
72
+ if (isJsonMode()) {
73
+ console.log(JSON.stringify(results.map(assetSummaryToJson), null, 2));
74
+ return;
75
+ }
76
+ if (results.length === 0) {
77
+ const label = query ?? opts.filename ?? opts.filenameMatch ?? '';
78
+ console.log(pc.dim(`No assets found for "${label}"`));
79
+ return;
80
+ }
81
+ const label = query ?? opts.filename ?? opts.filenameMatch ?? 'filename search';
82
+ console.log(`\n${pc.bold('Assets matching: ')}${pc.cyan(label)}\n`);
83
+ for (const a of results) {
84
+ const dims = a.width && a.height ? ` ${a.width}×${a.height}` : '';
85
+ const sizeStr = a.size ? ` ${Math.round(a.size / 1024)}KB` : '';
86
+ const ct = a.contentType ? ` ${pc.dim(a.contentType)}` : '';
87
+ console.log(` ${pc.bold(a.id)} ${a.title}${pc.dim(`${dims}${sizeStr}`)}${ct}`);
88
+ console.log(` ${pc.dim(a.fileName)} ${pc.dim(a.url)}`);
89
+ }
90
+ console.log('');
91
+ if (skip > 0 || results.length === limit) {
92
+ console.log(pc.dim(`Use --skip ${String(skip + limit)} to see the next page.`));
93
+ }
94
+ console.log(pc.dim('Use the asset ID with: cms-edit asset set <ref> <field> <asset-id>'));
95
+ }
96
+ catch (err) {
97
+ handleAssetCommandError(err);
98
+ }
99
+ });
100
+ asset
101
+ .command('info <asset-id>')
102
+ .description('Show details for a specific asset')
103
+ .option('--no-backlinks', 'Skip fetching entries that reference this asset')
104
+ .action(async (assetId, opts, cmd) => {
105
+ const parentOpts = cmd.parent?.parent?.opts() ?? {};
106
+ try {
107
+ const session = await requireSession(parentOpts.session, parentOpts.config);
108
+ const config = loadConfig(parentOpts.config);
109
+ const { space } = resolveSpaceConfig(config, session.spaceKey);
110
+ const env = await createSafeEnvironment(space);
111
+ const locale = space.defaultLocale;
112
+ const summary = await getAssetSummary(env, assetId);
113
+ if (!summary) {
114
+ errorMsg(`Asset "${assetId}" not found.`);
115
+ process.exit(1);
116
+ return;
117
+ }
118
+ const fetchBacklinks = opts.backlinks !== false;
119
+ const backlinks = fetchBacklinks ? await getAssetBacklinks(env, assetId, locale) : [];
120
+ if (isJsonMode()) {
121
+ console.log(JSON.stringify({ ...assetSummaryToJson(summary), backlinks: fetchBacklinks ? backlinks : null }, null, 2));
122
+ return;
123
+ }
124
+ console.log(`\n${pc.bold('Asset: ')}${summary.title}`);
125
+ console.log(` ID: ${summary.id}`);
126
+ const isImage = summary.contentType.startsWith('image/');
127
+ const descLabel = isImage ? 'Alt text:' : 'Description:';
128
+ if (summary.description) {
129
+ console.log(` ${descLabel.padEnd(13)} ${summary.description}`);
130
+ }
131
+ else {
132
+ console.log(` ${descLabel.padEnd(13)} ${pc.dim('(none)')}`);
133
+ }
134
+ console.log(` File: ${summary.fileName}`);
135
+ console.log(` Content type: ${summary.contentType}`);
136
+ if (summary.width)
137
+ console.log(` Dimensions: ${summary.width}×${summary.height}`);
138
+ if (summary.size)
139
+ console.log(` Size: ${Math.round(summary.size / 1024)}KB`);
140
+ console.log(` URL: ${summary.url}`);
141
+ if (fetchBacklinks) {
142
+ if (backlinks.length === 0) {
143
+ console.log(` Referenced by: (none found)`);
144
+ }
145
+ else {
146
+ console.log(` Referenced by: ${String(backlinks.length)} entr${backlinks.length === 1 ? 'y' : 'ies'}`);
147
+ for (const b of backlinks) {
148
+ const label = b.contentType === 'media' ? `${b.label} (media)` : b.label;
149
+ console.log(` ${pc.dim(b.entryId)} ${b.contentType} "${label}"`);
150
+ }
151
+ }
152
+ }
153
+ console.log('');
154
+ }
155
+ catch (err) {
156
+ errorMsg(err instanceof Error ? err.message : String(err));
157
+ process.exit(1);
158
+ }
159
+ });
160
+ asset
161
+ .command('get <ref> <field>')
162
+ .description('Show the current asset linked on a field in the active session.\n' +
163
+ 'Example: cms-edit asset get @c0 visual')
164
+ .action(async (ref, field, _opts, cmd) => {
165
+ const parentOpts = cmd.parent?.parent?.opts() ?? {};
166
+ try {
167
+ const session = await requireSession(parentOpts.session, parentOpts.config);
168
+ const entry = resolveRef(session, ref);
169
+ const locale = session.defaultLocale;
170
+ const fieldData = entry.fields[field];
171
+ if (!fieldData) {
172
+ errorMsg(`Field "${field}" is missing on ${ref}.`);
173
+ process.exit(1);
174
+ return;
175
+ }
176
+ const val = fieldData[locale] ?? fieldData['en-US'];
177
+ if (!val || typeof val !== 'object') {
178
+ errorMsg(`Field "${field}" on ${ref} is not set or is not an asset link.`);
179
+ process.exit(1);
180
+ return;
181
+ }
182
+ // Collect asset IDs to look up (handles single Link and Array of Links)
183
+ const assetIds = [];
184
+ const asLink = val;
185
+ if (asLink.sys?.linkType === 'Asset' && asLink.sys.id) {
186
+ assetIds.push(asLink.sys.id);
187
+ }
188
+ else if (Array.isArray(val)) {
189
+ for (const item of val) {
190
+ if (item.sys?.linkType === 'Asset' && item.sys.id) {
191
+ assetIds.push(item.sys.id);
192
+ }
193
+ }
194
+ }
195
+ if (assetIds.length === 0) {
196
+ errorMsg(`Field "${field}" on ${ref} does not contain an asset link.`);
197
+ process.exit(1);
198
+ return;
199
+ }
200
+ const config = loadConfig(parentOpts.config);
201
+ const { space } = resolveSpaceConfig(config, session.spaceKey);
202
+ const env = await createSafeEnvironment(space);
203
+ const summaries = await Promise.all(assetIds.map((id) => getAssetSummary(env, id)));
204
+ if (isJsonMode()) {
205
+ const validSummaries = summaries.flatMap((s) => (s ? [assetSummaryToJson(s)] : []));
206
+ console.log(JSON.stringify({ ref, field, assets: validSummaries }, null, 2));
207
+ return;
208
+ }
209
+ console.log(`\n${pc.bold(`${ref}.${field}`)}\n`);
210
+ for (const s of summaries) {
211
+ if (!s)
212
+ continue;
213
+ const dims = s.width && s.height ? ` ${s.width}×${s.height}` : '';
214
+ const sizeStr = s.size ? ` ${Math.round(s.size / 1024)}KB` : '';
215
+ console.log(` ${pc.bold(s.id)} ${s.fileName}${pc.dim(`${dims}${sizeStr}`)} ${pc.dim(s.contentType)}`);
216
+ console.log(` ${pc.dim(s.url)}`);
217
+ }
218
+ console.log('');
219
+ }
220
+ catch (err) {
221
+ errorMsg(err instanceof Error ? err.message : String(err));
222
+ process.exit(1);
223
+ }
224
+ });
225
+ asset
226
+ .command('upload')
227
+ .description('Upload a file as a new draft Contentful asset and print its asset ID.\n' +
228
+ 'Provide exactly one source: --base64 (local CLI only), --url, or --staged (hosted MCP).\n' +
229
+ 'No session required — uses --space flag or defaultSpace from config.\n' +
230
+ 'Example: cms-edit asset upload --url https://example.com/chart.png --title "Figure 1"\n' +
231
+ 'Example: cms-edit asset upload --base64 <encoded> --mime image/jpeg --title "Poster" (local CLI)\n' +
232
+ 'Example: cms-edit asset upload --staged <uploadId> --mime image/png --file-name photo.png')
233
+ .option('--base64 <encoded>', 'Base64-encoded file content')
234
+ .option('--url <https-url>', 'Public URL to fetch and upload')
235
+ .option('--staged <uploadId>', 'Consume a staged upload from cms_edit_request_staged_upload (hosted)')
236
+ .option('--mime <type>', 'MIME type (required for --base64; optional override for file/url)')
237
+ .option('--file-name <name>', 'Target fileName in Contentful (default derived from path/url/mime)')
238
+ .option('--title <title>', 'Asset title (default: filename without extension)')
239
+ .option('--description <text>', 'Asset description')
240
+ .option('--alt <text>', 'Alt text (stored as description when --description is not provided)')
241
+ .option('--with-media', 'Also create a draft Media entry wrapping this asset')
242
+ .option('--media-name <name>', 'Media entry name (default: asset title, then --title)')
243
+ .option('--media-position <position>', 'Media horizontal position: Left, Middle, or Right')
244
+ .option('--media-width <n>', 'Media width percent (1–100)', (v) => Number.parseInt(v, 10))
245
+ .option('--if-exists-by-filename', 'Return existing asset (and media if --with-media) when fileName already exists')
246
+ .action(async (opts, cmd) => {
247
+ const parentOpts = cmd.parent?.parent?.opts() ?? {};
248
+ try {
249
+ const config = loadConfig(parentOpts.config);
250
+ const { space } = resolveSpaceConfig(config, parentOpts.space);
251
+ const env = await createSafeEnvironment(space);
252
+ const locale = space.defaultLocale;
253
+ const description = opts.description ?? opts.alt ?? '';
254
+ const sources = [opts.base64 ? 'base64' : undefined, opts.url, opts.staged].filter(Boolean);
255
+ if (sources.length !== 1) {
256
+ errorMsg('Provide exactly one upload source: --base64, --url, or --staged.');
257
+ process.exit(1);
258
+ }
259
+ const usingBase64 = Boolean(opts.base64);
260
+ const usingUrl = Boolean(opts.url);
261
+ const usingStaged = Boolean(opts.staged);
262
+ if (usingBase64 && isHostedAssetUploadContext()) {
263
+ errorMsg(HOSTED_ASSET_UPLOAD_BASE64_ERROR);
264
+ process.exit(1);
265
+ }
266
+ if (opts.ifExistsByFilename &&
267
+ (usingBase64 || usingUrl || usingStaged) &&
268
+ !opts.fileName) {
269
+ errorMsg('--file-name is required with --if-exists-by-filename when using --base64, --url, or --staged.');
270
+ process.exit(1);
271
+ }
272
+ let summary;
273
+ let targetFileName = opts.fileName;
274
+ if (usingBase64) {
275
+ if (!opts.mime) {
276
+ errorMsg('--mime is required when using --base64.');
277
+ process.exit(1);
278
+ }
279
+ targetFileName = targetFileName ?? defaultFileNameForMime(opts.mime);
280
+ }
281
+ else if (usingStaged) {
282
+ if (!opts.mime) {
283
+ errorMsg('--mime is required when using --staged.');
284
+ process.exit(1);
285
+ }
286
+ if (!opts.fileName) {
287
+ errorMsg('--file-name is required when using --staged.');
288
+ process.exit(1);
289
+ }
290
+ }
291
+ else if (usingUrl) {
292
+ if (!targetFileName) {
293
+ try {
294
+ const urlPath = new URL(opts.url ?? '').pathname;
295
+ targetFileName =
296
+ path.basename(urlPath) ||
297
+ defaultFileNameForMime(opts.mime ?? 'application/octet-stream');
298
+ }
299
+ catch {
300
+ targetFileName = defaultFileNameForMime(opts.mime ?? 'application/octet-stream');
301
+ }
302
+ }
303
+ }
304
+ if (opts.ifExistsByFilename && targetFileName) {
305
+ await ensureContentIndex(space, { onRebuild: warnMsg });
306
+ const existing = findAssetByFileNameInIndex(space, targetFileName);
307
+ if (existing) {
308
+ let mediaIds = [];
309
+ if (opts.withMedia) {
310
+ const indexedMedia = mediaByAssetId(space, existing.id);
311
+ if (indexedMedia.length > 0) {
312
+ mediaIds = indexedMedia.map((m) => m.id);
313
+ }
314
+ else {
315
+ const media = await createMediaEntry(env, {
316
+ assetId: existing.id,
317
+ name: opts.mediaName ?? opts.title ?? existing.title,
318
+ locale,
319
+ position: opts.mediaPosition,
320
+ width: opts.mediaWidth,
321
+ });
322
+ mediaIds = [media.id];
323
+ }
324
+ }
325
+ const mediaId = mediaIds[0];
326
+ if (isJsonMode()) {
327
+ console.log(JSON.stringify({
328
+ ok: true,
329
+ existing: true,
330
+ ...assetSummaryToJson(existing),
331
+ mediaId,
332
+ mediaIds,
333
+ }, null, 2));
334
+ }
335
+ else {
336
+ infoMsg(`Asset with fileName "${existing.fileName}" already exists (ID: ${existing.id}).`);
337
+ if (mediaIds.length > 0) {
338
+ infoMsg(mediaIds.length === 1
339
+ ? `Media entry ID: ${mediaIds[0]}`
340
+ : `Media entry IDs: ${mediaIds.join(', ')}`);
341
+ }
342
+ }
343
+ return;
344
+ }
345
+ }
346
+ if (opts.base64) {
347
+ const buffer = Buffer.from(opts.base64, 'base64');
348
+ summary = await uploadAssetBuffer(env, buffer, {
349
+ title: opts.title,
350
+ description,
351
+ fileName: targetFileName ?? defaultFileNameForMime(opts.mime ?? ''),
352
+ mimeType: opts.mime ?? 'application/octet-stream',
353
+ locale,
354
+ }, (msg) => infoMsg(msg));
355
+ }
356
+ else if (opts.url) {
357
+ const { buffer, contentType } = await fetchUploadSource(opts.url ?? '');
358
+ const mimeType = opts.mime ?? contentType ?? 'application/octet-stream';
359
+ summary = await uploadAssetBuffer(env, buffer, {
360
+ title: opts.title,
361
+ description,
362
+ fileName: targetFileName ?? defaultFileNameForMime(mimeType),
363
+ mimeType,
364
+ locale,
365
+ }, (msg) => infoMsg(msg));
366
+ }
367
+ else if (opts.staged) {
368
+ const context = getRuntimeContext();
369
+ const userId = context?.user?.userId;
370
+ const stagedStore = context?.stagedUploadStore;
371
+ if (!userId || !stagedStore) {
372
+ errorMsg('--staged requires hosted MCP context (authenticated user and Redis staged upload store).');
373
+ process.exit(1);
374
+ }
375
+ const staged = await stagedStore.consume(userId, opts.staged);
376
+ summary = await uploadAssetBuffer(env, staged.buffer, {
377
+ title: opts.title,
378
+ description,
379
+ fileName: targetFileName ?? staged.fileName,
380
+ mimeType: opts.mime ?? staged.mimeType,
381
+ locale,
382
+ }, (msg) => infoMsg(msg));
383
+ }
384
+ else {
385
+ errorMsg('Provide exactly one upload source: --base64, --url, or --staged.');
386
+ process.exit(1);
387
+ }
388
+ const mediaIds = [];
389
+ if (opts.withMedia) {
390
+ const media = await createMediaEntry(env, {
391
+ assetId: summary.id,
392
+ name: opts.mediaName ?? opts.title ?? summary.title,
393
+ locale,
394
+ position: opts.mediaPosition,
395
+ width: opts.mediaWidth,
396
+ });
397
+ mediaIds.push(media.id);
398
+ }
399
+ if (isJsonMode()) {
400
+ console.log(JSON.stringify({
401
+ ok: true,
402
+ ...assetSummaryToJson(summary),
403
+ mediaId: mediaIds[0],
404
+ mediaIds,
405
+ }, null, 2));
406
+ return;
407
+ }
408
+ const dims = summary.width && summary.height ? ` ${summary.width}×${summary.height},` : '';
409
+ const sizeStr = summary.size ? ` ${Math.round(summary.size / 1024)} KB,` : '';
410
+ console.log(pc.green(`✓ Uploaded asset "${summary.title}" (ID: ${summary.id})`));
411
+ console.log(` File: ${summary.fileName} (${dims}${sizeStr} ${summary.contentType})`);
412
+ console.log(` URL: ${summary.url}`);
413
+ if (mediaIds.length > 0) {
414
+ console.log(` Media entry ID: ${mediaIds[0]}`);
415
+ }
416
+ const assetRow = assetSummaryToIndexRow(summary);
417
+ await notifyContentIndexChanged(space, { upsertAssets: [assetRow] });
418
+ }
419
+ catch (err) {
420
+ handleAssetCommandError(err);
421
+ }
422
+ });
423
+ asset
424
+ .command('set <ref> <field> <asset-id>')
425
+ .description('Set a visual/asset field on an entry to a specific asset ID.\n' +
426
+ 'If the field expects an Entry link of type "media", a media wrapper entry is auto-created.\n' +
427
+ 'Use --mobile <id> to also set the mobileVisual field in the same operation.\n' +
428
+ 'Example: cms-edit asset set @c0 visual abc123 --mobile def456')
429
+ .option('--mobile <id>', 'Also set the mobileVisual field to this asset ID')
430
+ .action(async (ref, field, assetId, opts, cmd) => {
431
+ const parentOpts = cmd.parent?.parent?.opts() ?? {};
432
+ try {
433
+ const session = await requireSession(parentOpts.session, parentOpts.config);
434
+ const entry = resolveRef(session, ref);
435
+ const locale = session.defaultLocale;
436
+ const config = loadConfig(parentOpts.config);
437
+ const { space } = resolveSpaceConfig(config, session.spaceKey);
438
+ const env = await createSafeEnvironment(space);
439
+ const resolveFieldLink = async (targetField, targetAssetId) => {
440
+ try {
441
+ const ct = await getContentTypeCached(env, session, entry.sys.contentType.sys.id);
442
+ const fieldDef = getActiveFieldDef(ct, targetField);
443
+ if (fieldDef?.type === 'Link' && fieldDef.linkType === 'Entry') {
444
+ const validations = fieldDef.validations ?? [];
445
+ const linkContentType = validations
446
+ .flatMap((v) => v.linkContentType ?? [])
447
+ .at(0);
448
+ if (linkContentType === 'media') {
449
+ const media = await createMediaEntry(env, {
450
+ assetId: targetAssetId,
451
+ name: `Media for ${targetAssetId}`,
452
+ locale,
453
+ });
454
+ infoMsg(` Created media wrapper entry ${media.id} for asset ${targetAssetId}`);
455
+ return makeEntryLink(media.id);
456
+ }
457
+ const hint = linkContentType
458
+ ? `Create a '${linkContentType}' entry wrapping the asset and use: cms-edit set ${ref} ${targetField} <entry-id> --link`
459
+ : `Create the wrapper entry manually and use: cms-edit set ${ref} ${targetField} <entry-id> --link`;
460
+ errorMsg(`Field '${targetField}' expects a Link → Entry${linkContentType ? ` (${linkContentType})` : ''}, not an Asset.\n ${hint}`);
461
+ process.exit(1);
462
+ }
463
+ }
464
+ catch (schemaErr) {
465
+ warnMsg(`Could not inspect schema for '${targetField}': ${schemaErr instanceof Error ? schemaErr.message : String(schemaErr)}. Setting as asset link.`);
466
+ }
467
+ return makeAssetLink(targetAssetId);
468
+ };
469
+ const primaryLink = await resolveFieldLink(field, assetId);
470
+ if (!entry.fields[field])
471
+ entry.fields[field] = {};
472
+ entry.fields[field][locale] = primaryLink;
473
+ if (opts.mobile) {
474
+ const mobileLink = await resolveFieldLink('mobileVisual', opts.mobile);
475
+ const mobileField = 'mobileVisual';
476
+ if (!entry.fields[mobileField])
477
+ entry.fields[mobileField] = {};
478
+ entry.fields[mobileField][locale] = mobileLink;
479
+ }
480
+ if (!session.modifiedEntryIds.includes(entry.sys.id)) {
481
+ session.modifiedEntryIds.push(entry.sys.id);
482
+ }
483
+ await saveSession(session);
484
+ if (opts.mobile) {
485
+ successMsg(`Set ${field}=${assetId} and mobileVisual=${opts.mobile} on ${ref}.`);
486
+ }
487
+ else {
488
+ successMsg(`Set ${field} on ${ref} to asset ${assetId}.`);
489
+ }
490
+ }
491
+ catch (err) {
492
+ errorMsg(err instanceof Error ? err.message : String(err));
493
+ process.exit(1);
494
+ }
495
+ });
496
+ asset
497
+ .command('review')
498
+ .description('Review visual assets (images, videos, Lottie) for filename, alt text, dimensions, size, and GIF issues.\n' +
499
+ 'Uses the Preview API index by default. Use --json for full report (for spreadsheets / skills).\n' +
500
+ 'Example: cms-edit --json-output asset review --space brightline')
501
+ .option('--published', 'Use Delivery API index instead of Preview')
502
+ .option('--include-passing', 'Include assets with no failing issues (default: failures only)')
503
+ .option('--max-width <n>', 'Max image/video width in pixels (default 2000)', '2000')
504
+ .option('--max-image-kb <n>', 'Max raster image size in KB (default 800)', '800')
505
+ .option('--max-video-mb <n>', 'Max video size in MB (default 8)', '8')
506
+ .option('--max-lottie-kb <n>', 'Max Lottie JSON size in KB (default 400)', '400')
507
+ .option('--include-usage', 'Include slug-bearing usage ancestry per asset in JSON output (slower; uses CMA walk-up)')
508
+ .option('--usage-limit <n>', 'Max assets to resolve usages for when --include-usage is set (default 50; 0 = unlimited)', '50')
509
+ .action(async (opts, cmd) => {
510
+ const parentOpts = cmd.parent?.parent?.opts() ?? {};
511
+ try {
512
+ const config = loadConfig(parentOpts.config);
513
+ const { key, space } = resolveSpaceConfig(config, parentOpts.space);
514
+ await ensureContentIndex(space, {
515
+ onRebuild: warnMsg,
516
+ preview: opts.published ? false : undefined,
517
+ });
518
+ const maxWidth = Number.parseInt(opts.maxWidth, 10);
519
+ const maxImageKb = Number.parseInt(opts.maxImageKb, 10);
520
+ const maxVideoMb = Number.parseInt(opts.maxVideoMb, 10);
521
+ const maxLottieKb = Number.parseInt(opts.maxLottieKb, 10);
522
+ const report = runMediaReview(key, space, {
523
+ preview: !opts.published,
524
+ failuresOnly: !opts.includePassing,
525
+ thresholds: {
526
+ maxWidth: Number.isNaN(maxWidth) ? undefined : maxWidth,
527
+ maxImageBytes: Number.isNaN(maxImageKb) ? undefined : maxImageKb * 1024,
528
+ warnImageBytes: Number.isNaN(maxImageKb)
529
+ ? undefined
530
+ : Math.round(maxImageKb * 1024 * 0.6),
531
+ maxVideoBytes: Number.isNaN(maxVideoMb) ? undefined : maxVideoMb * 1024 * 1024,
532
+ warnVideoBytes: Number.isNaN(maxVideoMb)
533
+ ? undefined
534
+ : Math.round(maxVideoMb * 1024 * 1024 * 0.6),
535
+ maxLottieBytes: Number.isNaN(maxLottieKb) ? undefined : maxLottieKb * 1024,
536
+ warnLottieBytes: Number.isNaN(maxLottieKb)
537
+ ? undefined
538
+ : Math.round(maxLottieKb * 1024 * 0.6),
539
+ },
540
+ });
541
+ if (opts.includeUsage) {
542
+ const env = await createSafeEnvironment(space);
543
+ const parsedLimit = Number.parseInt(opts.usageLimit, 10);
544
+ const usageLimit = Number.isNaN(parsedLimit) ? 50 : parsedLimit;
545
+ const usageResult = await attachAssetUsages(env, report.assets, space.defaultLocale, usageLimit);
546
+ report.usageLimit = usageResult.limit;
547
+ report.usageResolvedCount = usageResult.resolvedCount;
548
+ report.usageTruncated = usageResult.truncated;
549
+ if (usageResult.truncated) {
550
+ warnMsg(`Usage ancestry resolved for ${String(usageResult.resolvedCount)} of ${String(report.assets.length)} assets (--usage-limit ${String(usageResult.limit)}). Pass a higher --usage-limit for more; use 0 for unlimited (may timeout on hosted MCP).`);
551
+ }
552
+ }
553
+ if (isJsonMode()) {
554
+ console.log(JSON.stringify(report, null, 2));
555
+ }
556
+ else {
557
+ console.log(`\n${pc.bold(`Media review — ${key}`)}\n`);
558
+ console.log(` Source: ${report.preview ? 'Preview API' : 'Delivery API'}`);
559
+ console.log(` Visual assets scanned: ${String(report.total)}`);
560
+ console.log(` Assets with failures: ${String(report.failingCount)}\n`);
561
+ for (const asset of report.assets) {
562
+ const dims = asset.width != null && asset.height != null
563
+ ? ` ${String(asset.width)}×${String(asset.height)}`
564
+ : '';
565
+ const failIssues = asset.issues.filter((issue) => issue.severity === 'fail');
566
+ console.log(`${pc.red('✗')} ${pc.bold(asset.fileName)}${pc.dim(dims)} ${pc.dim(asset.id)}`);
567
+ for (const issue of failIssues) {
568
+ console.log(` ${pc.yellow(issue.code)}: ${issue.message}`);
569
+ }
570
+ console.log(` ${pc.dim(asset.contentfulUrl)}`);
571
+ console.log('');
572
+ }
573
+ if (report.failingCount === 0) {
574
+ console.log(pc.green(' No failing assets found.\n'));
575
+ }
576
+ else {
577
+ console.log(pc.dim('Use --json for full report (spreadsheet / contentful-cms-media-review skill).'));
578
+ console.log('');
579
+ }
580
+ }
581
+ if (report.failingCount > 0)
582
+ process.exit(1);
583
+ }
584
+ catch (err) {
585
+ handleAssetCommandError(err);
586
+ }
587
+ });
588
+ asset
589
+ .command('audit')
590
+ .description('Audit image assets for missing descriptions (alt text) across the space.\n' +
591
+ 'Exits with code 1 if any images are missing a description.\n' +
592
+ 'Example: cms-edit asset audit')
593
+ .option('-n, --limit <n>', 'Max image assets to scan (default: all in index)')
594
+ .action(async (opts, cmd) => {
595
+ const parentOpts = cmd.parent?.parent?.opts() ?? {};
596
+ try {
597
+ const config = loadConfig(parentOpts.config);
598
+ const { space } = resolveSpaceConfig(config, parentOpts.space);
599
+ await ensureContentIndex(space, { onRebuild: warnMsg });
600
+ const maxTotal = opts.limit ? Number.parseInt(opts.limit, 10) : undefined;
601
+ const { checked: total, missing } = auditMissingAlt(space, {
602
+ ...(maxTotal !== undefined && !Number.isNaN(maxTotal) ? { limit: maxTotal } : {}),
603
+ });
604
+ if (isJsonMode()) {
605
+ console.log(JSON.stringify({ total, missingCount: missing.length, missing }, null, 2));
606
+ }
607
+ else {
608
+ console.log(`\n${pc.bold('Asset alt text audit')}\n`);
609
+ console.log(` Images checked: ${String(total)}`);
610
+ console.log(` Missing alt text: ${String(missing.length)}\n`);
611
+ if (missing.length > 0) {
612
+ for (const m of missing) {
613
+ console.log(` ${pc.red('✗')} ${pc.bold(m.id)} ${m.title} ${pc.dim(m.fileName)}`);
614
+ }
615
+ console.log('');
616
+ console.log(pc.dim(`Fix with: cms-edit asset set-description <asset-id> "alt text"`));
617
+ console.log('');
618
+ }
619
+ else {
620
+ console.log(pc.green(' All image assets have alt text.\n'));
621
+ }
622
+ }
623
+ if (missing.length > 0)
624
+ process.exit(1);
625
+ }
626
+ catch (err) {
627
+ handleAssetCommandError(err);
628
+ }
629
+ });
630
+ asset
631
+ .command('set-description <asset-id> <text>')
632
+ .description('Update the description (alt text) on a Contentful asset. Saves as draft by default.\n' +
633
+ 'Example: cms-edit asset set-description abc123 "A chart showing revenue growth"')
634
+ .option('--publish', 'Publish the asset after updating the description')
635
+ .action(async (assetId, text, opts, cmd) => {
636
+ const parentOpts = cmd.parent?.parent?.opts() ?? {};
637
+ try {
638
+ const config = loadConfig(parentOpts.config);
639
+ const { space } = resolveSpaceConfig(config, parentOpts.space);
640
+ const env = await createSafeEnvironment(space);
641
+ const locale = space.defaultLocale;
642
+ const asset = await env.getAsset(assetId);
643
+ const fields = asset.fields;
644
+ if (!fields['description'])
645
+ fields['description'] = {};
646
+ fields['description'][locale] = text;
647
+ const updated = await env.updateAsset(asset);
648
+ if (opts.publish) {
649
+ await env.publishAsset(updated);
650
+ successMsg(`Updated and published description on asset ${assetId}.`);
651
+ }
652
+ else {
653
+ successMsg(`Updated description on asset ${assetId} (saved as draft).`);
654
+ }
655
+ const summary = await getAssetSummary(env, assetId);
656
+ if (summary) {
657
+ await notifyContentIndexChanged(space, {
658
+ upsertAssets: [assetSummaryToIndexRow(summary)],
659
+ });
660
+ }
661
+ if (isJsonMode()) {
662
+ console.log(JSON.stringify({ ok: true, assetId, description: text, published: opts.publish ?? false }, null, 2));
663
+ }
664
+ }
665
+ catch (err) {
666
+ errorMsg(err instanceof Error ? err.message : String(err));
667
+ process.exit(1);
668
+ }
669
+ });
670
+ }
671
+ function assetSummaryToIndexRow(summary) {
672
+ return {
673
+ id: summary.id,
674
+ fileName: summary.fileName,
675
+ title: summary.title,
676
+ description: summary.description ?? null,
677
+ contentType: summary.contentType,
678
+ url: summary.url,
679
+ width: summary.width ?? null,
680
+ height: summary.height ?? null,
681
+ size: summary.size ?? null,
682
+ updatedAt: new Date().toISOString(),
683
+ };
684
+ }
685
+ //# sourceMappingURL=asset.js.map