@openpresentation/opf 0.1.0 → 0.2.2

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 (499) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +146 -103
  3. package/dist/catalogs.d.ts +11 -1531
  4. package/dist/catalogs.js +5 -613
  5. package/dist/catalogs.js.map +1 -1
  6. package/dist/index.d.ts +3 -1
  7. package/dist/index.js +3862 -662
  8. package/dist/index.js.map +1 -1
  9. package/dist/previews.d.ts +40 -0
  10. package/dist/previews.js +447 -0
  11. package/dist/previews.js.map +1 -0
  12. package/dist/schemas.d.ts +153 -141
  13. package/dist/schemas.js +57 -48
  14. package/dist/schemas.js.map +1 -1
  15. package/dist/spec/catalogs/audiences/all-hands.json +23 -23
  16. package/dist/spec/catalogs/audiences/board.json +22 -22
  17. package/dist/spec/catalogs/audiences/candidates.json +23 -23
  18. package/dist/spec/catalogs/audiences/customers.json +23 -23
  19. package/dist/spec/catalogs/audiences/engineering-team.json +23 -23
  20. package/dist/spec/catalogs/audiences/executives.json +23 -23
  21. package/dist/spec/catalogs/audiences/index.json +67 -67
  22. package/dist/spec/catalogs/audiences/investors.json +23 -23
  23. package/dist/spec/catalogs/audiences/marketing-team.json +23 -23
  24. package/dist/spec/catalogs/audiences/regulators.json +23 -23
  25. package/dist/spec/catalogs/audiences/sales-team.json +23 -23
  26. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-2x.json +86 -90
  27. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-3x.json +98 -102
  28. package/dist/spec/catalogs/chart-types/100pct-bullet-bar.json +74 -78
  29. package/dist/spec/catalogs/chart-types/100pct-bullet-column-2x.json +86 -90
  30. package/dist/spec/catalogs/chart-types/100pct-bullet-column-3x.json +98 -102
  31. package/dist/spec/catalogs/chart-types/100pct-bullet-column.json +74 -78
  32. package/dist/spec/catalogs/chart-types/100pct-progress-bar.json +95 -99
  33. package/dist/spec/catalogs/chart-types/100pct-stacked-area-2x.json +96 -100
  34. package/dist/spec/catalogs/chart-types/100pct-stacked-area-3x.json +118 -122
  35. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-2x.json +79 -83
  36. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-3x.json +95 -99
  37. package/dist/spec/catalogs/chart-types/100pct-stacked-column-2x.json +85 -89
  38. package/dist/spec/catalogs/chart-types/100pct-stacked-column-3x.json +103 -107
  39. package/dist/spec/catalogs/chart-types/area.json +73 -77
  40. package/dist/spec/catalogs/chart-types/australia.json +66 -70
  41. package/dist/spec/catalogs/chart-types/bar.json +63 -67
  42. package/dist/spec/catalogs/chart-types/box-and-whisker-2x.json +126 -130
  43. package/dist/spec/catalogs/chart-types/box-and-whisker-3x.json +158 -162
  44. package/dist/spec/catalogs/chart-types/box-and-whisker.json +94 -98
  45. package/dist/spec/catalogs/chart-types/bullet-bar-2x.json +84 -88
  46. package/dist/spec/catalogs/chart-types/bullet-bar-3x.json +96 -100
  47. package/dist/spec/catalogs/chart-types/bullet-bar.json +72 -76
  48. package/dist/spec/catalogs/chart-types/bullet-column-2x.json +84 -88
  49. package/dist/spec/catalogs/chart-types/bullet-column-3x.json +96 -100
  50. package/dist/spec/catalogs/chart-types/bullet-column.json +72 -76
  51. package/dist/spec/catalogs/chart-types/canada.json +76 -80
  52. package/dist/spec/catalogs/chart-types/clustered-bar-2x.json +79 -83
  53. package/dist/spec/catalogs/chart-types/clustered-column.json +85 -89
  54. package/dist/spec/catalogs/chart-types/column.json +67 -71
  55. package/dist/spec/catalogs/chart-types/dot-plot-2x.json +94 -98
  56. package/dist/spec/catalogs/chart-types/dot-plot-3x.json +119 -123
  57. package/dist/spec/catalogs/chart-types/dot-plot-4x.json +144 -148
  58. package/dist/spec/catalogs/chart-types/dot-plot-5x.json +169 -173
  59. package/dist/spec/catalogs/chart-types/dot-plot-6x.json +194 -198
  60. package/dist/spec/catalogs/chart-types/dot-plot.json +69 -73
  61. package/dist/spec/catalogs/chart-types/doughnut.json +53 -57
  62. package/dist/spec/catalogs/chart-types/dumbbell.json +115 -119
  63. package/dist/spec/catalogs/chart-types/filled-radar.json +66 -70
  64. package/dist/spec/catalogs/chart-types/funnel.json +60 -64
  65. package/dist/spec/catalogs/chart-types/histogram.json +141 -145
  66. package/dist/spec/catalogs/chart-types/index.json +539 -843
  67. package/dist/spec/catalogs/chart-types/line-2x.json +95 -99
  68. package/dist/spec/catalogs/chart-types/line-3x.json +117 -121
  69. package/dist/spec/catalogs/chart-types/line-with-high-low-and-markers.json +139 -143
  70. package/dist/spec/catalogs/chart-types/line-with-high-low.json +139 -143
  71. package/dist/spec/catalogs/chart-types/line-with-markers-2x.json +96 -100
  72. package/dist/spec/catalogs/chart-types/line-with-markers-3x.json +118 -122
  73. package/dist/spec/catalogs/chart-types/line-with-markers.json +74 -78
  74. package/dist/spec/catalogs/chart-types/line.json +73 -77
  75. package/dist/spec/catalogs/chart-types/pareto.json +159 -163
  76. package/dist/spec/catalogs/chart-types/pie.json +53 -57
  77. package/dist/spec/catalogs/chart-types/radar-with-markers.json +66 -70
  78. package/dist/spec/catalogs/chart-types/radar.json +66 -70
  79. package/dist/spec/catalogs/chart-types/scatter.json +87 -91
  80. package/dist/spec/catalogs/chart-types/sparkline-2x.json +133 -137
  81. package/dist/spec/catalogs/chart-types/sparkline-3x.json +169 -173
  82. package/dist/spec/catalogs/chart-types/sparkline-4x.json +205 -209
  83. package/dist/spec/catalogs/chart-types/sparkline-5x.json +241 -245
  84. package/dist/spec/catalogs/chart-types/sparkline-6x.json +277 -281
  85. package/dist/spec/catalogs/chart-types/sparkline.json +97 -101
  86. package/dist/spec/catalogs/chart-types/stacked-area-2x.json +96 -100
  87. package/dist/spec/catalogs/chart-types/stacked-area-3x.json +118 -122
  88. package/dist/spec/catalogs/chart-types/stacked-bar-2x.json +79 -83
  89. package/dist/spec/catalogs/chart-types/stacked-bar-3x.json +95 -99
  90. package/dist/spec/catalogs/chart-types/stacked-column-2x.json +85 -89
  91. package/dist/spec/catalogs/chart-types/stacked-column-3x.json +103 -107
  92. package/dist/spec/catalogs/chart-types/stacked-line-2x.json +96 -100
  93. package/dist/spec/catalogs/chart-types/stacked-line-3x.json +118 -122
  94. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-2x.json +97 -101
  95. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-3x.json +119 -123
  96. package/dist/spec/catalogs/chart-types/treemap-2x.json +91 -95
  97. package/dist/spec/catalogs/chart-types/treemap-3x.json +112 -116
  98. package/dist/spec/catalogs/chart-types/treemap.json +62 -66
  99. package/dist/spec/catalogs/chart-types/{united-kindom.json → united-kingdom.json} +58 -62
  100. package/dist/spec/catalogs/chart-types/united-states.json +72 -76
  101. package/dist/spec/catalogs/chart-types/waterfall.json +66 -70
  102. package/dist/spec/catalogs/chart-types/world.json +78 -82
  103. package/dist/spec/catalogs/color-schemes/black-and-white.json +17 -17
  104. package/dist/spec/catalogs/color-schemes/bold-red.json +17 -17
  105. package/dist/spec/catalogs/color-schemes/boost.json +17 -17
  106. package/dist/spec/catalogs/color-schemes/burnt-orange.json +17 -17
  107. package/dist/spec/catalogs/color-schemes/cool-horizon.json +17 -17
  108. package/dist/spec/catalogs/color-schemes/corporate-blue.json +17 -17
  109. package/dist/spec/catalogs/color-schemes/deep-purple.json +17 -17
  110. package/dist/spec/catalogs/color-schemes/forest-green.json +17 -17
  111. package/dist/spec/catalogs/color-schemes/golden-yellow.json +17 -17
  112. package/dist/spec/catalogs/color-schemes/index.json +77 -77
  113. package/dist/spec/catalogs/color-schemes/luxury.json +17 -17
  114. package/dist/spec/catalogs/color-schemes/pastel-red.json +17 -17
  115. package/dist/spec/catalogs/color-schemes/slate-gray.json +17 -17
  116. package/dist/spec/catalogs/color-schemes/steel-blue.json +17 -17
  117. package/dist/spec/catalogs/color-schemes/vibes.json +17 -17
  118. package/dist/spec/catalogs/font-schemes/angsana-new.json +14 -14
  119. package/dist/spec/catalogs/font-schemes/aparajita.json +15 -15
  120. package/dist/spec/catalogs/font-schemes/aptos.json +12 -12
  121. package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +14 -14
  122. package/dist/spec/catalogs/font-schemes/arial.json +12 -12
  123. package/dist/spec/catalogs/font-schemes/batang.json +14 -14
  124. package/dist/spec/catalogs/font-schemes/bookman.json +12 -12
  125. package/dist/spec/catalogs/font-schemes/calibri.json +12 -12
  126. package/dist/spec/catalogs/font-schemes/century-schoolbook.json +12 -12
  127. package/dist/spec/catalogs/font-schemes/consolas.json +12 -12
  128. package/dist/spec/catalogs/font-schemes/constantia.json +12 -12
  129. package/dist/spec/catalogs/font-schemes/courier-new.json +12 -12
  130. package/dist/spec/catalogs/font-schemes/daunpenh.json +14 -14
  131. package/dist/spec/catalogs/font-schemes/david.json +14 -14
  132. package/dist/spec/catalogs/font-schemes/dilleniaupc.json +14 -14
  133. package/dist/spec/catalogs/font-schemes/fangsong.json +14 -14
  134. package/dist/spec/catalogs/font-schemes/garamond.json +12 -12
  135. package/dist/spec/catalogs/font-schemes/gautami.json +14 -14
  136. package/dist/spec/catalogs/font-schemes/georgia.json +12 -12
  137. package/dist/spec/catalogs/font-schemes/gisha.json +15 -15
  138. package/dist/spec/catalogs/font-schemes/grandview.json +12 -12
  139. package/dist/spec/catalogs/font-schemes/gungsuh.json +14 -14
  140. package/dist/spec/catalogs/font-schemes/impact.json +12 -12
  141. package/dist/spec/catalogs/font-schemes/index.json +452 -452
  142. package/dist/spec/catalogs/font-schemes/kalinga.json +14 -14
  143. package/dist/spec/catalogs/font-schemes/kartika.json +14 -14
  144. package/dist/spec/catalogs/font-schemes/khmer-ui.json +14 -14
  145. package/dist/spec/catalogs/font-schemes/latha.json +14 -14
  146. package/dist/spec/catalogs/font-schemes/lucida-sans.json +12 -12
  147. package/dist/spec/catalogs/font-schemes/malgun-gothic.json +14 -14
  148. package/dist/spec/catalogs/font-schemes/mangal.json +17 -17
  149. package/dist/spec/catalogs/font-schemes/meiryo.json +14 -14
  150. package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +14 -14
  151. package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +17 -17
  152. package/dist/spec/catalogs/font-schemes/mingliu.json +14 -14
  153. package/dist/spec/catalogs/font-schemes/miriam.json +14 -14
  154. package/dist/spec/catalogs/font-schemes/montserrat.json +12 -12
  155. package/dist/spec/catalogs/font-schemes/ms-mincho.json +14 -14
  156. package/dist/spec/catalogs/font-schemes/nirmala-ui.json +14 -14
  157. package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +14 -14
  158. package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +15 -15
  159. package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +16 -16
  160. package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +14 -14
  161. package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +15 -15
  162. package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +15 -15
  163. package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +14 -14
  164. package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +14 -14
  165. package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +14 -14
  166. package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +14 -14
  167. package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +14 -14
  168. package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +14 -14
  169. package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +14 -14
  170. package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +14 -14
  171. package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +14 -14
  172. package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +14 -14
  173. package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +14 -14
  174. package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +14 -14
  175. package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +17 -17
  176. package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +14 -14
  177. package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +14 -14
  178. package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +14 -14
  179. package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +14 -14
  180. package/dist/spec/catalogs/font-schemes/noto-sans.json +17 -17
  181. package/dist/spec/catalogs/font-schemes/nyala.json +14 -14
  182. package/dist/spec/catalogs/font-schemes/open-sans.json +12 -12
  183. package/dist/spec/catalogs/font-schemes/pmingliu.json +14 -14
  184. package/dist/spec/catalogs/font-schemes/poppins.json +12 -12
  185. package/dist/spec/catalogs/font-schemes/pt-serif.json +12 -12
  186. package/dist/spec/catalogs/font-schemes/raavi.json +14 -14
  187. package/dist/spec/catalogs/font-schemes/raleway.json +12 -12
  188. package/dist/spec/catalogs/font-schemes/roboto.json +12 -12
  189. package/dist/spec/catalogs/font-schemes/rockwell.json +12 -12
  190. package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +16 -16
  191. package/dist/spec/catalogs/font-schemes/seaford.json +12 -12
  192. package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +12 -12
  193. package/dist/spec/catalogs/font-schemes/segoe-ui.json +12 -12
  194. package/dist/spec/catalogs/font-schemes/shonar-bangla.json +15 -15
  195. package/dist/spec/catalogs/font-schemes/shruti.json +14 -14
  196. package/dist/spec/catalogs/font-schemes/simsun.json +14 -14
  197. package/dist/spec/catalogs/font-schemes/skeena.json +12 -12
  198. package/dist/spec/catalogs/font-schemes/sylfaen.json +15 -15
  199. package/dist/spec/catalogs/font-schemes/tahoma.json +12 -12
  200. package/dist/spec/catalogs/font-schemes/tenorite.json +12 -12
  201. package/dist/spec/catalogs/font-schemes/times-new-roman.json +12 -12
  202. package/dist/spec/catalogs/font-schemes/traditional-arabic.json +16 -16
  203. package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +12 -12
  204. package/dist/spec/catalogs/font-schemes/tunga.json +14 -14
  205. package/dist/spec/catalogs/font-schemes/verdana.json +12 -12
  206. package/dist/spec/catalogs/font-schemes/vrinda.json +14 -14
  207. package/dist/spec/catalogs/font-schemes/yu-gothic.json +14 -14
  208. package/dist/spec/catalogs/languages/afrikaans.json +9 -9
  209. package/dist/spec/catalogs/languages/albanian.json +9 -9
  210. package/dist/spec/catalogs/languages/amharic.json +9 -9
  211. package/dist/spec/catalogs/languages/arabic.json +9 -9
  212. package/dist/spec/catalogs/languages/armenian.json +9 -9
  213. package/dist/spec/catalogs/languages/aymara.json +9 -9
  214. package/dist/spec/catalogs/languages/azerbaijani.json +9 -9
  215. package/dist/spec/catalogs/languages/bengali.json +9 -9
  216. package/dist/spec/catalogs/languages/berber-latin.json +9 -9
  217. package/dist/spec/catalogs/languages/bosnian-latin.json +9 -9
  218. package/dist/spec/catalogs/languages/bulgarian.json +9 -9
  219. package/dist/spec/catalogs/languages/catalan.json +9 -9
  220. package/dist/spec/catalogs/languages/cebuano.json +9 -9
  221. package/dist/spec/catalogs/languages/chinese-simplified.json +9 -9
  222. package/dist/spec/catalogs/languages/chinese-traditional.json +9 -9
  223. package/dist/spec/catalogs/languages/chittagonian.json +9 -9
  224. package/dist/spec/catalogs/languages/croatian.json +9 -9
  225. package/dist/spec/catalogs/languages/czech.json +9 -9
  226. package/dist/spec/catalogs/languages/danish.json +9 -9
  227. package/dist/spec/catalogs/languages/dutch.json +9 -9
  228. package/dist/spec/catalogs/languages/english-au.json +9 -9
  229. package/dist/spec/catalogs/languages/english-ca.json +9 -9
  230. package/dist/spec/catalogs/languages/english-gb.json +9 -9
  231. package/dist/spec/catalogs/languages/english-in.json +9 -9
  232. package/dist/spec/catalogs/languages/english-us.json +9 -9
  233. package/dist/spec/catalogs/languages/english.json +9 -9
  234. package/dist/spec/catalogs/languages/estonian.json +9 -9
  235. package/dist/spec/catalogs/languages/filipino.json +9 -9
  236. package/dist/spec/catalogs/languages/finnish.json +9 -9
  237. package/dist/spec/catalogs/languages/french.json +9 -9
  238. package/dist/spec/catalogs/languages/fulfulde.json +9 -9
  239. package/dist/spec/catalogs/languages/galician.json +9 -9
  240. package/dist/spec/catalogs/languages/georgian.json +9 -9
  241. package/dist/spec/catalogs/languages/german.json +9 -9
  242. package/dist/spec/catalogs/languages/greek.json +9 -9
  243. package/dist/spec/catalogs/languages/gujarati.json +9 -9
  244. package/dist/spec/catalogs/languages/hausa.json +9 -9
  245. package/dist/spec/catalogs/languages/hebrew.json +9 -9
  246. package/dist/spec/catalogs/languages/hindi.json +9 -9
  247. package/dist/spec/catalogs/languages/hungarian.json +9 -9
  248. package/dist/spec/catalogs/languages/igbo.json +9 -9
  249. package/dist/spec/catalogs/languages/index.json +565 -565
  250. package/dist/spec/catalogs/languages/indonesian.json +9 -9
  251. package/dist/spec/catalogs/languages/italian.json +9 -9
  252. package/dist/spec/catalogs/languages/japanese.json +9 -9
  253. package/dist/spec/catalogs/languages/kannada.json +9 -9
  254. package/dist/spec/catalogs/languages/kazakh.json +9 -9
  255. package/dist/spec/catalogs/languages/khmer.json +9 -9
  256. package/dist/spec/catalogs/languages/kinyarwanda.json +9 -9
  257. package/dist/spec/catalogs/languages/korean.json +9 -9
  258. package/dist/spec/catalogs/languages/kurmanji.json +9 -9
  259. package/dist/spec/catalogs/languages/latvian.json +9 -9
  260. package/dist/spec/catalogs/languages/lithuanian.json +9 -9
  261. package/dist/spec/catalogs/languages/macedonian.json +9 -9
  262. package/dist/spec/catalogs/languages/malagasy.json +9 -9
  263. package/dist/spec/catalogs/languages/malay.json +9 -9
  264. package/dist/spec/catalogs/languages/malayalam.json +9 -9
  265. package/dist/spec/catalogs/languages/maori.json +9 -9
  266. package/dist/spec/catalogs/languages/marathi.json +9 -9
  267. package/dist/spec/catalogs/languages/mongolian.json +9 -9
  268. package/dist/spec/catalogs/languages/nepali.json +9 -9
  269. package/dist/spec/catalogs/languages/norwegian.json +9 -9
  270. package/dist/spec/catalogs/languages/odia.json +9 -9
  271. package/dist/spec/catalogs/languages/oromo.json +9 -9
  272. package/dist/spec/catalogs/languages/pashto.json +9 -9
  273. package/dist/spec/catalogs/languages/persian.json +9 -9
  274. package/dist/spec/catalogs/languages/polish.json +9 -9
  275. package/dist/spec/catalogs/languages/portuguese.json +9 -9
  276. package/dist/spec/catalogs/languages/punjabi-gurmukhi.json +9 -9
  277. package/dist/spec/catalogs/languages/punjabi-shahmukhi.json +9 -9
  278. package/dist/spec/catalogs/languages/romanian.json +9 -9
  279. package/dist/spec/catalogs/languages/russian.json +9 -9
  280. package/dist/spec/catalogs/languages/serbian-cyrillic.json +9 -9
  281. package/dist/spec/catalogs/languages/serbian-latin.json +9 -9
  282. package/dist/spec/catalogs/languages/shona.json +9 -9
  283. package/dist/spec/catalogs/languages/slovak.json +9 -9
  284. package/dist/spec/catalogs/languages/slovenian.json +9 -9
  285. package/dist/spec/catalogs/languages/somali.json +9 -9
  286. package/dist/spec/catalogs/languages/spanish.json +9 -9
  287. package/dist/spec/catalogs/languages/swahili.json +9 -9
  288. package/dist/spec/catalogs/languages/swedish.json +9 -9
  289. package/dist/spec/catalogs/languages/tagalog.json +9 -9
  290. package/dist/spec/catalogs/languages/tajik.json +9 -9
  291. package/dist/spec/catalogs/languages/tamil.json +9 -9
  292. package/dist/spec/catalogs/languages/telugu.json +9 -9
  293. package/dist/spec/catalogs/languages/thai.json +9 -9
  294. package/dist/spec/catalogs/languages/turkish.json +9 -9
  295. package/dist/spec/catalogs/languages/ukrainian.json +9 -9
  296. package/dist/spec/catalogs/languages/urdu.json +9 -9
  297. package/dist/spec/catalogs/languages/uzbek-latin.json +9 -9
  298. package/dist/spec/catalogs/languages/vietnamese-quoc-ngu.json +9 -9
  299. package/dist/spec/catalogs/languages/xhosa.json +9 -9
  300. package/dist/spec/catalogs/languages/yoruba.json +9 -9
  301. package/dist/spec/catalogs/languages/zulu.json +9 -9
  302. package/dist/spec/catalogs/layouts/blank.json +6 -6
  303. package/dist/spec/catalogs/layouts/chart-1x.json +16 -16
  304. package/dist/spec/catalogs/layouts/chart-2x.json +22 -22
  305. package/dist/spec/catalogs/layouts/chart-3x.json +28 -28
  306. package/dist/spec/catalogs/layouts/code-1x.json +16 -16
  307. package/dist/spec/catalogs/layouts/extract/canonical.json +487 -487
  308. package/dist/spec/catalogs/layouts/image-1x.json +16 -16
  309. package/dist/spec/catalogs/layouts/image-2x.json +22 -22
  310. package/dist/spec/catalogs/layouts/image-3x.json +28 -28
  311. package/dist/spec/catalogs/layouts/image-bleed.json +10 -10
  312. package/dist/spec/catalogs/layouts/index.json +147 -147
  313. package/dist/spec/catalogs/layouts/list-1x.json +13 -13
  314. package/dist/spec/catalogs/layouts/list-2x.json +16 -16
  315. package/dist/spec/catalogs/layouts/list-3x.json +19 -19
  316. package/dist/spec/catalogs/layouts/list-4x.json +22 -22
  317. package/dist/spec/catalogs/layouts/list-5x.json +25 -25
  318. package/dist/spec/catalogs/layouts/list-6x.json +28 -28
  319. package/dist/spec/catalogs/layouts/media-1x.json +16 -16
  320. package/dist/spec/catalogs/layouts/number-1x.json +13 -13
  321. package/dist/spec/catalogs/layouts/number-2x.json +16 -16
  322. package/dist/spec/catalogs/layouts/number-3x.json +19 -19
  323. package/dist/spec/catalogs/layouts/number-4x.json +22 -22
  324. package/dist/spec/catalogs/layouts/number-5x.json +25 -25
  325. package/dist/spec/catalogs/layouts/number-6x.json +28 -28
  326. package/dist/spec/catalogs/layouts/table-1x.json +16 -16
  327. package/dist/spec/catalogs/layouts/text-1x.json +13 -13
  328. package/dist/spec/catalogs/layouts/text-2x.json +16 -16
  329. package/dist/spec/catalogs/layouts/text-3x.json +19 -19
  330. package/dist/spec/catalogs/layouts/title-subtitle.json +13 -13
  331. package/dist/spec/catalogs/layouts/title.json +10 -10
  332. package/dist/spec/catalogs/narratives/board-meeting.json +192 -192
  333. package/dist/spec/catalogs/narratives/business-narrative.json +87 -87
  334. package/dist/spec/catalogs/narratives/business-review.json +119 -119
  335. package/dist/spec/catalogs/narratives/capacity-planning.json +88 -88
  336. package/dist/spec/catalogs/narratives/challenge-resolution.json +80 -80
  337. package/dist/spec/catalogs/narratives/classic-story.json +78 -78
  338. package/dist/spec/catalogs/narratives/company-intro.json +96 -96
  339. package/dist/spec/catalogs/narratives/conference-talk.json +54 -54
  340. package/dist/spec/catalogs/narratives/early-startup-pitch.json +119 -119
  341. package/dist/spec/catalogs/narratives/educate.json +95 -95
  342. package/dist/spec/catalogs/narratives/employee-review.json +87 -87
  343. package/dist/spec/catalogs/narratives/failure-analysis.json +104 -104
  344. package/dist/spec/catalogs/narratives/focus.json +120 -120
  345. package/dist/spec/catalogs/narratives/golden-circle.json +50 -50
  346. package/dist/spec/catalogs/narratives/index.json +358 -358
  347. package/dist/spec/catalogs/narratives/innovation.json +96 -96
  348. package/dist/spec/catalogs/narratives/justice.json +112 -112
  349. package/dist/spec/catalogs/narratives/marketing-strategy.json +111 -111
  350. package/dist/spec/catalogs/narratives/performance-improvement-plan.json +87 -87
  351. package/dist/spec/catalogs/narratives/performance-review.json +111 -111
  352. package/dist/spec/catalogs/narratives/persuade.json +94 -94
  353. package/dist/spec/catalogs/narratives/persuasive-sales.json +87 -87
  354. package/dist/spec/catalogs/narratives/pitch-deck.json +107 -107
  355. package/dist/spec/catalogs/narratives/problem-solution.json +61 -61
  356. package/dist/spec/catalogs/narratives/product-launch.json +104 -104
  357. package/dist/spec/catalogs/narratives/project-proposal.json +104 -104
  358. package/dist/spec/catalogs/narratives/qbr.json +85 -85
  359. package/dist/spec/catalogs/narratives/rags-to-riches.json +80 -80
  360. package/dist/spec/catalogs/narratives/reveal.json +87 -87
  361. package/dist/spec/catalogs/narratives/scqa.json +55 -55
  362. package/dist/spec/catalogs/narratives/status-update.json +72 -72
  363. package/dist/spec/catalogs/narratives/strategic-advisory.json +85 -85
  364. package/dist/spec/catalogs/narratives/strategic-narrative.json +61 -61
  365. package/dist/spec/catalogs/narratives/survey-analysis.json +104 -104
  366. package/dist/spec/catalogs/narratives/survival-story.json +103 -103
  367. package/dist/spec/catalogs/narratives/transformation-arc.json +50 -50
  368. package/dist/spec/catalogs/narratives/trend-analysis.json +79 -79
  369. package/dist/spec/catalogs/narratives/underdog-victory.json +87 -87
  370. package/dist/spec/catalogs/narratives/venture-pitch.json +109 -109
  371. package/dist/spec/catalogs/narratives/weekly-progress.json +103 -103
  372. package/dist/spec/catalogs/purposes/align.json +16 -16
  373. package/dist/spec/catalogs/purposes/decide.json +16 -16
  374. package/dist/spec/catalogs/purposes/educate.json +16 -16
  375. package/dist/spec/catalogs/purposes/index.json +61 -61
  376. package/dist/spec/catalogs/purposes/inform.json +16 -16
  377. package/dist/spec/catalogs/purposes/persuade.json +16 -16
  378. package/dist/spec/catalogs/purposes/pitch.json +16 -16
  379. package/dist/spec/catalogs/purposes/plan.json +16 -16
  380. package/dist/spec/catalogs/purposes/report.json +16 -16
  381. package/dist/spec/catalogs/purposes/sell.json +16 -16
  382. package/dist/spec/catalogs/social-platforms/bluesky.json +14 -14
  383. package/dist/spec/catalogs/social-platforms/facebook.json +14 -14
  384. package/dist/spec/catalogs/social-platforms/github.json +15 -15
  385. package/dist/spec/catalogs/social-platforms/index.json +68 -68
  386. package/dist/spec/catalogs/social-platforms/instagram.json +13 -13
  387. package/dist/spec/catalogs/social-platforms/linkedin.json +15 -15
  388. package/dist/spec/catalogs/social-platforms/mastodon.json +14 -14
  389. package/dist/spec/catalogs/social-platforms/threads.json +13 -13
  390. package/dist/spec/catalogs/social-platforms/tiktok.json +14 -14
  391. package/dist/spec/catalogs/social-platforms/x.json +14 -14
  392. package/dist/spec/catalogs/social-platforms/youtube.json +14 -14
  393. package/dist/spec/catalogs/themes/bold.json +13 -13
  394. package/dist/spec/catalogs/themes/classic.json +13 -13
  395. package/dist/spec/catalogs/themes/dark.json +13 -13
  396. package/dist/spec/catalogs/themes/index.json +31 -31
  397. package/dist/spec/catalogs/themes/minimal.json +13 -13
  398. package/dist/spec/catalogs/tones/authoritative.json +31 -31
  399. package/dist/spec/catalogs/tones/casual.json +31 -31
  400. package/dist/spec/catalogs/tones/conversational.json +31 -31
  401. package/dist/spec/catalogs/tones/formal.json +31 -31
  402. package/dist/spec/catalogs/tones/index.json +49 -49
  403. package/dist/spec/catalogs/tones/inspirational.json +31 -31
  404. package/dist/spec/catalogs/tones/persuasive.json +32 -32
  405. package/dist/spec/catalogs/tones/technical.json +31 -31
  406. package/dist/spec/openapi.yaml +776 -776
  407. package/dist/spec/previews/layouts/action-plan.html +1 -0
  408. package/dist/spec/previews/layouts/agenda.html +1 -0
  409. package/dist/spec/previews/layouts/appendix-index.html +1 -0
  410. package/dist/spec/previews/layouts/architecture-stack.html +1 -0
  411. package/dist/spec/previews/layouts/assumptions-dependencies.html +1 -0
  412. package/dist/spec/previews/layouts/before-after.html +1 -0
  413. package/dist/spec/previews/layouts/benchmark-target-table.html +1 -0
  414. package/dist/spec/previews/layouts/bullet-list.html +1 -0
  415. package/dist/spec/previews/layouts/business-model-canvas.html +1 -0
  416. package/dist/spec/previews/layouts/capability-map.html +1 -0
  417. package/dist/spec/previews/layouts/case-study.html +1 -0
  418. package/dist/spec/previews/layouts/chapter-recap.html +1 -0
  419. package/dist/spec/previews/layouts/circular-lifecycle.html +1 -0
  420. package/dist/spec/previews/layouts/comparison.html +1 -0
  421. package/dist/spec/previews/layouts/competitive-landscape.html +1 -0
  422. package/dist/spec/previews/layouts/customer-journey.html +1 -0
  423. package/dist/spec/previews/layouts/customer-logos.html +1 -0
  424. package/dist/spec/previews/layouts/dashboard.html +1 -0
  425. package/dist/spec/previews/layouts/data-visualization.html +1 -0
  426. package/dist/spec/previews/layouts/decision-tree.html +1 -0
  427. package/dist/spec/previews/layouts/detailed-data-table.html +1 -0
  428. package/dist/spec/previews/layouts/ecosystem-map.html +1 -0
  429. package/dist/spec/previews/layouts/executive-decision.html +1 -0
  430. package/dist/spec/previews/layouts/executive-summary.html +1 -0
  431. package/dist/spec/previews/layouts/faq.html +1 -0
  432. package/dist/spec/previews/layouts/feature-comparison-matrix.html +1 -0
  433. package/dist/spec/previews/layouts/forecast-scenario.html +1 -0
  434. package/dist/spec/previews/layouts/funnel-pyramid.html +1 -0
  435. package/dist/spec/previews/layouts/gantt-project-plan.html +1 -0
  436. package/dist/spec/previews/layouts/geographic-map.html +1 -0
  437. package/dist/spec/previews/layouts/heatmap-cohort.html +1 -0
  438. package/dist/spec/previews/layouts/hub-and-spoke.html +1 -0
  439. package/dist/spec/previews/layouts/icon-grid.html +1 -0
  440. package/dist/spec/previews/layouts/image-focus.html +1 -0
  441. package/dist/spec/previews/layouts/index.json +357 -0
  442. package/dist/spec/previews/layouts/key-takeaway.html +1 -0
  443. package/dist/spec/previews/layouts/kpi-scorecard.html +1 -0
  444. package/dist/spec/previews/layouts/logic-tree.html +1 -0
  445. package/dist/spec/previews/layouts/market-size.html +1 -0
  446. package/dist/spec/previews/layouts/matrix-quadrant.html +1 -0
  447. package/dist/spec/previews/layouts/network-dependency-map.html +1 -0
  448. package/dist/spec/previews/layouts/one-column-explainer.html +1 -0
  449. package/dist/spec/previews/layouts/org-chart.html +1 -0
  450. package/dist/spec/previews/layouts/persona-grid.html +1 -0
  451. package/dist/spec/previews/layouts/photo-grid.html +1 -0
  452. package/dist/spec/previews/layouts/pricing-table.html +1 -0
  453. package/dist/spec/previews/layouts/process-flow.html +1 -0
  454. package/dist/spec/previews/layouts/product-feature.html +1 -0
  455. package/dist/spec/previews/layouts/pros-cons.html +1 -0
  456. package/dist/spec/previews/layouts/qa-discussion.html +1 -0
  457. package/dist/spec/previews/layouts/quote-highlight.html +1 -0
  458. package/dist/spec/previews/layouts/raci-matrix.html +1 -0
  459. package/dist/spec/previews/layouts/risk-heatmap.html +1 -0
  460. package/dist/spec/previews/layouts/roadmap.html +1 -0
  461. package/dist/spec/previews/layouts/screenshot-walkthrough.html +1 -0
  462. package/dist/spec/previews/layouts/section-divider.html +1 -0
  463. package/dist/spec/previews/layouts/single-message-statement.html +1 -0
  464. package/dist/spec/previews/layouts/stats-metrics.html +1 -0
  465. package/dist/spec/previews/layouts/status-rag.html +1 -0
  466. package/dist/spec/previews/layouts/swimlane-process.html +1 -0
  467. package/dist/spec/previews/layouts/swot-analysis.html +1 -0
  468. package/dist/spec/previews/layouts/team-bio.html +1 -0
  469. package/dist/spec/previews/layouts/testimonial-grid.html +1 -0
  470. package/dist/spec/previews/layouts/thank-you-cta.html +1 -0
  471. package/dist/spec/previews/layouts/three-column.html +1 -0
  472. package/dist/spec/previews/layouts/timeline.html +1 -0
  473. package/dist/spec/previews/layouts/title-slide.html +1 -0
  474. package/dist/spec/previews/layouts/two-column.html +1 -0
  475. package/dist/spec/previews/layouts/venn-overlap.html +1 -0
  476. package/dist/spec/previews/layouts/waterfall-bridge.html +1 -0
  477. package/dist/spec/previews/layouts/wheel-radial.html +1 -0
  478. package/dist/spec/reference/engine-defaults.json +35 -35
  479. package/dist/spec/schemas/audience.schema.json +156 -156
  480. package/dist/spec/schemas/chart-type.schema.json +537 -537
  481. package/dist/spec/schemas/color-scheme.schema.json +200 -200
  482. package/dist/spec/schemas/font-scheme.schema.json +174 -174
  483. package/dist/spec/schemas/language.schema.json +158 -158
  484. package/dist/spec/schemas/layout.schema.json +280 -280
  485. package/dist/spec/schemas/narrative.schema.json +207 -207
  486. package/dist/spec/schemas/opf.schema.json +2543 -2537
  487. package/dist/spec/schemas/purpose.schema.json +92 -92
  488. package/dist/spec/schemas/social-platform.schema.json +183 -184
  489. package/dist/spec/schemas/theme.schema.json +168 -168
  490. package/dist/spec/schemas/tone.schema.json +146 -146
  491. package/dist/spec-files.d.ts +2388 -0
  492. package/dist/spec-files.js +3349 -0
  493. package/dist/spec-files.js.map +1 -0
  494. package/dist/types.d.ts +5 -5
  495. package/dist/{validator-Be5EzqAt.d.ts → validator-MwlR2F56.d.ts} +22 -24
  496. package/dist/validator.d.ts +1 -1
  497. package/dist/validator.js +66 -48
  498. package/dist/validator.js.map +1 -1
  499. package/package.json +91 -80
package/dist/schemas.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  declare const presentation: {
2
2
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
3
3
  readonly $id: "https://openpresentation.org/schema/opf/v1";
4
- readonly title: "OPF — Open Presentation Format";
5
- readonly description: "Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity.\n\nFields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document → 'catalogs.<kind>.source' on the document → engine defaults → the default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.\n\nMost catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry.";
4
+ readonly title: "Presentation";
5
+ readonly description: "Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity.\n\nFields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document → 'catalogs.<kind>.source' on the document → engine defaults → the default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.\n\nMost catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry.";
6
6
  readonly type: "object";
7
7
  readonly required: ["slides"];
8
8
  readonly additionalProperties: false;
@@ -15,11 +15,11 @@ declare const presentation: {
15
15
  readonly name: {
16
16
  readonly type: "string";
17
17
  readonly description: "Display name of the presentation for GUI/TUI lists, library/search indexing, OS-level metadata, and default export filenames. This is deck identity, not slide content. Use slides[].title and slides[].subtitle for text that should appear on presented slides.";
18
- readonly examples: ["Q4 2026 Business Review", "Series B Pitch — Acme", "The Future of Agentic Workflows"];
18
+ readonly examples: ["Q4 2026 Business Review", "Series B Pitch — Acme", "The Future of Agentic Workflows"];
19
19
  };
20
20
  readonly description: {
21
21
  readonly type: "string";
22
- readonly description: "Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the 'Comments' field in File → Properties).";
22
+ readonly description: "Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the 'Comments' field in File → Properties).";
23
23
  readonly examples: ["Quarterly business review covering revenue, product, and hiring milestones for the executive team."];
24
24
  };
25
25
  readonly filename: {
@@ -65,17 +65,21 @@ declare const presentation: {
65
65
  readonly examples: ["Bob Lee", ["Bob Lee", "Carla Diaz"]];
66
66
  };
67
67
  readonly audience: {
68
- readonly type: "array";
69
- readonly items: {
70
- readonly oneOf: [{
71
- readonly type: "string";
72
- }, {
73
- readonly $ref: "#/$defs/Audience";
74
- }];
75
- };
76
- readonly minItems: 1;
77
- readonly description: "Intended audiences for the presentation. Each item accepts either:\n- A string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Audience object for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.audiences.records[] → catalogs.audiences.source → default catalog at https://www.pptx.gallery/audiences.";
78
- readonly examples: [["executives"], ["board", "c-suite"], ["Series B investors", "https://acme.com/decks/audiences/acme-board.json"], [{
68
+ readonly oneOf: [{
69
+ readonly type: "string";
70
+ }, {
71
+ readonly type: "array";
72
+ readonly items: {
73
+ readonly oneOf: [{
74
+ readonly type: "string";
75
+ }, {
76
+ readonly $ref: "#/$defs/Audience";
77
+ }];
78
+ };
79
+ readonly minItems: 1;
80
+ }];
81
+ readonly description: "Intended audiences for the presentation. Accepts either:\n- A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference.\n- An array of string shorthands and/or inline Audience objects for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.audiences.records[] → catalogs.audiences.source → default catalog at https://www.pptx.gallery/audiences.";
82
+ readonly examples: ["executives", "Biology Students and Wildlife Enthusiasts", ["executives"], ["board", "c-suite"], ["Series B investors", "https://acme.com/decks/audiences/acme-board.json"], [{
79
83
  readonly id: "executives";
80
84
  readonly attentionBudgetMinutes: 20;
81
85
  }, {
@@ -91,7 +95,7 @@ declare const presentation: {
91
95
  }, {
92
96
  readonly $ref: "#/$defs/Purpose";
93
97
  }];
94
- readonly description: "Primary goal of the presentation. Accepts either:\n- A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Purpose object for custom purpose metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-purpose/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.purposes.records[] → catalogs.purposes.source → default catalog at https://www.pptx.gallery/purposes.";
98
+ readonly description: "Primary goal of the presentation. Accepts either:\n- A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Purpose object for custom purpose metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-purpose/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.purposes.records[] → catalogs.purposes.source → default catalog at https://www.pptx.gallery/purposes.";
95
99
  readonly examples: ["Raise a Series B round of $30M", "align", "educate", "https://acme.com/decks/purposes/fundraise.json", "pkg:@acme/decks/purposes/fundraise", {
96
100
  readonly id: "decide";
97
101
  readonly outcome: "Approve the Q4 hiring plan";
@@ -106,7 +110,7 @@ declare const presentation: {
106
110
  }, {
107
111
  readonly $ref: "#/$defs/Language";
108
112
  }];
109
- readonly description: "Language for the presentation content. Accepts either:\n- A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Language object for custom language metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-language/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.languages.records[] → catalogs.languages.source → default catalog at https://www.pptx.gallery/languages.";
113
+ readonly description: "Language for the presentation content. Accepts either:\n- A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Language object for custom language metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-language/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.languages.records[] → catalogs.languages.source → default catalog at https://www.pptx.gallery/languages.";
110
114
  readonly examples: ["en-US", "en-GB", "es-MX", "ja-JP", "fr", "english", "japanese", "https://acme.com/decks/languages/en-acme.json", "pkg:@acme/decks/languages/en-acme", {
111
115
  readonly id: "english";
112
116
  readonly bcp47: "en-US";
@@ -125,7 +129,7 @@ declare const presentation: {
125
129
  }, {
126
130
  readonly $ref: "#/$defs/Tone";
127
131
  }];
128
- readonly description: "Desired tone for the presentation. Accepts either:\n- A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-tone/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.tones.records[] → catalogs.tones.source → default catalog at https://www.pptx.gallery/tones.";
132
+ readonly description: "Desired tone for the presentation. Accepts either:\n- A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-tone/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.tones.records[] → catalogs.tones.source → default catalog at https://www.pptx.gallery/tones.";
129
133
  readonly examples: ["formal", "casual", "inspirational", "technical", "persuasive", "https://acme.com/decks/tones/acme-voice.json", "pkg:@acme/decks/tones/acme-voice", {
130
134
  readonly id: "formal";
131
135
  readonly voiceCues: ["Use precise, concise language."];
@@ -170,7 +174,7 @@ declare const presentation: {
170
174
  }, {
171
175
  readonly $ref: "#/$defs/Narrative";
172
176
  }];
173
- readonly description: "Structured storyline describing the deck's arc and beats. Resolves to the 'id' of a 'narratives' catalog record.\n\nAccepts two forms:\n- String shorthand for the common case: 'narrative = \"classic-story\"'. Accepts a bare id (lowercase kebab-case), an HTTPS URL pointing at a record file, or a 'pkg:' reference to a locally-installed package.\n- Object form for inline overrides or fully custom narratives: 'narrative = { id: \"classic-story\", beats: [...] }'. The object shape mirrors https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nResolution order: inline catalogs.narratives.records[] → catalogs.narratives.source → default catalog at https://www.pptx.gallery/narratives. Unknown ids produce a validation warning, not an error.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside the narrative object.";
177
+ readonly description: "Structured storyline describing the deck's arc and beats. Resolves to the 'id' of a 'narratives' catalog record.\n\nAccepts two forms:\n- String shorthand for the common case: 'narrative = \"classic-story\"'. Accepts a bare id (lowercase kebab-case), an HTTPS URL pointing at a record file, or a 'pkg:' reference to a locally-installed package.\n- Object form for inline overrides or fully custom narratives: 'narrative = { id: \"classic-story\", beats: [...] }'. The object shape mirrors https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nResolution order: inline catalogs.narratives.records[] → catalogs.narratives.source → default catalog at https://www.pptx.gallery/narratives. Unknown ids produce a validation warning, not an error.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside the narrative object.";
174
178
  readonly examples: ["classic-story", "problem-solution", "scqa", "pitch-deck", {
175
179
  readonly id: "custom-pitch";
176
180
  readonly name: "Custom Pitch";
@@ -528,7 +532,7 @@ declare const presentation: {
528
532
  };
529
533
  readonly Organization: {
530
534
  readonly type: "object";
531
- readonly description: "An organization associated with the presentation — typically the presenting company, but also hosts, partners, clients, or sponsors. Surfaced on cover slides, footers, and brand bars; the primary organization's logo is the default deck logo unless overridden by design.logo.";
535
+ readonly description: "An organization associated with the presentation — typically the presenting company, but also hosts, partners, clients, or sponsors. Surfaced on cover slides, footers, and brand bars; the primary organization's logo is the default deck logo unless overridden by design.logo.";
532
536
  readonly required: ["id", "name"];
533
537
  readonly properties: {
534
538
  readonly id: {
@@ -639,7 +643,7 @@ declare const presentation: {
639
643
  };
640
644
  readonly Socials: {
641
645
  readonly type: "object";
642
- readonly description: "Social media handles or URLs, keyed by platform id from the 'socialPlatforms' catalog. Each value is a string — either a full URL or a platform handle (e.g., '@acme'). The catalog record for each platform carries the URL pattern, handle prefix, brand color, and themed icons used by renderers.\n\nKeys resolve to the 'id' of a 'socialPlatforms' catalog record. Resolution order: inline catalogs.socialPlatforms.records[] → catalogs.socialPlatforms.source → default catalog at https://www.pptx.gallery/social-platforms. Unknown platform keys render with engine fallbacks (the raw value as text). Used both for organization and speaker records.";
646
+ readonly description: "Social media handles or URLs, keyed by platform id from the 'socialPlatforms' catalog. Each value is a string — either a full URL or a platform handle (e.g., '@acme'). The catalog record for each platform carries the URL pattern, handle prefix, brand color, and themed icons used by renderers.\n\nKeys resolve to the 'id' of a 'socialPlatforms' catalog record. Resolution order: inline catalogs.socialPlatforms.records[] → catalogs.socialPlatforms.source → default catalog at https://www.pptx.gallery/social-platforms. Unknown platform keys render with engine fallbacks (the raw value as text). Used both for organization and speaker records.";
643
647
  readonly additionalProperties: {
644
648
  readonly type: "string";
645
649
  readonly description: "Handle or URL for the platform identified by the property key.";
@@ -660,7 +664,7 @@ declare const presentation: {
660
664
  };
661
665
  readonly Narrative: {
662
666
  readonly type: "object";
663
- readonly description: "Structured storyline used by AI to shape generated content. Mirrors the OPF Narrative Template record at https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nNarrative declares the deck's intended story arc; slides may opt into beats via Slide.beat. The narrative does not constrain slide structure — validators warn on drift (orphan slides, unused beats) but never error. Slides are the source of truth; narrative is intent that travels with the deck.\n\nWhen 'id' matches a record in the resolved 'narratives' catalog, the inline fields override matching fields on the catalog record (beats merge by beat 'id'). When 'id' doesn't match, this object defines a fully custom inline narrative.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside this object.";
667
+ readonly description: "Structured storyline used by AI to shape generated content. Mirrors the OPF Narrative Template record at https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nNarrative declares the deck's intended story arc; slides may opt into beats via Slide.beat. The narrative does not constrain slide structure — validators warn on drift (orphan slides, unused beats) but never error. Slides are the source of truth; narrative is intent that travels with the deck.\n\nWhen 'id' matches a record in the resolved 'narratives' catalog, the inline fields override matching fields on the catalog record (beats merge by beat 'id'). When 'id' doesn't match, this object defines a fully custom inline narrative.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside this object.";
664
668
  readonly properties: {
665
669
  readonly id: {
666
670
  readonly type: "string";
@@ -671,7 +675,7 @@ declare const presentation: {
671
675
  readonly name: {
672
676
  readonly type: "string";
673
677
  readonly description: "Human-readable narrative name.";
674
- readonly examples: ["Classic Story", "Problem → Solution", "SCQA", "Founder Pitch"];
678
+ readonly examples: ["Classic Story", "Problem → Solution", "SCQA", "Founder Pitch"];
675
679
  };
676
680
  readonly summary: {
677
681
  readonly type: "string";
@@ -744,7 +748,7 @@ declare const presentation: {
744
748
  };
745
749
  readonly NarrativeBeat: {
746
750
  readonly type: "object";
747
- readonly description: "A single narrative beat — a labeled segment of the story arc with a specific dramatic purpose (e.g. 'hook', 'problem', 'evidence', 'ask'). Slides reference beats via Slide.beat. Beats may also carry slide-blueprint hints (slideType, layoutHint, thoughtCues, instructions) that guide the assigned slide.\n\nMirrors the Beat definition in narrative.schema.json (https://openpresentation.org/schema/opf-narrative/v1) so library entries and inline OPF beats are interchangeable.";
751
+ readonly description: "A single narrative beat — a labeled segment of the story arc with a specific dramatic purpose (e.g. 'hook', 'problem', 'evidence', 'ask'). Slides reference beats via Slide.beat. Beats may also carry slide-blueprint hints (slideType, layoutHint, thoughtCues, instructions) that guide the assigned slide.\n\nMirrors the Beat definition in narrative.schema.json (https://openpresentation.org/schema/opf-narrative/v1) so library entries and inline OPF beats are interchangeable.";
748
752
  readonly required: ["id", "name"];
749
753
  readonly properties: {
750
754
  readonly id: {
@@ -765,7 +769,7 @@ declare const presentation: {
765
769
  };
766
770
  readonly instructions: {
767
771
  readonly type: "string";
768
- readonly description: "Short author-facing instruction for the beat — typically one phrase. Complements 'description' with a concise directive.";
772
+ readonly description: "Short author-facing instruction for the beat — typically one phrase. Complements 'description' with a concise directive.";
769
773
  readonly examples: ["Capture audience attention", "Introduce problem", "Detail implementation", "Inspire & conclude"];
770
774
  };
771
775
  readonly slideCount: {
@@ -780,7 +784,7 @@ declare const presentation: {
780
784
  };
781
785
  readonly layoutHint: {
782
786
  readonly type: "string";
783
- readonly description: "Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout — against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.";
787
+ readonly description: "Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout — against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.";
784
788
  readonly examples: ["section-divider", "title-slide", "title-left", "two-column", "text-left"];
785
789
  };
786
790
  readonly thoughtCues: {
@@ -1192,12 +1196,12 @@ declare const presentation: {
1192
1196
  };
1193
1197
  readonly major: {
1194
1198
  readonly type: "string";
1195
- readonly description: "Heading (major) font family — mirrors the OOXML majorFont entry. Pairs with 'minor'.";
1199
+ readonly description: "Heading (major) font family — mirrors the OOXML majorFont entry. Pairs with 'minor'.";
1196
1200
  readonly examples: ["Aptos Display", "Calibri", "Microsoft YaHei", "Arial Black"];
1197
1201
  };
1198
1202
  readonly minor: {
1199
1203
  readonly type: "string";
1200
- readonly description: "Body (minor) font family — mirrors the OOXML minorFont entry. Pairs with 'major'.";
1204
+ readonly description: "Body (minor) font family — mirrors the OOXML minorFont entry. Pairs with 'major'.";
1201
1205
  readonly examples: ["Aptos", "Calibri", "Microsoft YaHei", "Arial"];
1202
1206
  };
1203
1207
  readonly type: {
@@ -1634,7 +1638,7 @@ declare const presentation: {
1634
1638
  };
1635
1639
  readonly layout: {
1636
1640
  readonly type: "string";
1637
- readonly description: "Optional slide layout reference. Resolves to the 'id' of a 'layouts' catalog record. When omitted, engines infer a layout from the slide's root payload or promoted region keys. Accepts a bare id (lowercase kebab-case, e.g. 'title-subtitle'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.\n\nResolution order: inline catalogs.layouts.records[] → catalogs.layouts.source → default catalog at https://www.pptx.gallery/layouts.";
1641
+ readonly description: "Optional slide layout reference. Resolves to the 'id' of a 'layouts' catalog record. When omitted, engines infer a layout from the slide's root payload or promoted region keys. Accepts a bare id (lowercase kebab-case, e.g. 'title-subtitle'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.\n\nResolution order: inline catalogs.layouts.records[] → catalogs.layouts.source → default catalog at https://www.pptx.gallery/layouts.";
1638
1642
  readonly examples: ["title", "title-subtitle", "text-2x", "chart-3x", "image-bleed", "blank", "https://acme.com/decks/layouts/cover.json", "pkg:@acme/decks/layouts/cover"];
1639
1643
  };
1640
1644
  readonly title: {
@@ -1668,7 +1672,7 @@ declare const presentation: {
1668
1672
  readonly items: {
1669
1673
  readonly $ref: "#/$defs/ListItem";
1670
1674
  };
1671
- readonly description: "Full-slide generic list payload. Presence of this field infers type 'list'.";
1675
+ readonly description: "Full-slide generic list payload. Presence of this field infers type 'list'. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for layout-agnostic blocks.";
1672
1676
  };
1673
1677
  readonly bullets: {
1674
1678
  readonly type: "array";
@@ -1728,7 +1732,7 @@ declare const presentation: {
1728
1732
  readonly items: {
1729
1733
  readonly $ref: "#/$defs/ContentPayload";
1730
1734
  };
1731
- readonly description: "Layout-agnostic content blocks rendered together as a composed payload when exact placement is unspecified.";
1735
+ readonly description: "Layout-agnostic content blocks rendered together as a composed payload when exact placement is unspecified. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for equivalent blocks.";
1732
1736
  };
1733
1737
  readonly design: {
1734
1738
  readonly $ref: "#/$defs/Design";
@@ -2568,7 +2572,7 @@ declare const presentation: {
2568
2572
  };
2569
2573
  readonly Catalogs: {
2570
2574
  readonly type: "object";
2571
- readonly description: "Catalog overrides for the in-document references. Every property is optional. The default catalog for a kind lives at https://www.pptx.gallery/<kind> (e.g. https://www.pptx.gallery/narratives, https://www.pptx.gallery/themes). For each kind, declaring a 'source' replaces the default registry and/or 'records' adds inline records that take precedence over anything fetched from a source.\n\nResolution order for any reference (e.g. narrative, design.theme): inline catalogs.<kind>.records[] → catalogs.<kind>.source → default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. References that are themselves URLs or 'pkg:' references skip the catalog lookup and resolve directly.";
2575
+ readonly description: "Catalog overrides for the in-document references. Every property is optional. The default catalog for a kind lives at https://www.pptx.gallery/<kind> (e.g. https://www.pptx.gallery/narratives, https://www.pptx.gallery/themes). For each kind, declaring a 'source' replaces the default registry and/or 'records' adds inline records that take precedence over anything fetched from a source.\n\nResolution order for any reference (e.g. narrative, design.theme): inline catalogs.<kind>.records[] → catalogs.<kind>.source → default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. References that are themselves URLs or 'pkg:' references skip the catalog lookup and resolve directly.";
2572
2576
  readonly properties: {
2573
2577
  readonly narratives: {
2574
2578
  readonly $ref: "#/$defs/CatalogEntry";
@@ -2652,7 +2656,7 @@ declare const presentation: {
2652
2656
  declare const audience: {
2653
2657
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
2654
2658
  readonly $id: "https://openpresentation.org/schema/opf-audience/v1";
2655
- readonly title: "OPF Audience";
2659
+ readonly title: "Audience";
2656
2660
  readonly description: "Schema for audience records in the pptx.gallery library. Each record names an audience archetype (e.g. 'executives', 'engineering-team', 'investors') and carries seniority, technical-fluency, decision-power, and attention-budget hints used by AI-driven generation. Audiences are referenced from OPF documents via audience; the engine resolves the reference against catalogs.audiences (inline) → catalogs.audiences.source → the default catalog at https://www.pptx.gallery/audiences. The audience field also accepts free-form strings; this catalog is for engine-aware audience archetypes that carry generation hints.";
2657
2661
  readonly type: "object";
2658
2662
  readonly required: ["$schema", "id", "name"];
@@ -2753,7 +2757,7 @@ declare const audience: {
2753
2757
  declare const purpose: {
2754
2758
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
2755
2759
  readonly $id: "https://openpresentation.org/schema/opf-purpose/v1";
2756
- readonly title: "OPF Purpose";
2760
+ readonly title: "Purpose";
2757
2761
  readonly description: "Schema for purpose records in the pptx.gallery library. Each record names a presentation objective such as informing, aligning, persuading, driving a decision, or selling. Purposes are referenced from OPF documents via purpose; the engine resolves the reference against catalogs.purposes (inline) → catalogs.purposes.source → the default catalog at https://www.pptx.gallery/purposes. The purpose field also accepts free-form strings and inline Purpose objects.";
2758
2762
  readonly type: "object";
2759
2763
  readonly required: ["$schema", "id", "name"];
@@ -2841,7 +2845,7 @@ declare const purpose: {
2841
2845
  declare const tone: {
2842
2846
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
2843
2847
  readonly $id: "https://openpresentation.org/schema/opf-tone/v1";
2844
- readonly title: "OPF Tone";
2848
+ readonly title: "Tone";
2845
2849
  readonly description: "Schema for tone records in the pptx.gallery library. Each record names a presentation tone (e.g. 'formal', 'casual', 'inspirational') and carries voice cues, anti-patterns, and sample phrases that AI-driven generation uses to shape output. Tones are referenced from OPF documents via tone; the engine resolves the reference against catalogs.tones (inline) → catalogs.tones.source → the default catalog at https://www.pptx.gallery/tones.";
2846
2850
  readonly type: "object";
2847
2851
  readonly required: ["$schema", "id", "name"];
@@ -2938,7 +2942,7 @@ declare const tone: {
2938
2942
  declare const theme: {
2939
2943
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
2940
2944
  readonly $id: "https://openpresentation.org/schema/opf-theme/v1";
2941
- readonly title: "OPF Theme";
2945
+ readonly title: "Theme";
2942
2946
  readonly description: "Schema for theme records in the pptx.gallery library. Each theme is a small, named bundle that pairs a color scheme, a font scheme, a default theme-controlled background, and a slide size. Themes are referenced from OPF documents via design.theme or design.theme.id; the engine resolves the reference against catalogs.themes (inline) → catalogs.themes.source → the default catalog at https://www.pptx.gallery/themes. Inline overrides on design.colorScheme / design.fontScheme / design.background / design.dimensions take precedence over a resolved theme.";
2943
2947
  readonly type: "object";
2944
2948
  readonly required: ["$schema", "id", "name"];
@@ -3047,7 +3051,7 @@ declare const theme: {
3047
3051
  declare const layout: {
3048
3052
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
3049
3053
  readonly $id: "https://openpresentation.org/schema/opf-layout/v1";
3050
- readonly title: "OPF Slide Layout";
3054
+ readonly title: "Slide Layout";
3051
3055
  readonly description: "Schema for slide-layout records in the pptx.gallery library. Each record describes a semantic slide layout — what regions it exposes and what content kinds those regions are intended to hold. Layouts are referenced from OPF documents via Slide.layout; the engine resolves the reference against catalogs.layouts (inline) → catalogs.layouts.source → the default catalog at https://www.pptx.gallery/layouts. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.";
3052
3056
  readonly type: "object";
3053
3057
  readonly required: ["$schema", "id", "name"];
@@ -3211,7 +3215,7 @@ declare const layout: {
3211
3215
  declare const chartType: {
3212
3216
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
3213
3217
  readonly $id: "https://openpresentation.org/schema/opf-chart-type/v1";
3214
- readonly title: "OPF Chart Type";
3218
+ readonly title: "Chart Type";
3215
3219
  readonly description: "Schema for chart-type records in the pptx.gallery catalog. Each record describes a named chart variant, its Open XML mapping, its series/category cardinality, the column structure of the underlying workbook, and a small sample dataset suitable for previews. Chart types are referenced from OPF chart content payloads; the engine resolves the reference against catalogs.chartTypes (inline) -> catalogs.chartTypes.source -> the default catalog at https://www.pptx.gallery/chart-types.";
3216
3220
  readonly type: "object";
3217
3221
  readonly additionalProperties: false;
@@ -3517,7 +3521,7 @@ declare const chartType: {
3517
3521
  declare const narrative: {
3518
3522
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
3519
3523
  readonly $id: "https://openpresentation.org/schema/opf-narrative/v1";
3520
- readonly title: "OPF Narrative Template";
3524
+ readonly title: "Narrative Template";
3521
3525
  readonly description: "Schema for narrative template files in the openpresentation.org catalog. Each template describes a named story arc (e.g. 'problem-solution', 'scqa') as an ordered list of beats. Templates are referenced from OPF documents via narrative — either as a bare id string (e.g. 'classic-story') or as an inline object whose shape matches this schema (sans '$schema').";
3522
3526
  readonly type: "object";
3523
3527
  readonly required: ["$schema", "id", "name", "beats"];
@@ -3663,8 +3667,8 @@ declare const narrative: {
3663
3667
  declare const socialPlatform: {
3664
3668
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
3665
3669
  readonly $id: "https://openpresentation.org/schema/opf-social-platform/v1";
3666
- readonly title: "OPF Social Platform";
3667
- readonly description: "Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform — its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records are referenced from OPF documents indirectly: the property keys of any Socials object (Organization.socials, Speaker.socials) match record ids, and renderers use the catalog record to format URLs and pick icons. The engine resolves references against catalogs.socialPlatforms (inline) → catalogs.socialPlatforms.source → the default catalog at https://www.pptx.gallery/social-platforms.";
3670
+ readonly title: "Social Platform";
3671
+ readonly description: "Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform — its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records are referenced from OPF documents indirectly: the property keys of any Socials object (Organization.socials, Speaker.socials) match record ids, and renderers use the catalog record to format URLs and pick icons. The engine resolves references against catalogs.socialPlatforms (inline) → catalogs.socialPlatforms.source → the default catalog at https://www.pptx.gallery/social-platforms.";
3668
3672
  readonly type: "object";
3669
3673
  readonly required: ["$schema", "id", "name"];
3670
3674
  readonly properties: {
@@ -3676,7 +3680,7 @@ declare const socialPlatform: {
3676
3680
  readonly id: {
3677
3681
  readonly type: "string";
3678
3682
  readonly pattern: "^[a-z][a-z0-9-]*$";
3679
- readonly description: "Stable slug used by OPF documents to reference this platform — appears as a property key on Socials objects. Lowercase kebab-case.";
3683
+ readonly description: "Stable slug used by OPF documents to reference this platform — appears as a property key on Socials objects. Lowercase kebab-case.";
3680
3684
  readonly examples: ["linkedin", "x", "github", "youtube", "instagram", "facebook", "tiktok", "threads", "mastodon", "bluesky"];
3681
3685
  };
3682
3686
  readonly name: {
@@ -3686,7 +3690,7 @@ declare const socialPlatform: {
3686
3690
  };
3687
3691
  readonly summary: {
3688
3692
  readonly type: "string";
3689
- readonly description: "One-sentence positioning of the platform — what it's used for and who's on it.";
3693
+ readonly description: "One-sentence positioning of the platform — what it's used for and who's on it.";
3690
3694
  readonly examples: ["Professional social network for individuals and companies.", "Real-time microblog for news, opinions, and discussion."];
3691
3695
  };
3692
3696
  readonly description: {
@@ -3697,7 +3701,7 @@ declare const socialPlatform: {
3697
3701
  readonly baseUrl: {
3698
3702
  readonly type: "string";
3699
3703
  readonly format: "uri";
3700
- readonly description: "Canonical base URL of the platform — used as the prefix when normalizing handles to full URLs.";
3704
+ readonly description: "Canonical base URL of the platform — used as the prefix when normalizing handles to full URLs.";
3701
3705
  readonly examples: ["https://linkedin.com", "https://x.com", "https://github.com", "https://youtube.com"];
3702
3706
  };
3703
3707
  readonly profileUrlPattern: {
@@ -3774,7 +3778,7 @@ declare const socialPlatform: {
3774
3778
  declare const language: {
3775
3779
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
3776
3780
  readonly $id: "https://openpresentation.org/schema/opf-language/v1";
3777
- readonly title: "OPF Language";
3781
+ readonly title: "Language";
3778
3782
  readonly description: "Schema for language records in the pptx.gallery library. Each record names a presentation language, carries a BCP-47 language tag, and pairs it with sensible default font schemes for PowerPoint and Google Slides output. Languages are referenced from OPF documents via language; the engine resolves the reference against catalogs.languages (inline) → catalogs.languages.source → the default catalog at https://www.pptx.gallery/languages. The presentation language field also accepts BCP-47 tags directly or inline Language objects for engine-aware language records that carry default-font hints.";
3779
3783
  readonly type: "object";
3780
3784
  readonly required: ["$schema", "id", "name", "bcp47"];
@@ -3873,7 +3877,7 @@ declare const language: {
3873
3877
  declare const colorScheme: {
3874
3878
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
3875
3879
  readonly $id: "https://openpresentation.org/schema/opf-color-scheme/v1";
3876
- readonly title: "OPF Color Scheme";
3880
+ readonly title: "Color Scheme";
3877
3881
  readonly description: "Schema for color-scheme records in the pptx.gallery library. Each scheme is a named palette with the twelve PowerPoint color slots (six accents, two darks, two lights, plus hyperlink and followed-hyperlink), suitable for being mapped directly into OOXML theme XML. Color schemes are referenced from OPF documents via design.colorScheme or design.colorScheme.id; the engine resolves the reference against catalogs.colorSchemes (inline) -> catalogs.colorSchemes.source -> the default catalog at https://www.pptx.gallery/color-schemes. Slot overrides on design.colorScheme take precedence over the resolved scheme.\n\nThe slot fields here mirror the inline-override fields on the in-document ColorScheme type (in opf.schema.json), so library entries and inline OPF overrides are interchangeable.";
3878
3882
  readonly type: "object";
3879
3883
  readonly required: ["$schema", "id", "name"];
@@ -4001,7 +4005,7 @@ declare const colorScheme: {
4001
4005
  declare const fontScheme: {
4002
4006
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
4003
4007
  readonly $id: "https://openpresentation.org/schema/opf-font-scheme/v1";
4004
- readonly title: "OPF Font Scheme";
4008
+ readonly title: "Font Scheme";
4005
4009
  readonly description: "Schema for font-scheme records in the pptx.gallery library. Each scheme pairs a major (heading) and minor (body) font family in the OOXML majorFont/minorFont sense, scoped to a target app (PowerPoint or Google Slides) and a language family (Latin, East Asian, or Complex Script). Font schemes are referenced from OPF documents via design.fontScheme or design.fontScheme.id; the engine resolves the reference against catalogs.fontSchemes (inline) → catalogs.fontSchemes.source → the default catalog at https://www.pptx.gallery/font-schemes. Role overrides on design.fontScheme (heading, body, accent, code) take precedence over the resolved scheme.";
4006
4010
  readonly type: "object";
4007
4011
  readonly required: ["$schema", "id", "name", "major", "minor"];
@@ -4108,8 +4112,8 @@ declare const schemas: {
4108
4112
  readonly presentation: {
4109
4113
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
4110
4114
  readonly $id: "https://openpresentation.org/schema/opf/v1";
4111
- readonly title: "OPF — Open Presentation Format";
4112
- readonly description: "Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity.\n\nFields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document → 'catalogs.<kind>.source' on the document → engine defaults → the default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.\n\nMost catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry.";
4115
+ readonly title: "Presentation";
4116
+ readonly description: "Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity.\n\nFields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document → 'catalogs.<kind>.source' on the document → engine defaults → the default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.\n\nMost catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry.";
4113
4117
  readonly type: "object";
4114
4118
  readonly required: ["slides"];
4115
4119
  readonly additionalProperties: false;
@@ -4122,11 +4126,11 @@ declare const schemas: {
4122
4126
  readonly name: {
4123
4127
  readonly type: "string";
4124
4128
  readonly description: "Display name of the presentation for GUI/TUI lists, library/search indexing, OS-level metadata, and default export filenames. This is deck identity, not slide content. Use slides[].title and slides[].subtitle for text that should appear on presented slides.";
4125
- readonly examples: ["Q4 2026 Business Review", "Series B Pitch — Acme", "The Future of Agentic Workflows"];
4129
+ readonly examples: ["Q4 2026 Business Review", "Series B Pitch — Acme", "The Future of Agentic Workflows"];
4126
4130
  };
4127
4131
  readonly description: {
4128
4132
  readonly type: "string";
4129
- readonly description: "Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the 'Comments' field in File → Properties).";
4133
+ readonly description: "Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the 'Comments' field in File → Properties).";
4130
4134
  readonly examples: ["Quarterly business review covering revenue, product, and hiring milestones for the executive team."];
4131
4135
  };
4132
4136
  readonly filename: {
@@ -4172,17 +4176,21 @@ declare const schemas: {
4172
4176
  readonly examples: ["Bob Lee", ["Bob Lee", "Carla Diaz"]];
4173
4177
  };
4174
4178
  readonly audience: {
4175
- readonly type: "array";
4176
- readonly items: {
4177
- readonly oneOf: [{
4178
- readonly type: "string";
4179
- }, {
4180
- readonly $ref: "#/$defs/Audience";
4181
- }];
4182
- };
4183
- readonly minItems: 1;
4184
- readonly description: "Intended audiences for the presentation. Each item accepts either:\n- A string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Audience object for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.audiences.records[] → catalogs.audiences.source → default catalog at https://www.pptx.gallery/audiences.";
4185
- readonly examples: [["executives"], ["board", "c-suite"], ["Series B investors", "https://acme.com/decks/audiences/acme-board.json"], [{
4179
+ readonly oneOf: [{
4180
+ readonly type: "string";
4181
+ }, {
4182
+ readonly type: "array";
4183
+ readonly items: {
4184
+ readonly oneOf: [{
4185
+ readonly type: "string";
4186
+ }, {
4187
+ readonly $ref: "#/$defs/Audience";
4188
+ }];
4189
+ };
4190
+ readonly minItems: 1;
4191
+ }];
4192
+ readonly description: "Intended audiences for the presentation. Accepts either:\n- A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference.\n- An array of string shorthands and/or inline Audience objects for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.audiences.records[] → catalogs.audiences.source → default catalog at https://www.pptx.gallery/audiences.";
4193
+ readonly examples: ["executives", "Biology Students and Wildlife Enthusiasts", ["executives"], ["board", "c-suite"], ["Series B investors", "https://acme.com/decks/audiences/acme-board.json"], [{
4186
4194
  readonly id: "executives";
4187
4195
  readonly attentionBudgetMinutes: 20;
4188
4196
  }, {
@@ -4198,7 +4206,7 @@ declare const schemas: {
4198
4206
  }, {
4199
4207
  readonly $ref: "#/$defs/Purpose";
4200
4208
  }];
4201
- readonly description: "Primary goal of the presentation. Accepts either:\n- A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Purpose object for custom purpose metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-purpose/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.purposes.records[] → catalogs.purposes.source → default catalog at https://www.pptx.gallery/purposes.";
4209
+ readonly description: "Primary goal of the presentation. Accepts either:\n- A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Purpose object for custom purpose metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-purpose/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.purposes.records[] → catalogs.purposes.source → default catalog at https://www.pptx.gallery/purposes.";
4202
4210
  readonly examples: ["Raise a Series B round of $30M", "align", "educate", "https://acme.com/decks/purposes/fundraise.json", "pkg:@acme/decks/purposes/fundraise", {
4203
4211
  readonly id: "decide";
4204
4212
  readonly outcome: "Approve the Q4 hiring plan";
@@ -4213,7 +4221,7 @@ declare const schemas: {
4213
4221
  }, {
4214
4222
  readonly $ref: "#/$defs/Language";
4215
4223
  }];
4216
- readonly description: "Language for the presentation content. Accepts either:\n- A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Language object for custom language metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-language/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.languages.records[] → catalogs.languages.source → default catalog at https://www.pptx.gallery/languages.";
4224
+ readonly description: "Language for the presentation content. Accepts either:\n- A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Language object for custom language metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-language/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.languages.records[] → catalogs.languages.source → default catalog at https://www.pptx.gallery/languages.";
4217
4225
  readonly examples: ["en-US", "en-GB", "es-MX", "ja-JP", "fr", "english", "japanese", "https://acme.com/decks/languages/en-acme.json", "pkg:@acme/decks/languages/en-acme", {
4218
4226
  readonly id: "english";
4219
4227
  readonly bcp47: "en-US";
@@ -4232,7 +4240,7 @@ declare const schemas: {
4232
4240
  }, {
4233
4241
  readonly $ref: "#/$defs/Tone";
4234
4242
  }];
4235
- readonly description: "Desired tone for the presentation. Accepts either:\n- A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-tone/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.tones.records[] → catalogs.tones.source → default catalog at https://www.pptx.gallery/tones.";
4243
+ readonly description: "Desired tone for the presentation. Accepts either:\n- A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-tone/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.tones.records[] → catalogs.tones.source → default catalog at https://www.pptx.gallery/tones.";
4236
4244
  readonly examples: ["formal", "casual", "inspirational", "technical", "persuasive", "https://acme.com/decks/tones/acme-voice.json", "pkg:@acme/decks/tones/acme-voice", {
4237
4245
  readonly id: "formal";
4238
4246
  readonly voiceCues: ["Use precise, concise language."];
@@ -4277,7 +4285,7 @@ declare const schemas: {
4277
4285
  }, {
4278
4286
  readonly $ref: "#/$defs/Narrative";
4279
4287
  }];
4280
- readonly description: "Structured storyline describing the deck's arc and beats. Resolves to the 'id' of a 'narratives' catalog record.\n\nAccepts two forms:\n- String shorthand for the common case: 'narrative = \"classic-story\"'. Accepts a bare id (lowercase kebab-case), an HTTPS URL pointing at a record file, or a 'pkg:' reference to a locally-installed package.\n- Object form for inline overrides or fully custom narratives: 'narrative = { id: \"classic-story\", beats: [...] }'. The object shape mirrors https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nResolution order: inline catalogs.narratives.records[] → catalogs.narratives.source → default catalog at https://www.pptx.gallery/narratives. Unknown ids produce a validation warning, not an error.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside the narrative object.";
4288
+ readonly description: "Structured storyline describing the deck's arc and beats. Resolves to the 'id' of a 'narratives' catalog record.\n\nAccepts two forms:\n- String shorthand for the common case: 'narrative = \"classic-story\"'. Accepts a bare id (lowercase kebab-case), an HTTPS URL pointing at a record file, or a 'pkg:' reference to a locally-installed package.\n- Object form for inline overrides or fully custom narratives: 'narrative = { id: \"classic-story\", beats: [...] }'. The object shape mirrors https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nResolution order: inline catalogs.narratives.records[] → catalogs.narratives.source → default catalog at https://www.pptx.gallery/narratives. Unknown ids produce a validation warning, not an error.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside the narrative object.";
4281
4289
  readonly examples: ["classic-story", "problem-solution", "scqa", "pitch-deck", {
4282
4290
  readonly id: "custom-pitch";
4283
4291
  readonly name: "Custom Pitch";
@@ -4635,7 +4643,7 @@ declare const schemas: {
4635
4643
  };
4636
4644
  readonly Organization: {
4637
4645
  readonly type: "object";
4638
- readonly description: "An organization associated with the presentation — typically the presenting company, but also hosts, partners, clients, or sponsors. Surfaced on cover slides, footers, and brand bars; the primary organization's logo is the default deck logo unless overridden by design.logo.";
4646
+ readonly description: "An organization associated with the presentation — typically the presenting company, but also hosts, partners, clients, or sponsors. Surfaced on cover slides, footers, and brand bars; the primary organization's logo is the default deck logo unless overridden by design.logo.";
4639
4647
  readonly required: ["id", "name"];
4640
4648
  readonly properties: {
4641
4649
  readonly id: {
@@ -4746,7 +4754,7 @@ declare const schemas: {
4746
4754
  };
4747
4755
  readonly Socials: {
4748
4756
  readonly type: "object";
4749
- readonly description: "Social media handles or URLs, keyed by platform id from the 'socialPlatforms' catalog. Each value is a string — either a full URL or a platform handle (e.g., '@acme'). The catalog record for each platform carries the URL pattern, handle prefix, brand color, and themed icons used by renderers.\n\nKeys resolve to the 'id' of a 'socialPlatforms' catalog record. Resolution order: inline catalogs.socialPlatforms.records[] → catalogs.socialPlatforms.source → default catalog at https://www.pptx.gallery/social-platforms. Unknown platform keys render with engine fallbacks (the raw value as text). Used both for organization and speaker records.";
4757
+ readonly description: "Social media handles or URLs, keyed by platform id from the 'socialPlatforms' catalog. Each value is a string — either a full URL or a platform handle (e.g., '@acme'). The catalog record for each platform carries the URL pattern, handle prefix, brand color, and themed icons used by renderers.\n\nKeys resolve to the 'id' of a 'socialPlatforms' catalog record. Resolution order: inline catalogs.socialPlatforms.records[] → catalogs.socialPlatforms.source → default catalog at https://www.pptx.gallery/social-platforms. Unknown platform keys render with engine fallbacks (the raw value as text). Used both for organization and speaker records.";
4750
4758
  readonly additionalProperties: {
4751
4759
  readonly type: "string";
4752
4760
  readonly description: "Handle or URL for the platform identified by the property key.";
@@ -4767,7 +4775,7 @@ declare const schemas: {
4767
4775
  };
4768
4776
  readonly Narrative: {
4769
4777
  readonly type: "object";
4770
- readonly description: "Structured storyline used by AI to shape generated content. Mirrors the OPF Narrative Template record at https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nNarrative declares the deck's intended story arc; slides may opt into beats via Slide.beat. The narrative does not constrain slide structure — validators warn on drift (orphan slides, unused beats) but never error. Slides are the source of truth; narrative is intent that travels with the deck.\n\nWhen 'id' matches a record in the resolved 'narratives' catalog, the inline fields override matching fields on the catalog record (beats merge by beat 'id'). When 'id' doesn't match, this object defines a fully custom inline narrative.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside this object.";
4778
+ readonly description: "Structured storyline used by AI to shape generated content. Mirrors the OPF Narrative Template record at https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nNarrative declares the deck's intended story arc; slides may opt into beats via Slide.beat. The narrative does not constrain slide structure — validators warn on drift (orphan slides, unused beats) but never error. Slides are the source of truth; narrative is intent that travels with the deck.\n\nWhen 'id' matches a record in the resolved 'narratives' catalog, the inline fields override matching fields on the catalog record (beats merge by beat 'id'). When 'id' doesn't match, this object defines a fully custom inline narrative.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside this object.";
4771
4779
  readonly properties: {
4772
4780
  readonly id: {
4773
4781
  readonly type: "string";
@@ -4778,7 +4786,7 @@ declare const schemas: {
4778
4786
  readonly name: {
4779
4787
  readonly type: "string";
4780
4788
  readonly description: "Human-readable narrative name.";
4781
- readonly examples: ["Classic Story", "Problem → Solution", "SCQA", "Founder Pitch"];
4789
+ readonly examples: ["Classic Story", "Problem → Solution", "SCQA", "Founder Pitch"];
4782
4790
  };
4783
4791
  readonly summary: {
4784
4792
  readonly type: "string";
@@ -4851,7 +4859,7 @@ declare const schemas: {
4851
4859
  };
4852
4860
  readonly NarrativeBeat: {
4853
4861
  readonly type: "object";
4854
- readonly description: "A single narrative beat — a labeled segment of the story arc with a specific dramatic purpose (e.g. 'hook', 'problem', 'evidence', 'ask'). Slides reference beats via Slide.beat. Beats may also carry slide-blueprint hints (slideType, layoutHint, thoughtCues, instructions) that guide the assigned slide.\n\nMirrors the Beat definition in narrative.schema.json (https://openpresentation.org/schema/opf-narrative/v1) so library entries and inline OPF beats are interchangeable.";
4862
+ readonly description: "A single narrative beat — a labeled segment of the story arc with a specific dramatic purpose (e.g. 'hook', 'problem', 'evidence', 'ask'). Slides reference beats via Slide.beat. Beats may also carry slide-blueprint hints (slideType, layoutHint, thoughtCues, instructions) that guide the assigned slide.\n\nMirrors the Beat definition in narrative.schema.json (https://openpresentation.org/schema/opf-narrative/v1) so library entries and inline OPF beats are interchangeable.";
4855
4863
  readonly required: ["id", "name"];
4856
4864
  readonly properties: {
4857
4865
  readonly id: {
@@ -4872,7 +4880,7 @@ declare const schemas: {
4872
4880
  };
4873
4881
  readonly instructions: {
4874
4882
  readonly type: "string";
4875
- readonly description: "Short author-facing instruction for the beat — typically one phrase. Complements 'description' with a concise directive.";
4883
+ readonly description: "Short author-facing instruction for the beat — typically one phrase. Complements 'description' with a concise directive.";
4876
4884
  readonly examples: ["Capture audience attention", "Introduce problem", "Detail implementation", "Inspire & conclude"];
4877
4885
  };
4878
4886
  readonly slideCount: {
@@ -4887,7 +4895,7 @@ declare const schemas: {
4887
4895
  };
4888
4896
  readonly layoutHint: {
4889
4897
  readonly type: "string";
4890
- readonly description: "Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout — against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.";
4898
+ readonly description: "Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout — against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.";
4891
4899
  readonly examples: ["section-divider", "title-slide", "title-left", "two-column", "text-left"];
4892
4900
  };
4893
4901
  readonly thoughtCues: {
@@ -5299,12 +5307,12 @@ declare const schemas: {
5299
5307
  };
5300
5308
  readonly major: {
5301
5309
  readonly type: "string";
5302
- readonly description: "Heading (major) font family — mirrors the OOXML majorFont entry. Pairs with 'minor'.";
5310
+ readonly description: "Heading (major) font family — mirrors the OOXML majorFont entry. Pairs with 'minor'.";
5303
5311
  readonly examples: ["Aptos Display", "Calibri", "Microsoft YaHei", "Arial Black"];
5304
5312
  };
5305
5313
  readonly minor: {
5306
5314
  readonly type: "string";
5307
- readonly description: "Body (minor) font family — mirrors the OOXML minorFont entry. Pairs with 'major'.";
5315
+ readonly description: "Body (minor) font family — mirrors the OOXML minorFont entry. Pairs with 'major'.";
5308
5316
  readonly examples: ["Aptos", "Calibri", "Microsoft YaHei", "Arial"];
5309
5317
  };
5310
5318
  readonly type: {
@@ -5741,7 +5749,7 @@ declare const schemas: {
5741
5749
  };
5742
5750
  readonly layout: {
5743
5751
  readonly type: "string";
5744
- readonly description: "Optional slide layout reference. Resolves to the 'id' of a 'layouts' catalog record. When omitted, engines infer a layout from the slide's root payload or promoted region keys. Accepts a bare id (lowercase kebab-case, e.g. 'title-subtitle'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.\n\nResolution order: inline catalogs.layouts.records[] → catalogs.layouts.source → default catalog at https://www.pptx.gallery/layouts.";
5752
+ readonly description: "Optional slide layout reference. Resolves to the 'id' of a 'layouts' catalog record. When omitted, engines infer a layout from the slide's root payload or promoted region keys. Accepts a bare id (lowercase kebab-case, e.g. 'title-subtitle'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.\n\nResolution order: inline catalogs.layouts.records[] → catalogs.layouts.source → default catalog at https://www.pptx.gallery/layouts.";
5745
5753
  readonly examples: ["title", "title-subtitle", "text-2x", "chart-3x", "image-bleed", "blank", "https://acme.com/decks/layouts/cover.json", "pkg:@acme/decks/layouts/cover"];
5746
5754
  };
5747
5755
  readonly title: {
@@ -5775,7 +5783,7 @@ declare const schemas: {
5775
5783
  readonly items: {
5776
5784
  readonly $ref: "#/$defs/ListItem";
5777
5785
  };
5778
- readonly description: "Full-slide generic list payload. Presence of this field infers type 'list'.";
5786
+ readonly description: "Full-slide generic list payload. Presence of this field infers type 'list'. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for layout-agnostic blocks.";
5779
5787
  };
5780
5788
  readonly bullets: {
5781
5789
  readonly type: "array";
@@ -5835,7 +5843,7 @@ declare const schemas: {
5835
5843
  readonly items: {
5836
5844
  readonly $ref: "#/$defs/ContentPayload";
5837
5845
  };
5838
- readonly description: "Layout-agnostic content blocks rendered together as a composed payload when exact placement is unspecified.";
5846
+ readonly description: "Layout-agnostic content blocks rendered together as a composed payload when exact placement is unspecified. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for equivalent blocks.";
5839
5847
  };
5840
5848
  readonly design: {
5841
5849
  readonly $ref: "#/$defs/Design";
@@ -6675,7 +6683,7 @@ declare const schemas: {
6675
6683
  };
6676
6684
  readonly Catalogs: {
6677
6685
  readonly type: "object";
6678
- readonly description: "Catalog overrides for the in-document references. Every property is optional. The default catalog for a kind lives at https://www.pptx.gallery/<kind> (e.g. https://www.pptx.gallery/narratives, https://www.pptx.gallery/themes). For each kind, declaring a 'source' replaces the default registry and/or 'records' adds inline records that take precedence over anything fetched from a source.\n\nResolution order for any reference (e.g. narrative, design.theme): inline catalogs.<kind>.records[] → catalogs.<kind>.source → default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. References that are themselves URLs or 'pkg:' references skip the catalog lookup and resolve directly.";
6686
+ readonly description: "Catalog overrides for the in-document references. Every property is optional. The default catalog for a kind lives at https://www.pptx.gallery/<kind> (e.g. https://www.pptx.gallery/narratives, https://www.pptx.gallery/themes). For each kind, declaring a 'source' replaces the default registry and/or 'records' adds inline records that take precedence over anything fetched from a source.\n\nResolution order for any reference (e.g. narrative, design.theme): inline catalogs.<kind>.records[] → catalogs.<kind>.source → default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. References that are themselves URLs or 'pkg:' references skip the catalog lookup and resolve directly.";
6679
6687
  readonly properties: {
6680
6688
  readonly narratives: {
6681
6689
  readonly $ref: "#/$defs/CatalogEntry";
@@ -6759,7 +6767,7 @@ declare const schemas: {
6759
6767
  readonly audience: {
6760
6768
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
6761
6769
  readonly $id: "https://openpresentation.org/schema/opf-audience/v1";
6762
- readonly title: "OPF Audience";
6770
+ readonly title: "Audience";
6763
6771
  readonly description: "Schema for audience records in the pptx.gallery library. Each record names an audience archetype (e.g. 'executives', 'engineering-team', 'investors') and carries seniority, technical-fluency, decision-power, and attention-budget hints used by AI-driven generation. Audiences are referenced from OPF documents via audience; the engine resolves the reference against catalogs.audiences (inline) → catalogs.audiences.source → the default catalog at https://www.pptx.gallery/audiences. The audience field also accepts free-form strings; this catalog is for engine-aware audience archetypes that carry generation hints.";
6764
6772
  readonly type: "object";
6765
6773
  readonly required: ["$schema", "id", "name"];
@@ -6860,7 +6868,7 @@ declare const schemas: {
6860
6868
  readonly purpose: {
6861
6869
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
6862
6870
  readonly $id: "https://openpresentation.org/schema/opf-purpose/v1";
6863
- readonly title: "OPF Purpose";
6871
+ readonly title: "Purpose";
6864
6872
  readonly description: "Schema for purpose records in the pptx.gallery library. Each record names a presentation objective such as informing, aligning, persuading, driving a decision, or selling. Purposes are referenced from OPF documents via purpose; the engine resolves the reference against catalogs.purposes (inline) → catalogs.purposes.source → the default catalog at https://www.pptx.gallery/purposes. The purpose field also accepts free-form strings and inline Purpose objects.";
6865
6873
  readonly type: "object";
6866
6874
  readonly required: ["$schema", "id", "name"];
@@ -6948,7 +6956,7 @@ declare const schemas: {
6948
6956
  readonly tone: {
6949
6957
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
6950
6958
  readonly $id: "https://openpresentation.org/schema/opf-tone/v1";
6951
- readonly title: "OPF Tone";
6959
+ readonly title: "Tone";
6952
6960
  readonly description: "Schema for tone records in the pptx.gallery library. Each record names a presentation tone (e.g. 'formal', 'casual', 'inspirational') and carries voice cues, anti-patterns, and sample phrases that AI-driven generation uses to shape output. Tones are referenced from OPF documents via tone; the engine resolves the reference against catalogs.tones (inline) → catalogs.tones.source → the default catalog at https://www.pptx.gallery/tones.";
6953
6961
  readonly type: "object";
6954
6962
  readonly required: ["$schema", "id", "name"];
@@ -7045,7 +7053,7 @@ declare const schemas: {
7045
7053
  readonly theme: {
7046
7054
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
7047
7055
  readonly $id: "https://openpresentation.org/schema/opf-theme/v1";
7048
- readonly title: "OPF Theme";
7056
+ readonly title: "Theme";
7049
7057
  readonly description: "Schema for theme records in the pptx.gallery library. Each theme is a small, named bundle that pairs a color scheme, a font scheme, a default theme-controlled background, and a slide size. Themes are referenced from OPF documents via design.theme or design.theme.id; the engine resolves the reference against catalogs.themes (inline) → catalogs.themes.source → the default catalog at https://www.pptx.gallery/themes. Inline overrides on design.colorScheme / design.fontScheme / design.background / design.dimensions take precedence over a resolved theme.";
7050
7058
  readonly type: "object";
7051
7059
  readonly required: ["$schema", "id", "name"];
@@ -7154,7 +7162,7 @@ declare const schemas: {
7154
7162
  readonly layout: {
7155
7163
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
7156
7164
  readonly $id: "https://openpresentation.org/schema/opf-layout/v1";
7157
- readonly title: "OPF Slide Layout";
7165
+ readonly title: "Slide Layout";
7158
7166
  readonly description: "Schema for slide-layout records in the pptx.gallery library. Each record describes a semantic slide layout — what regions it exposes and what content kinds those regions are intended to hold. Layouts are referenced from OPF documents via Slide.layout; the engine resolves the reference against catalogs.layouts (inline) → catalogs.layouts.source → the default catalog at https://www.pptx.gallery/layouts. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.";
7159
7167
  readonly type: "object";
7160
7168
  readonly required: ["$schema", "id", "name"];
@@ -7318,7 +7326,7 @@ declare const schemas: {
7318
7326
  readonly chartType: {
7319
7327
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
7320
7328
  readonly $id: "https://openpresentation.org/schema/opf-chart-type/v1";
7321
- readonly title: "OPF Chart Type";
7329
+ readonly title: "Chart Type";
7322
7330
  readonly description: "Schema for chart-type records in the pptx.gallery catalog. Each record describes a named chart variant, its Open XML mapping, its series/category cardinality, the column structure of the underlying workbook, and a small sample dataset suitable for previews. Chart types are referenced from OPF chart content payloads; the engine resolves the reference against catalogs.chartTypes (inline) -> catalogs.chartTypes.source -> the default catalog at https://www.pptx.gallery/chart-types.";
7323
7331
  readonly type: "object";
7324
7332
  readonly additionalProperties: false;
@@ -7624,7 +7632,7 @@ declare const schemas: {
7624
7632
  readonly narrative: {
7625
7633
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
7626
7634
  readonly $id: "https://openpresentation.org/schema/opf-narrative/v1";
7627
- readonly title: "OPF Narrative Template";
7635
+ readonly title: "Narrative Template";
7628
7636
  readonly description: "Schema for narrative template files in the openpresentation.org catalog. Each template describes a named story arc (e.g. 'problem-solution', 'scqa') as an ordered list of beats. Templates are referenced from OPF documents via narrative — either as a bare id string (e.g. 'classic-story') or as an inline object whose shape matches this schema (sans '$schema').";
7629
7637
  readonly type: "object";
7630
7638
  readonly required: ["$schema", "id", "name", "beats"];
@@ -7770,8 +7778,8 @@ declare const schemas: {
7770
7778
  readonly socialPlatform: {
7771
7779
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
7772
7780
  readonly $id: "https://openpresentation.org/schema/opf-social-platform/v1";
7773
- readonly title: "OPF Social Platform";
7774
- readonly description: "Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform — its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records are referenced from OPF documents indirectly: the property keys of any Socials object (Organization.socials, Speaker.socials) match record ids, and renderers use the catalog record to format URLs and pick icons. The engine resolves references against catalogs.socialPlatforms (inline) → catalogs.socialPlatforms.source → the default catalog at https://www.pptx.gallery/social-platforms.";
7781
+ readonly title: "Social Platform";
7782
+ readonly description: "Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform — its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records are referenced from OPF documents indirectly: the property keys of any Socials object (Organization.socials, Speaker.socials) match record ids, and renderers use the catalog record to format URLs and pick icons. The engine resolves references against catalogs.socialPlatforms (inline) → catalogs.socialPlatforms.source → the default catalog at https://www.pptx.gallery/social-platforms.";
7775
7783
  readonly type: "object";
7776
7784
  readonly required: ["$schema", "id", "name"];
7777
7785
  readonly properties: {
@@ -7783,7 +7791,7 @@ declare const schemas: {
7783
7791
  readonly id: {
7784
7792
  readonly type: "string";
7785
7793
  readonly pattern: "^[a-z][a-z0-9-]*$";
7786
- readonly description: "Stable slug used by OPF documents to reference this platform — appears as a property key on Socials objects. Lowercase kebab-case.";
7794
+ readonly description: "Stable slug used by OPF documents to reference this platform — appears as a property key on Socials objects. Lowercase kebab-case.";
7787
7795
  readonly examples: ["linkedin", "x", "github", "youtube", "instagram", "facebook", "tiktok", "threads", "mastodon", "bluesky"];
7788
7796
  };
7789
7797
  readonly name: {
@@ -7793,7 +7801,7 @@ declare const schemas: {
7793
7801
  };
7794
7802
  readonly summary: {
7795
7803
  readonly type: "string";
7796
- readonly description: "One-sentence positioning of the platform — what it's used for and who's on it.";
7804
+ readonly description: "One-sentence positioning of the platform — what it's used for and who's on it.";
7797
7805
  readonly examples: ["Professional social network for individuals and companies.", "Real-time microblog for news, opinions, and discussion."];
7798
7806
  };
7799
7807
  readonly description: {
@@ -7804,7 +7812,7 @@ declare const schemas: {
7804
7812
  readonly baseUrl: {
7805
7813
  readonly type: "string";
7806
7814
  readonly format: "uri";
7807
- readonly description: "Canonical base URL of the platform — used as the prefix when normalizing handles to full URLs.";
7815
+ readonly description: "Canonical base URL of the platform — used as the prefix when normalizing handles to full URLs.";
7808
7816
  readonly examples: ["https://linkedin.com", "https://x.com", "https://github.com", "https://youtube.com"];
7809
7817
  };
7810
7818
  readonly profileUrlPattern: {
@@ -7881,7 +7889,7 @@ declare const schemas: {
7881
7889
  readonly language: {
7882
7890
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
7883
7891
  readonly $id: "https://openpresentation.org/schema/opf-language/v1";
7884
- readonly title: "OPF Language";
7892
+ readonly title: "Language";
7885
7893
  readonly description: "Schema for language records in the pptx.gallery library. Each record names a presentation language, carries a BCP-47 language tag, and pairs it with sensible default font schemes for PowerPoint and Google Slides output. Languages are referenced from OPF documents via language; the engine resolves the reference against catalogs.languages (inline) → catalogs.languages.source → the default catalog at https://www.pptx.gallery/languages. The presentation language field also accepts BCP-47 tags directly or inline Language objects for engine-aware language records that carry default-font hints.";
7886
7894
  readonly type: "object";
7887
7895
  readonly required: ["$schema", "id", "name", "bcp47"];
@@ -7980,7 +7988,7 @@ declare const schemas: {
7980
7988
  readonly colorScheme: {
7981
7989
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
7982
7990
  readonly $id: "https://openpresentation.org/schema/opf-color-scheme/v1";
7983
- readonly title: "OPF Color Scheme";
7991
+ readonly title: "Color Scheme";
7984
7992
  readonly description: "Schema for color-scheme records in the pptx.gallery library. Each scheme is a named palette with the twelve PowerPoint color slots (six accents, two darks, two lights, plus hyperlink and followed-hyperlink), suitable for being mapped directly into OOXML theme XML. Color schemes are referenced from OPF documents via design.colorScheme or design.colorScheme.id; the engine resolves the reference against catalogs.colorSchemes (inline) -> catalogs.colorSchemes.source -> the default catalog at https://www.pptx.gallery/color-schemes. Slot overrides on design.colorScheme take precedence over the resolved scheme.\n\nThe slot fields here mirror the inline-override fields on the in-document ColorScheme type (in opf.schema.json), so library entries and inline OPF overrides are interchangeable.";
7985
7993
  readonly type: "object";
7986
7994
  readonly required: ["$schema", "id", "name"];
@@ -8108,7 +8116,7 @@ declare const schemas: {
8108
8116
  readonly fontScheme: {
8109
8117
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
8110
8118
  readonly $id: "https://openpresentation.org/schema/opf-font-scheme/v1";
8111
- readonly title: "OPF Font Scheme";
8119
+ readonly title: "Font Scheme";
8112
8120
  readonly description: "Schema for font-scheme records in the pptx.gallery library. Each scheme pairs a major (heading) and minor (body) font family in the OOXML majorFont/minorFont sense, scoped to a target app (PowerPoint or Google Slides) and a language family (Latin, East Asian, or Complex Script). Font schemes are referenced from OPF documents via design.fontScheme or design.fontScheme.id; the engine resolves the reference against catalogs.fontSchemes (inline) → catalogs.fontSchemes.source → the default catalog at https://www.pptx.gallery/font-schemes. Role overrides on design.fontScheme (heading, body, accent, code) take precedence over the resolved scheme.";
8113
8121
  readonly type: "object";
8114
8122
  readonly required: ["$schema", "id", "name", "major", "minor"];
@@ -8219,8 +8227,8 @@ declare const schemaEntries: readonly [{
8219
8227
  readonly schema: {
8220
8228
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
8221
8229
  readonly $id: "https://openpresentation.org/schema/opf/v1";
8222
- readonly title: "OPF — Open Presentation Format";
8223
- readonly description: "Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity.\n\nFields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document → 'catalogs.<kind>.source' on the document → engine defaults → the default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.\n\nMost catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry.";
8230
+ readonly title: "Presentation";
8231
+ readonly description: "Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity.\n\nFields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document → 'catalogs.<kind>.source' on the document → engine defaults → the default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.\n\nMost catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry.";
8224
8232
  readonly type: "object";
8225
8233
  readonly required: ["slides"];
8226
8234
  readonly additionalProperties: false;
@@ -8233,11 +8241,11 @@ declare const schemaEntries: readonly [{
8233
8241
  readonly name: {
8234
8242
  readonly type: "string";
8235
8243
  readonly description: "Display name of the presentation for GUI/TUI lists, library/search indexing, OS-level metadata, and default export filenames. This is deck identity, not slide content. Use slides[].title and slides[].subtitle for text that should appear on presented slides.";
8236
- readonly examples: ["Q4 2026 Business Review", "Series B Pitch — Acme", "The Future of Agentic Workflows"];
8244
+ readonly examples: ["Q4 2026 Business Review", "Series B Pitch — Acme", "The Future of Agentic Workflows"];
8237
8245
  };
8238
8246
  readonly description: {
8239
8247
  readonly type: "string";
8240
- readonly description: "Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the 'Comments' field in File → Properties).";
8248
+ readonly description: "Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the 'Comments' field in File → Properties).";
8241
8249
  readonly examples: ["Quarterly business review covering revenue, product, and hiring milestones for the executive team."];
8242
8250
  };
8243
8251
  readonly filename: {
@@ -8283,17 +8291,21 @@ declare const schemaEntries: readonly [{
8283
8291
  readonly examples: ["Bob Lee", ["Bob Lee", "Carla Diaz"]];
8284
8292
  };
8285
8293
  readonly audience: {
8286
- readonly type: "array";
8287
- readonly items: {
8288
- readonly oneOf: [{
8289
- readonly type: "string";
8290
- }, {
8291
- readonly $ref: "#/$defs/Audience";
8292
- }];
8293
- };
8294
- readonly minItems: 1;
8295
- readonly description: "Intended audiences for the presentation. Each item accepts either:\n- A string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Audience object for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.audiences.records[] → catalogs.audiences.source → default catalog at https://www.pptx.gallery/audiences.";
8296
- readonly examples: [["executives"], ["board", "c-suite"], ["Series B investors", "https://acme.com/decks/audiences/acme-board.json"], [{
8294
+ readonly oneOf: [{
8295
+ readonly type: "string";
8296
+ }, {
8297
+ readonly type: "array";
8298
+ readonly items: {
8299
+ readonly oneOf: [{
8300
+ readonly type: "string";
8301
+ }, {
8302
+ readonly $ref: "#/$defs/Audience";
8303
+ }];
8304
+ };
8305
+ readonly minItems: 1;
8306
+ }];
8307
+ readonly description: "Intended audiences for the presentation. Accepts either:\n- A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference.\n- An array of string shorthands and/or inline Audience objects for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.audiences.records[] → catalogs.audiences.source → default catalog at https://www.pptx.gallery/audiences.";
8308
+ readonly examples: ["executives", "Biology Students and Wildlife Enthusiasts", ["executives"], ["board", "c-suite"], ["Series B investors", "https://acme.com/decks/audiences/acme-board.json"], [{
8297
8309
  readonly id: "executives";
8298
8310
  readonly attentionBudgetMinutes: 20;
8299
8311
  }, {
@@ -8309,7 +8321,7 @@ declare const schemaEntries: readonly [{
8309
8321
  }, {
8310
8322
  readonly $ref: "#/$defs/Purpose";
8311
8323
  }];
8312
- readonly description: "Primary goal of the presentation. Accepts either:\n- A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Purpose object for custom purpose metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-purpose/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.purposes.records[] → catalogs.purposes.source → default catalog at https://www.pptx.gallery/purposes.";
8324
+ readonly description: "Primary goal of the presentation. Accepts either:\n- A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Purpose object for custom purpose metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-purpose/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.purposes.records[] → catalogs.purposes.source → default catalog at https://www.pptx.gallery/purposes.";
8313
8325
  readonly examples: ["Raise a Series B round of $30M", "align", "educate", "https://acme.com/decks/purposes/fundraise.json", "pkg:@acme/decks/purposes/fundraise", {
8314
8326
  readonly id: "decide";
8315
8327
  readonly outcome: "Approve the Q4 hiring plan";
@@ -8324,7 +8336,7 @@ declare const schemaEntries: readonly [{
8324
8336
  }, {
8325
8337
  readonly $ref: "#/$defs/Language";
8326
8338
  }];
8327
- readonly description: "Language for the presentation content. Accepts either:\n- A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Language object for custom language metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-language/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.languages.records[] → catalogs.languages.source → default catalog at https://www.pptx.gallery/languages.";
8339
+ readonly description: "Language for the presentation content. Accepts either:\n- A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Language object for custom language metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-language/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.languages.records[] → catalogs.languages.source → default catalog at https://www.pptx.gallery/languages.";
8328
8340
  readonly examples: ["en-US", "en-GB", "es-MX", "ja-JP", "fr", "english", "japanese", "https://acme.com/decks/languages/en-acme.json", "pkg:@acme/decks/languages/en-acme", {
8329
8341
  readonly id: "english";
8330
8342
  readonly bcp47: "en-US";
@@ -8343,7 +8355,7 @@ declare const schemaEntries: readonly [{
8343
8355
  }, {
8344
8356
  readonly $ref: "#/$defs/Tone";
8345
8357
  }];
8346
- readonly description: "Desired tone for the presentation. Accepts either:\n- A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-tone/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.tones.records[] → catalogs.tones.source → default catalog at https://www.pptx.gallery/tones.";
8358
+ readonly description: "Desired tone for the presentation. Accepts either:\n- A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-tone/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.tones.records[] → catalogs.tones.source → default catalog at https://www.pptx.gallery/tones.";
8347
8359
  readonly examples: ["formal", "casual", "inspirational", "technical", "persuasive", "https://acme.com/decks/tones/acme-voice.json", "pkg:@acme/decks/tones/acme-voice", {
8348
8360
  readonly id: "formal";
8349
8361
  readonly voiceCues: ["Use precise, concise language."];
@@ -8388,7 +8400,7 @@ declare const schemaEntries: readonly [{
8388
8400
  }, {
8389
8401
  readonly $ref: "#/$defs/Narrative";
8390
8402
  }];
8391
- readonly description: "Structured storyline describing the deck's arc and beats. Resolves to the 'id' of a 'narratives' catalog record.\n\nAccepts two forms:\n- String shorthand for the common case: 'narrative = \"classic-story\"'. Accepts a bare id (lowercase kebab-case), an HTTPS URL pointing at a record file, or a 'pkg:' reference to a locally-installed package.\n- Object form for inline overrides or fully custom narratives: 'narrative = { id: \"classic-story\", beats: [...] }'. The object shape mirrors https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nResolution order: inline catalogs.narratives.records[] → catalogs.narratives.source → default catalog at https://www.pptx.gallery/narratives. Unknown ids produce a validation warning, not an error.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside the narrative object.";
8403
+ readonly description: "Structured storyline describing the deck's arc and beats. Resolves to the 'id' of a 'narratives' catalog record.\n\nAccepts two forms:\n- String shorthand for the common case: 'narrative = \"classic-story\"'. Accepts a bare id (lowercase kebab-case), an HTTPS URL pointing at a record file, or a 'pkg:' reference to a locally-installed package.\n- Object form for inline overrides or fully custom narratives: 'narrative = { id: \"classic-story\", beats: [...] }'. The object shape mirrors https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nResolution order: inline catalogs.narratives.records[] → catalogs.narratives.source → default catalog at https://www.pptx.gallery/narratives. Unknown ids produce a validation warning, not an error.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside the narrative object.";
8392
8404
  readonly examples: ["classic-story", "problem-solution", "scqa", "pitch-deck", {
8393
8405
  readonly id: "custom-pitch";
8394
8406
  readonly name: "Custom Pitch";
@@ -8746,7 +8758,7 @@ declare const schemaEntries: readonly [{
8746
8758
  };
8747
8759
  readonly Organization: {
8748
8760
  readonly type: "object";
8749
- readonly description: "An organization associated with the presentation — typically the presenting company, but also hosts, partners, clients, or sponsors. Surfaced on cover slides, footers, and brand bars; the primary organization's logo is the default deck logo unless overridden by design.logo.";
8761
+ readonly description: "An organization associated with the presentation — typically the presenting company, but also hosts, partners, clients, or sponsors. Surfaced on cover slides, footers, and brand bars; the primary organization's logo is the default deck logo unless overridden by design.logo.";
8750
8762
  readonly required: ["id", "name"];
8751
8763
  readonly properties: {
8752
8764
  readonly id: {
@@ -8857,7 +8869,7 @@ declare const schemaEntries: readonly [{
8857
8869
  };
8858
8870
  readonly Socials: {
8859
8871
  readonly type: "object";
8860
- readonly description: "Social media handles or URLs, keyed by platform id from the 'socialPlatforms' catalog. Each value is a string — either a full URL or a platform handle (e.g., '@acme'). The catalog record for each platform carries the URL pattern, handle prefix, brand color, and themed icons used by renderers.\n\nKeys resolve to the 'id' of a 'socialPlatforms' catalog record. Resolution order: inline catalogs.socialPlatforms.records[] → catalogs.socialPlatforms.source → default catalog at https://www.pptx.gallery/social-platforms. Unknown platform keys render with engine fallbacks (the raw value as text). Used both for organization and speaker records.";
8872
+ readonly description: "Social media handles or URLs, keyed by platform id from the 'socialPlatforms' catalog. Each value is a string — either a full URL or a platform handle (e.g., '@acme'). The catalog record for each platform carries the URL pattern, handle prefix, brand color, and themed icons used by renderers.\n\nKeys resolve to the 'id' of a 'socialPlatforms' catalog record. Resolution order: inline catalogs.socialPlatforms.records[] → catalogs.socialPlatforms.source → default catalog at https://www.pptx.gallery/social-platforms. Unknown platform keys render with engine fallbacks (the raw value as text). Used both for organization and speaker records.";
8861
8873
  readonly additionalProperties: {
8862
8874
  readonly type: "string";
8863
8875
  readonly description: "Handle or URL for the platform identified by the property key.";
@@ -8878,7 +8890,7 @@ declare const schemaEntries: readonly [{
8878
8890
  };
8879
8891
  readonly Narrative: {
8880
8892
  readonly type: "object";
8881
- readonly description: "Structured storyline used by AI to shape generated content. Mirrors the OPF Narrative Template record at https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nNarrative declares the deck's intended story arc; slides may opt into beats via Slide.beat. The narrative does not constrain slide structure — validators warn on drift (orphan slides, unused beats) but never error. Slides are the source of truth; narrative is intent that travels with the deck.\n\nWhen 'id' matches a record in the resolved 'narratives' catalog, the inline fields override matching fields on the catalog record (beats merge by beat 'id'). When 'id' doesn't match, this object defines a fully custom inline narrative.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside this object.";
8893
+ readonly description: "Structured storyline used by AI to shape generated content. Mirrors the OPF Narrative Template record at https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nNarrative declares the deck's intended story arc; slides may opt into beats via Slide.beat. The narrative does not constrain slide structure — validators warn on drift (orphan slides, unused beats) but never error. Slides are the source of truth; narrative is intent that travels with the deck.\n\nWhen 'id' matches a record in the resolved 'narratives' catalog, the inline fields override matching fields on the catalog record (beats merge by beat 'id'). When 'id' doesn't match, this object defines a fully custom inline narrative.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside this object.";
8882
8894
  readonly properties: {
8883
8895
  readonly id: {
8884
8896
  readonly type: "string";
@@ -8889,7 +8901,7 @@ declare const schemaEntries: readonly [{
8889
8901
  readonly name: {
8890
8902
  readonly type: "string";
8891
8903
  readonly description: "Human-readable narrative name.";
8892
- readonly examples: ["Classic Story", "Problem → Solution", "SCQA", "Founder Pitch"];
8904
+ readonly examples: ["Classic Story", "Problem → Solution", "SCQA", "Founder Pitch"];
8893
8905
  };
8894
8906
  readonly summary: {
8895
8907
  readonly type: "string";
@@ -8962,7 +8974,7 @@ declare const schemaEntries: readonly [{
8962
8974
  };
8963
8975
  readonly NarrativeBeat: {
8964
8976
  readonly type: "object";
8965
- readonly description: "A single narrative beat — a labeled segment of the story arc with a specific dramatic purpose (e.g. 'hook', 'problem', 'evidence', 'ask'). Slides reference beats via Slide.beat. Beats may also carry slide-blueprint hints (slideType, layoutHint, thoughtCues, instructions) that guide the assigned slide.\n\nMirrors the Beat definition in narrative.schema.json (https://openpresentation.org/schema/opf-narrative/v1) so library entries and inline OPF beats are interchangeable.";
8977
+ readonly description: "A single narrative beat — a labeled segment of the story arc with a specific dramatic purpose (e.g. 'hook', 'problem', 'evidence', 'ask'). Slides reference beats via Slide.beat. Beats may also carry slide-blueprint hints (slideType, layoutHint, thoughtCues, instructions) that guide the assigned slide.\n\nMirrors the Beat definition in narrative.schema.json (https://openpresentation.org/schema/opf-narrative/v1) so library entries and inline OPF beats are interchangeable.";
8966
8978
  readonly required: ["id", "name"];
8967
8979
  readonly properties: {
8968
8980
  readonly id: {
@@ -8983,7 +8995,7 @@ declare const schemaEntries: readonly [{
8983
8995
  };
8984
8996
  readonly instructions: {
8985
8997
  readonly type: "string";
8986
- readonly description: "Short author-facing instruction for the beat — typically one phrase. Complements 'description' with a concise directive.";
8998
+ readonly description: "Short author-facing instruction for the beat — typically one phrase. Complements 'description' with a concise directive.";
8987
8999
  readonly examples: ["Capture audience attention", "Introduce problem", "Detail implementation", "Inspire & conclude"];
8988
9000
  };
8989
9001
  readonly slideCount: {
@@ -8998,7 +9010,7 @@ declare const schemaEntries: readonly [{
8998
9010
  };
8999
9011
  readonly layoutHint: {
9000
9012
  readonly type: "string";
9001
- readonly description: "Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout — against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.";
9013
+ readonly description: "Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout — against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.";
9002
9014
  readonly examples: ["section-divider", "title-slide", "title-left", "two-column", "text-left"];
9003
9015
  };
9004
9016
  readonly thoughtCues: {
@@ -9410,12 +9422,12 @@ declare const schemaEntries: readonly [{
9410
9422
  };
9411
9423
  readonly major: {
9412
9424
  readonly type: "string";
9413
- readonly description: "Heading (major) font family — mirrors the OOXML majorFont entry. Pairs with 'minor'.";
9425
+ readonly description: "Heading (major) font family — mirrors the OOXML majorFont entry. Pairs with 'minor'.";
9414
9426
  readonly examples: ["Aptos Display", "Calibri", "Microsoft YaHei", "Arial Black"];
9415
9427
  };
9416
9428
  readonly minor: {
9417
9429
  readonly type: "string";
9418
- readonly description: "Body (minor) font family — mirrors the OOXML minorFont entry. Pairs with 'major'.";
9430
+ readonly description: "Body (minor) font family — mirrors the OOXML minorFont entry. Pairs with 'major'.";
9419
9431
  readonly examples: ["Aptos", "Calibri", "Microsoft YaHei", "Arial"];
9420
9432
  };
9421
9433
  readonly type: {
@@ -9852,7 +9864,7 @@ declare const schemaEntries: readonly [{
9852
9864
  };
9853
9865
  readonly layout: {
9854
9866
  readonly type: "string";
9855
- readonly description: "Optional slide layout reference. Resolves to the 'id' of a 'layouts' catalog record. When omitted, engines infer a layout from the slide's root payload or promoted region keys. Accepts a bare id (lowercase kebab-case, e.g. 'title-subtitle'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.\n\nResolution order: inline catalogs.layouts.records[] → catalogs.layouts.source → default catalog at https://www.pptx.gallery/layouts.";
9867
+ readonly description: "Optional slide layout reference. Resolves to the 'id' of a 'layouts' catalog record. When omitted, engines infer a layout from the slide's root payload or promoted region keys. Accepts a bare id (lowercase kebab-case, e.g. 'title-subtitle'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.\n\nResolution order: inline catalogs.layouts.records[] → catalogs.layouts.source → default catalog at https://www.pptx.gallery/layouts.";
9856
9868
  readonly examples: ["title", "title-subtitle", "text-2x", "chart-3x", "image-bleed", "blank", "https://acme.com/decks/layouts/cover.json", "pkg:@acme/decks/layouts/cover"];
9857
9869
  };
9858
9870
  readonly title: {
@@ -9886,7 +9898,7 @@ declare const schemaEntries: readonly [{
9886
9898
  readonly items: {
9887
9899
  readonly $ref: "#/$defs/ListItem";
9888
9900
  };
9889
- readonly description: "Full-slide generic list payload. Presence of this field infers type 'list'.";
9901
+ readonly description: "Full-slide generic list payload. Presence of this field infers type 'list'. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for layout-agnostic blocks.";
9890
9902
  };
9891
9903
  readonly bullets: {
9892
9904
  readonly type: "array";
@@ -9946,7 +9958,7 @@ declare const schemaEntries: readonly [{
9946
9958
  readonly items: {
9947
9959
  readonly $ref: "#/$defs/ContentPayload";
9948
9960
  };
9949
- readonly description: "Layout-agnostic content blocks rendered together as a composed payload when exact placement is unspecified.";
9961
+ readonly description: "Layout-agnostic content blocks rendered together as a composed payload when exact placement is unspecified. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for equivalent blocks.";
9950
9962
  };
9951
9963
  readonly design: {
9952
9964
  readonly $ref: "#/$defs/Design";
@@ -10786,7 +10798,7 @@ declare const schemaEntries: readonly [{
10786
10798
  };
10787
10799
  readonly Catalogs: {
10788
10800
  readonly type: "object";
10789
- readonly description: "Catalog overrides for the in-document references. Every property is optional. The default catalog for a kind lives at https://www.pptx.gallery/<kind> (e.g. https://www.pptx.gallery/narratives, https://www.pptx.gallery/themes). For each kind, declaring a 'source' replaces the default registry and/or 'records' adds inline records that take precedence over anything fetched from a source.\n\nResolution order for any reference (e.g. narrative, design.theme): inline catalogs.<kind>.records[] → catalogs.<kind>.source → default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. References that are themselves URLs or 'pkg:' references skip the catalog lookup and resolve directly.";
10801
+ readonly description: "Catalog overrides for the in-document references. Every property is optional. The default catalog for a kind lives at https://www.pptx.gallery/<kind> (e.g. https://www.pptx.gallery/narratives, https://www.pptx.gallery/themes). For each kind, declaring a 'source' replaces the default registry and/or 'records' adds inline records that take precedence over anything fetched from a source.\n\nResolution order for any reference (e.g. narrative, design.theme): inline catalogs.<kind>.records[] → catalogs.<kind>.source → default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. References that are themselves URLs or 'pkg:' references skip the catalog lookup and resolve directly.";
10790
10802
  readonly properties: {
10791
10803
  readonly narratives: {
10792
10804
  readonly $ref: "#/$defs/CatalogEntry";
@@ -10873,7 +10885,7 @@ declare const schemaEntries: readonly [{
10873
10885
  readonly schema: {
10874
10886
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
10875
10887
  readonly $id: "https://openpresentation.org/schema/opf-audience/v1";
10876
- readonly title: "OPF Audience";
10888
+ readonly title: "Audience";
10877
10889
  readonly description: "Schema for audience records in the pptx.gallery library. Each record names an audience archetype (e.g. 'executives', 'engineering-team', 'investors') and carries seniority, technical-fluency, decision-power, and attention-budget hints used by AI-driven generation. Audiences are referenced from OPF documents via audience; the engine resolves the reference against catalogs.audiences (inline) → catalogs.audiences.source → the default catalog at https://www.pptx.gallery/audiences. The audience field also accepts free-form strings; this catalog is for engine-aware audience archetypes that carry generation hints.";
10878
10890
  readonly type: "object";
10879
10891
  readonly required: ["$schema", "id", "name"];
@@ -10977,7 +10989,7 @@ declare const schemaEntries: readonly [{
10977
10989
  readonly schema: {
10978
10990
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
10979
10991
  readonly $id: "https://openpresentation.org/schema/opf-purpose/v1";
10980
- readonly title: "OPF Purpose";
10992
+ readonly title: "Purpose";
10981
10993
  readonly description: "Schema for purpose records in the pptx.gallery library. Each record names a presentation objective such as informing, aligning, persuading, driving a decision, or selling. Purposes are referenced from OPF documents via purpose; the engine resolves the reference against catalogs.purposes (inline) → catalogs.purposes.source → the default catalog at https://www.pptx.gallery/purposes. The purpose field also accepts free-form strings and inline Purpose objects.";
10982
10994
  readonly type: "object";
10983
10995
  readonly required: ["$schema", "id", "name"];
@@ -11068,7 +11080,7 @@ declare const schemaEntries: readonly [{
11068
11080
  readonly schema: {
11069
11081
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
11070
11082
  readonly $id: "https://openpresentation.org/schema/opf-tone/v1";
11071
- readonly title: "OPF Tone";
11083
+ readonly title: "Tone";
11072
11084
  readonly description: "Schema for tone records in the pptx.gallery library. Each record names a presentation tone (e.g. 'formal', 'casual', 'inspirational') and carries voice cues, anti-patterns, and sample phrases that AI-driven generation uses to shape output. Tones are referenced from OPF documents via tone; the engine resolves the reference against catalogs.tones (inline) → catalogs.tones.source → the default catalog at https://www.pptx.gallery/tones.";
11073
11085
  readonly type: "object";
11074
11086
  readonly required: ["$schema", "id", "name"];
@@ -11168,7 +11180,7 @@ declare const schemaEntries: readonly [{
11168
11180
  readonly schema: {
11169
11181
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
11170
11182
  readonly $id: "https://openpresentation.org/schema/opf-theme/v1";
11171
- readonly title: "OPF Theme";
11183
+ readonly title: "Theme";
11172
11184
  readonly description: "Schema for theme records in the pptx.gallery library. Each theme is a small, named bundle that pairs a color scheme, a font scheme, a default theme-controlled background, and a slide size. Themes are referenced from OPF documents via design.theme or design.theme.id; the engine resolves the reference against catalogs.themes (inline) → catalogs.themes.source → the default catalog at https://www.pptx.gallery/themes. Inline overrides on design.colorScheme / design.fontScheme / design.background / design.dimensions take precedence over a resolved theme.";
11173
11185
  readonly type: "object";
11174
11186
  readonly required: ["$schema", "id", "name"];
@@ -11280,7 +11292,7 @@ declare const schemaEntries: readonly [{
11280
11292
  readonly schema: {
11281
11293
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
11282
11294
  readonly $id: "https://openpresentation.org/schema/opf-layout/v1";
11283
- readonly title: "OPF Slide Layout";
11295
+ readonly title: "Slide Layout";
11284
11296
  readonly description: "Schema for slide-layout records in the pptx.gallery library. Each record describes a semantic slide layout — what regions it exposes and what content kinds those regions are intended to hold. Layouts are referenced from OPF documents via Slide.layout; the engine resolves the reference against catalogs.layouts (inline) → catalogs.layouts.source → the default catalog at https://www.pptx.gallery/layouts. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.";
11285
11297
  readonly type: "object";
11286
11298
  readonly required: ["$schema", "id", "name"];
@@ -11447,7 +11459,7 @@ declare const schemaEntries: readonly [{
11447
11459
  readonly schema: {
11448
11460
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
11449
11461
  readonly $id: "https://openpresentation.org/schema/opf-chart-type/v1";
11450
- readonly title: "OPF Chart Type";
11462
+ readonly title: "Chart Type";
11451
11463
  readonly description: "Schema for chart-type records in the pptx.gallery catalog. Each record describes a named chart variant, its Open XML mapping, its series/category cardinality, the column structure of the underlying workbook, and a small sample dataset suitable for previews. Chart types are referenced from OPF chart content payloads; the engine resolves the reference against catalogs.chartTypes (inline) -> catalogs.chartTypes.source -> the default catalog at https://www.pptx.gallery/chart-types.";
11452
11464
  readonly type: "object";
11453
11465
  readonly additionalProperties: false;
@@ -11756,7 +11768,7 @@ declare const schemaEntries: readonly [{
11756
11768
  readonly schema: {
11757
11769
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
11758
11770
  readonly $id: "https://openpresentation.org/schema/opf-narrative/v1";
11759
- readonly title: "OPF Narrative Template";
11771
+ readonly title: "Narrative Template";
11760
11772
  readonly description: "Schema for narrative template files in the openpresentation.org catalog. Each template describes a named story arc (e.g. 'problem-solution', 'scqa') as an ordered list of beats. Templates are referenced from OPF documents via narrative — either as a bare id string (e.g. 'classic-story') or as an inline object whose shape matches this schema (sans '$schema').";
11761
11773
  readonly type: "object";
11762
11774
  readonly required: ["$schema", "id", "name", "beats"];
@@ -11905,8 +11917,8 @@ declare const schemaEntries: readonly [{
11905
11917
  readonly schema: {
11906
11918
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
11907
11919
  readonly $id: "https://openpresentation.org/schema/opf-social-platform/v1";
11908
- readonly title: "OPF Social Platform";
11909
- readonly description: "Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform — its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records are referenced from OPF documents indirectly: the property keys of any Socials object (Organization.socials, Speaker.socials) match record ids, and renderers use the catalog record to format URLs and pick icons. The engine resolves references against catalogs.socialPlatforms (inline) → catalogs.socialPlatforms.source → the default catalog at https://www.pptx.gallery/social-platforms.";
11920
+ readonly title: "Social Platform";
11921
+ readonly description: "Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform — its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records are referenced from OPF documents indirectly: the property keys of any Socials object (Organization.socials, Speaker.socials) match record ids, and renderers use the catalog record to format URLs and pick icons. The engine resolves references against catalogs.socialPlatforms (inline) → catalogs.socialPlatforms.source → the default catalog at https://www.pptx.gallery/social-platforms.";
11910
11922
  readonly type: "object";
11911
11923
  readonly required: ["$schema", "id", "name"];
11912
11924
  readonly properties: {
@@ -11918,7 +11930,7 @@ declare const schemaEntries: readonly [{
11918
11930
  readonly id: {
11919
11931
  readonly type: "string";
11920
11932
  readonly pattern: "^[a-z][a-z0-9-]*$";
11921
- readonly description: "Stable slug used by OPF documents to reference this platform — appears as a property key on Socials objects. Lowercase kebab-case.";
11933
+ readonly description: "Stable slug used by OPF documents to reference this platform — appears as a property key on Socials objects. Lowercase kebab-case.";
11922
11934
  readonly examples: ["linkedin", "x", "github", "youtube", "instagram", "facebook", "tiktok", "threads", "mastodon", "bluesky"];
11923
11935
  };
11924
11936
  readonly name: {
@@ -11928,7 +11940,7 @@ declare const schemaEntries: readonly [{
11928
11940
  };
11929
11941
  readonly summary: {
11930
11942
  readonly type: "string";
11931
- readonly description: "One-sentence positioning of the platform — what it's used for and who's on it.";
11943
+ readonly description: "One-sentence positioning of the platform — what it's used for and who's on it.";
11932
11944
  readonly examples: ["Professional social network for individuals and companies.", "Real-time microblog for news, opinions, and discussion."];
11933
11945
  };
11934
11946
  readonly description: {
@@ -11939,7 +11951,7 @@ declare const schemaEntries: readonly [{
11939
11951
  readonly baseUrl: {
11940
11952
  readonly type: "string";
11941
11953
  readonly format: "uri";
11942
- readonly description: "Canonical base URL of the platform — used as the prefix when normalizing handles to full URLs.";
11954
+ readonly description: "Canonical base URL of the platform — used as the prefix when normalizing handles to full URLs.";
11943
11955
  readonly examples: ["https://linkedin.com", "https://x.com", "https://github.com", "https://youtube.com"];
11944
11956
  };
11945
11957
  readonly profileUrlPattern: {
@@ -12019,7 +12031,7 @@ declare const schemaEntries: readonly [{
12019
12031
  readonly schema: {
12020
12032
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
12021
12033
  readonly $id: "https://openpresentation.org/schema/opf-language/v1";
12022
- readonly title: "OPF Language";
12034
+ readonly title: "Language";
12023
12035
  readonly description: "Schema for language records in the pptx.gallery library. Each record names a presentation language, carries a BCP-47 language tag, and pairs it with sensible default font schemes for PowerPoint and Google Slides output. Languages are referenced from OPF documents via language; the engine resolves the reference against catalogs.languages (inline) → catalogs.languages.source → the default catalog at https://www.pptx.gallery/languages. The presentation language field also accepts BCP-47 tags directly or inline Language objects for engine-aware language records that carry default-font hints.";
12024
12036
  readonly type: "object";
12025
12037
  readonly required: ["$schema", "id", "name", "bcp47"];
@@ -12121,7 +12133,7 @@ declare const schemaEntries: readonly [{
12121
12133
  readonly schema: {
12122
12134
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
12123
12135
  readonly $id: "https://openpresentation.org/schema/opf-color-scheme/v1";
12124
- readonly title: "OPF Color Scheme";
12136
+ readonly title: "Color Scheme";
12125
12137
  readonly description: "Schema for color-scheme records in the pptx.gallery library. Each scheme is a named palette with the twelve PowerPoint color slots (six accents, two darks, two lights, plus hyperlink and followed-hyperlink), suitable for being mapped directly into OOXML theme XML. Color schemes are referenced from OPF documents via design.colorScheme or design.colorScheme.id; the engine resolves the reference against catalogs.colorSchemes (inline) -> catalogs.colorSchemes.source -> the default catalog at https://www.pptx.gallery/color-schemes. Slot overrides on design.colorScheme take precedence over the resolved scheme.\n\nThe slot fields here mirror the inline-override fields on the in-document ColorScheme type (in opf.schema.json), so library entries and inline OPF overrides are interchangeable.";
12126
12138
  readonly type: "object";
12127
12139
  readonly required: ["$schema", "id", "name"];
@@ -12252,7 +12264,7 @@ declare const schemaEntries: readonly [{
12252
12264
  readonly schema: {
12253
12265
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
12254
12266
  readonly $id: "https://openpresentation.org/schema/opf-font-scheme/v1";
12255
- readonly title: "OPF Font Scheme";
12267
+ readonly title: "Font Scheme";
12256
12268
  readonly description: "Schema for font-scheme records in the pptx.gallery library. Each scheme pairs a major (heading) and minor (body) font family in the OOXML majorFont/minorFont sense, scoped to a target app (PowerPoint or Google Slides) and a language family (Latin, East Asian, or Complex Script). Font schemes are referenced from OPF documents via design.fontScheme or design.fontScheme.id; the engine resolves the reference against catalogs.fontSchemes (inline) → catalogs.fontSchemes.source → the default catalog at https://www.pptx.gallery/font-schemes. Role overrides on design.fontScheme (heading, body, accent, code) take precedence over the resolved scheme.";
12257
12269
  readonly type: "object";
12258
12270
  readonly required: ["$schema", "id", "name", "major", "minor"];