@openpresentation/opf 0.1.0

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 (424) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -0
  3. package/dist/catalogs.d.ts +33933 -0
  4. package/dist/catalogs.js +19113 -0
  5. package/dist/catalogs.js.map +1 -0
  6. package/dist/index.d.ts +4 -0
  7. package/dist/index.js +25815 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/schemas.d.ts +12361 -0
  10. package/dist/schemas.js +6266 -0
  11. package/dist/schemas.js.map +1 -0
  12. package/dist/spec/catalogs/audiences/all-hands.json +23 -0
  13. package/dist/spec/catalogs/audiences/board.json +22 -0
  14. package/dist/spec/catalogs/audiences/candidates.json +23 -0
  15. package/dist/spec/catalogs/audiences/customers.json +23 -0
  16. package/dist/spec/catalogs/audiences/engineering-team.json +23 -0
  17. package/dist/spec/catalogs/audiences/executives.json +23 -0
  18. package/dist/spec/catalogs/audiences/index.json +67 -0
  19. package/dist/spec/catalogs/audiences/investors.json +23 -0
  20. package/dist/spec/catalogs/audiences/marketing-team.json +23 -0
  21. package/dist/spec/catalogs/audiences/regulators.json +23 -0
  22. package/dist/spec/catalogs/audiences/sales-team.json +23 -0
  23. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-2x.json +90 -0
  24. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-3x.json +102 -0
  25. package/dist/spec/catalogs/chart-types/100pct-bullet-bar.json +78 -0
  26. package/dist/spec/catalogs/chart-types/100pct-bullet-column-2x.json +90 -0
  27. package/dist/spec/catalogs/chart-types/100pct-bullet-column-3x.json +102 -0
  28. package/dist/spec/catalogs/chart-types/100pct-bullet-column.json +78 -0
  29. package/dist/spec/catalogs/chart-types/100pct-progress-bar.json +99 -0
  30. package/dist/spec/catalogs/chart-types/100pct-stacked-area-2x.json +100 -0
  31. package/dist/spec/catalogs/chart-types/100pct-stacked-area-3x.json +122 -0
  32. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-2x.json +83 -0
  33. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-3x.json +99 -0
  34. package/dist/spec/catalogs/chart-types/100pct-stacked-column-2x.json +89 -0
  35. package/dist/spec/catalogs/chart-types/100pct-stacked-column-3x.json +107 -0
  36. package/dist/spec/catalogs/chart-types/area.json +77 -0
  37. package/dist/spec/catalogs/chart-types/australia.json +70 -0
  38. package/dist/spec/catalogs/chart-types/bar.json +67 -0
  39. package/dist/spec/catalogs/chart-types/box-and-whisker-2x.json +130 -0
  40. package/dist/spec/catalogs/chart-types/box-and-whisker-3x.json +162 -0
  41. package/dist/spec/catalogs/chart-types/box-and-whisker.json +98 -0
  42. package/dist/spec/catalogs/chart-types/bullet-bar-2x.json +88 -0
  43. package/dist/spec/catalogs/chart-types/bullet-bar-3x.json +100 -0
  44. package/dist/spec/catalogs/chart-types/bullet-bar.json +76 -0
  45. package/dist/spec/catalogs/chart-types/bullet-column-2x.json +88 -0
  46. package/dist/spec/catalogs/chart-types/bullet-column-3x.json +100 -0
  47. package/dist/spec/catalogs/chart-types/bullet-column.json +76 -0
  48. package/dist/spec/catalogs/chart-types/canada.json +80 -0
  49. package/dist/spec/catalogs/chart-types/clustered-bar-2x.json +83 -0
  50. package/dist/spec/catalogs/chart-types/clustered-column.json +89 -0
  51. package/dist/spec/catalogs/chart-types/column.json +71 -0
  52. package/dist/spec/catalogs/chart-types/dot-plot-2x.json +98 -0
  53. package/dist/spec/catalogs/chart-types/dot-plot-3x.json +123 -0
  54. package/dist/spec/catalogs/chart-types/dot-plot-4x.json +148 -0
  55. package/dist/spec/catalogs/chart-types/dot-plot-5x.json +173 -0
  56. package/dist/spec/catalogs/chart-types/dot-plot-6x.json +198 -0
  57. package/dist/spec/catalogs/chart-types/dot-plot.json +73 -0
  58. package/dist/spec/catalogs/chart-types/doughnut.json +57 -0
  59. package/dist/spec/catalogs/chart-types/dumbbell.json +119 -0
  60. package/dist/spec/catalogs/chart-types/filled-radar.json +70 -0
  61. package/dist/spec/catalogs/chart-types/funnel.json +64 -0
  62. package/dist/spec/catalogs/chart-types/histogram.json +145 -0
  63. package/dist/spec/catalogs/chart-types/index.json +843 -0
  64. package/dist/spec/catalogs/chart-types/line-2x.json +99 -0
  65. package/dist/spec/catalogs/chart-types/line-3x.json +121 -0
  66. package/dist/spec/catalogs/chart-types/line-with-high-low-and-markers.json +143 -0
  67. package/dist/spec/catalogs/chart-types/line-with-high-low.json +143 -0
  68. package/dist/spec/catalogs/chart-types/line-with-markers-2x.json +100 -0
  69. package/dist/spec/catalogs/chart-types/line-with-markers-3x.json +122 -0
  70. package/dist/spec/catalogs/chart-types/line-with-markers.json +78 -0
  71. package/dist/spec/catalogs/chart-types/line.json +77 -0
  72. package/dist/spec/catalogs/chart-types/pareto.json +163 -0
  73. package/dist/spec/catalogs/chart-types/pie.json +57 -0
  74. package/dist/spec/catalogs/chart-types/radar-with-markers.json +70 -0
  75. package/dist/spec/catalogs/chart-types/radar.json +70 -0
  76. package/dist/spec/catalogs/chart-types/scatter.json +91 -0
  77. package/dist/spec/catalogs/chart-types/sparkline-2x.json +137 -0
  78. package/dist/spec/catalogs/chart-types/sparkline-3x.json +173 -0
  79. package/dist/spec/catalogs/chart-types/sparkline-4x.json +209 -0
  80. package/dist/spec/catalogs/chart-types/sparkline-5x.json +245 -0
  81. package/dist/spec/catalogs/chart-types/sparkline-6x.json +281 -0
  82. package/dist/spec/catalogs/chart-types/sparkline.json +101 -0
  83. package/dist/spec/catalogs/chart-types/stacked-area-2x.json +100 -0
  84. package/dist/spec/catalogs/chart-types/stacked-area-3x.json +122 -0
  85. package/dist/spec/catalogs/chart-types/stacked-bar-2x.json +83 -0
  86. package/dist/spec/catalogs/chart-types/stacked-bar-3x.json +99 -0
  87. package/dist/spec/catalogs/chart-types/stacked-column-2x.json +89 -0
  88. package/dist/spec/catalogs/chart-types/stacked-column-3x.json +107 -0
  89. package/dist/spec/catalogs/chart-types/stacked-line-2x.json +100 -0
  90. package/dist/spec/catalogs/chart-types/stacked-line-3x.json +122 -0
  91. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-2x.json +101 -0
  92. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-3x.json +123 -0
  93. package/dist/spec/catalogs/chart-types/treemap-2x.json +95 -0
  94. package/dist/spec/catalogs/chart-types/treemap-3x.json +116 -0
  95. package/dist/spec/catalogs/chart-types/treemap.json +66 -0
  96. package/dist/spec/catalogs/chart-types/united-kindom.json +62 -0
  97. package/dist/spec/catalogs/chart-types/united-states.json +76 -0
  98. package/dist/spec/catalogs/chart-types/waterfall.json +70 -0
  99. package/dist/spec/catalogs/chart-types/world.json +82 -0
  100. package/dist/spec/catalogs/color-schemes/black-and-white.json +17 -0
  101. package/dist/spec/catalogs/color-schemes/bold-red.json +17 -0
  102. package/dist/spec/catalogs/color-schemes/boost.json +17 -0
  103. package/dist/spec/catalogs/color-schemes/burnt-orange.json +17 -0
  104. package/dist/spec/catalogs/color-schemes/cool-horizon.json +17 -0
  105. package/dist/spec/catalogs/color-schemes/corporate-blue.json +17 -0
  106. package/dist/spec/catalogs/color-schemes/deep-purple.json +17 -0
  107. package/dist/spec/catalogs/color-schemes/forest-green.json +17 -0
  108. package/dist/spec/catalogs/color-schemes/golden-yellow.json +17 -0
  109. package/dist/spec/catalogs/color-schemes/index.json +77 -0
  110. package/dist/spec/catalogs/color-schemes/luxury.json +17 -0
  111. package/dist/spec/catalogs/color-schemes/pastel-red.json +17 -0
  112. package/dist/spec/catalogs/color-schemes/slate-gray.json +17 -0
  113. package/dist/spec/catalogs/color-schemes/steel-blue.json +17 -0
  114. package/dist/spec/catalogs/color-schemes/vibes.json +17 -0
  115. package/dist/spec/catalogs/font-schemes/angsana-new.json +14 -0
  116. package/dist/spec/catalogs/font-schemes/aparajita.json +15 -0
  117. package/dist/spec/catalogs/font-schemes/aptos.json +12 -0
  118. package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +14 -0
  119. package/dist/spec/catalogs/font-schemes/arial.json +12 -0
  120. package/dist/spec/catalogs/font-schemes/batang.json +14 -0
  121. package/dist/spec/catalogs/font-schemes/bookman.json +12 -0
  122. package/dist/spec/catalogs/font-schemes/calibri.json +12 -0
  123. package/dist/spec/catalogs/font-schemes/century-schoolbook.json +12 -0
  124. package/dist/spec/catalogs/font-schemes/consolas.json +12 -0
  125. package/dist/spec/catalogs/font-schemes/constantia.json +12 -0
  126. package/dist/spec/catalogs/font-schemes/courier-new.json +12 -0
  127. package/dist/spec/catalogs/font-schemes/daunpenh.json +14 -0
  128. package/dist/spec/catalogs/font-schemes/david.json +14 -0
  129. package/dist/spec/catalogs/font-schemes/dilleniaupc.json +14 -0
  130. package/dist/spec/catalogs/font-schemes/fangsong.json +14 -0
  131. package/dist/spec/catalogs/font-schemes/garamond.json +12 -0
  132. package/dist/spec/catalogs/font-schemes/gautami.json +14 -0
  133. package/dist/spec/catalogs/font-schemes/georgia.json +12 -0
  134. package/dist/spec/catalogs/font-schemes/gisha.json +15 -0
  135. package/dist/spec/catalogs/font-schemes/grandview.json +12 -0
  136. package/dist/spec/catalogs/font-schemes/gungsuh.json +14 -0
  137. package/dist/spec/catalogs/font-schemes/impact.json +12 -0
  138. package/dist/spec/catalogs/font-schemes/index.json +452 -0
  139. package/dist/spec/catalogs/font-schemes/kalinga.json +14 -0
  140. package/dist/spec/catalogs/font-schemes/kartika.json +14 -0
  141. package/dist/spec/catalogs/font-schemes/khmer-ui.json +14 -0
  142. package/dist/spec/catalogs/font-schemes/latha.json +14 -0
  143. package/dist/spec/catalogs/font-schemes/lucida-sans.json +12 -0
  144. package/dist/spec/catalogs/font-schemes/malgun-gothic.json +14 -0
  145. package/dist/spec/catalogs/font-schemes/mangal.json +17 -0
  146. package/dist/spec/catalogs/font-schemes/meiryo.json +14 -0
  147. package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +14 -0
  148. package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +17 -0
  149. package/dist/spec/catalogs/font-schemes/mingliu.json +14 -0
  150. package/dist/spec/catalogs/font-schemes/miriam.json +14 -0
  151. package/dist/spec/catalogs/font-schemes/montserrat.json +12 -0
  152. package/dist/spec/catalogs/font-schemes/ms-mincho.json +14 -0
  153. package/dist/spec/catalogs/font-schemes/nirmala-ui.json +14 -0
  154. package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +14 -0
  155. package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +15 -0
  156. package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +16 -0
  157. package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +14 -0
  158. package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +15 -0
  159. package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +15 -0
  160. package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +14 -0
  161. package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +14 -0
  162. package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +14 -0
  163. package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +14 -0
  164. package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +14 -0
  165. package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +14 -0
  166. package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +14 -0
  167. package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +14 -0
  168. package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +14 -0
  169. package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +14 -0
  170. package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +14 -0
  171. package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +14 -0
  172. package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +17 -0
  173. package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +14 -0
  174. package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +14 -0
  175. package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +14 -0
  176. package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +14 -0
  177. package/dist/spec/catalogs/font-schemes/noto-sans.json +17 -0
  178. package/dist/spec/catalogs/font-schemes/nyala.json +14 -0
  179. package/dist/spec/catalogs/font-schemes/open-sans.json +12 -0
  180. package/dist/spec/catalogs/font-schemes/pmingliu.json +14 -0
  181. package/dist/spec/catalogs/font-schemes/poppins.json +12 -0
  182. package/dist/spec/catalogs/font-schemes/pt-serif.json +12 -0
  183. package/dist/spec/catalogs/font-schemes/raavi.json +14 -0
  184. package/dist/spec/catalogs/font-schemes/raleway.json +12 -0
  185. package/dist/spec/catalogs/font-schemes/roboto.json +12 -0
  186. package/dist/spec/catalogs/font-schemes/rockwell.json +12 -0
  187. package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +16 -0
  188. package/dist/spec/catalogs/font-schemes/seaford.json +12 -0
  189. package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +12 -0
  190. package/dist/spec/catalogs/font-schemes/segoe-ui.json +12 -0
  191. package/dist/spec/catalogs/font-schemes/shonar-bangla.json +15 -0
  192. package/dist/spec/catalogs/font-schemes/shruti.json +14 -0
  193. package/dist/spec/catalogs/font-schemes/simsun.json +14 -0
  194. package/dist/spec/catalogs/font-schemes/skeena.json +12 -0
  195. package/dist/spec/catalogs/font-schemes/sylfaen.json +15 -0
  196. package/dist/spec/catalogs/font-schemes/tahoma.json +12 -0
  197. package/dist/spec/catalogs/font-schemes/tenorite.json +12 -0
  198. package/dist/spec/catalogs/font-schemes/times-new-roman.json +12 -0
  199. package/dist/spec/catalogs/font-schemes/traditional-arabic.json +16 -0
  200. package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +12 -0
  201. package/dist/spec/catalogs/font-schemes/tunga.json +14 -0
  202. package/dist/spec/catalogs/font-schemes/verdana.json +12 -0
  203. package/dist/spec/catalogs/font-schemes/vrinda.json +14 -0
  204. package/dist/spec/catalogs/font-schemes/yu-gothic.json +14 -0
  205. package/dist/spec/catalogs/languages/afrikaans.json +9 -0
  206. package/dist/spec/catalogs/languages/albanian.json +9 -0
  207. package/dist/spec/catalogs/languages/amharic.json +9 -0
  208. package/dist/spec/catalogs/languages/arabic.json +9 -0
  209. package/dist/spec/catalogs/languages/armenian.json +9 -0
  210. package/dist/spec/catalogs/languages/aymara.json +9 -0
  211. package/dist/spec/catalogs/languages/azerbaijani.json +9 -0
  212. package/dist/spec/catalogs/languages/bengali.json +9 -0
  213. package/dist/spec/catalogs/languages/berber-latin.json +9 -0
  214. package/dist/spec/catalogs/languages/bosnian-latin.json +9 -0
  215. package/dist/spec/catalogs/languages/bulgarian.json +9 -0
  216. package/dist/spec/catalogs/languages/catalan.json +9 -0
  217. package/dist/spec/catalogs/languages/cebuano.json +9 -0
  218. package/dist/spec/catalogs/languages/chinese-simplified.json +9 -0
  219. package/dist/spec/catalogs/languages/chinese-traditional.json +9 -0
  220. package/dist/spec/catalogs/languages/chittagonian.json +9 -0
  221. package/dist/spec/catalogs/languages/croatian.json +9 -0
  222. package/dist/spec/catalogs/languages/czech.json +9 -0
  223. package/dist/spec/catalogs/languages/danish.json +9 -0
  224. package/dist/spec/catalogs/languages/dutch.json +9 -0
  225. package/dist/spec/catalogs/languages/english-au.json +9 -0
  226. package/dist/spec/catalogs/languages/english-ca.json +9 -0
  227. package/dist/spec/catalogs/languages/english-gb.json +9 -0
  228. package/dist/spec/catalogs/languages/english-in.json +9 -0
  229. package/dist/spec/catalogs/languages/english-us.json +9 -0
  230. package/dist/spec/catalogs/languages/english.json +9 -0
  231. package/dist/spec/catalogs/languages/estonian.json +9 -0
  232. package/dist/spec/catalogs/languages/filipino.json +9 -0
  233. package/dist/spec/catalogs/languages/finnish.json +9 -0
  234. package/dist/spec/catalogs/languages/french.json +9 -0
  235. package/dist/spec/catalogs/languages/fulfulde.json +9 -0
  236. package/dist/spec/catalogs/languages/galician.json +9 -0
  237. package/dist/spec/catalogs/languages/georgian.json +9 -0
  238. package/dist/spec/catalogs/languages/german.json +9 -0
  239. package/dist/spec/catalogs/languages/greek.json +9 -0
  240. package/dist/spec/catalogs/languages/gujarati.json +9 -0
  241. package/dist/spec/catalogs/languages/hausa.json +9 -0
  242. package/dist/spec/catalogs/languages/hebrew.json +9 -0
  243. package/dist/spec/catalogs/languages/hindi.json +9 -0
  244. package/dist/spec/catalogs/languages/hungarian.json +9 -0
  245. package/dist/spec/catalogs/languages/igbo.json +9 -0
  246. package/dist/spec/catalogs/languages/index.json +565 -0
  247. package/dist/spec/catalogs/languages/indonesian.json +9 -0
  248. package/dist/spec/catalogs/languages/italian.json +9 -0
  249. package/dist/spec/catalogs/languages/japanese.json +9 -0
  250. package/dist/spec/catalogs/languages/kannada.json +9 -0
  251. package/dist/spec/catalogs/languages/kazakh.json +9 -0
  252. package/dist/spec/catalogs/languages/khmer.json +9 -0
  253. package/dist/spec/catalogs/languages/kinyarwanda.json +9 -0
  254. package/dist/spec/catalogs/languages/korean.json +9 -0
  255. package/dist/spec/catalogs/languages/kurmanji.json +9 -0
  256. package/dist/spec/catalogs/languages/latvian.json +9 -0
  257. package/dist/spec/catalogs/languages/lithuanian.json +9 -0
  258. package/dist/spec/catalogs/languages/macedonian.json +9 -0
  259. package/dist/spec/catalogs/languages/malagasy.json +9 -0
  260. package/dist/spec/catalogs/languages/malay.json +9 -0
  261. package/dist/spec/catalogs/languages/malayalam.json +9 -0
  262. package/dist/spec/catalogs/languages/maori.json +9 -0
  263. package/dist/spec/catalogs/languages/marathi.json +9 -0
  264. package/dist/spec/catalogs/languages/mongolian.json +9 -0
  265. package/dist/spec/catalogs/languages/nepali.json +9 -0
  266. package/dist/spec/catalogs/languages/norwegian.json +9 -0
  267. package/dist/spec/catalogs/languages/odia.json +9 -0
  268. package/dist/spec/catalogs/languages/oromo.json +9 -0
  269. package/dist/spec/catalogs/languages/pashto.json +9 -0
  270. package/dist/spec/catalogs/languages/persian.json +9 -0
  271. package/dist/spec/catalogs/languages/polish.json +9 -0
  272. package/dist/spec/catalogs/languages/portuguese.json +9 -0
  273. package/dist/spec/catalogs/languages/punjabi-gurmukhi.json +9 -0
  274. package/dist/spec/catalogs/languages/punjabi-shahmukhi.json +9 -0
  275. package/dist/spec/catalogs/languages/romanian.json +9 -0
  276. package/dist/spec/catalogs/languages/russian.json +9 -0
  277. package/dist/spec/catalogs/languages/serbian-cyrillic.json +9 -0
  278. package/dist/spec/catalogs/languages/serbian-latin.json +9 -0
  279. package/dist/spec/catalogs/languages/shona.json +9 -0
  280. package/dist/spec/catalogs/languages/slovak.json +9 -0
  281. package/dist/spec/catalogs/languages/slovenian.json +9 -0
  282. package/dist/spec/catalogs/languages/somali.json +9 -0
  283. package/dist/spec/catalogs/languages/spanish.json +9 -0
  284. package/dist/spec/catalogs/languages/swahili.json +9 -0
  285. package/dist/spec/catalogs/languages/swedish.json +9 -0
  286. package/dist/spec/catalogs/languages/tagalog.json +9 -0
  287. package/dist/spec/catalogs/languages/tajik.json +9 -0
  288. package/dist/spec/catalogs/languages/tamil.json +9 -0
  289. package/dist/spec/catalogs/languages/telugu.json +9 -0
  290. package/dist/spec/catalogs/languages/thai.json +9 -0
  291. package/dist/spec/catalogs/languages/turkish.json +9 -0
  292. package/dist/spec/catalogs/languages/ukrainian.json +9 -0
  293. package/dist/spec/catalogs/languages/urdu.json +9 -0
  294. package/dist/spec/catalogs/languages/uzbek-latin.json +9 -0
  295. package/dist/spec/catalogs/languages/vietnamese-quoc-ngu.json +9 -0
  296. package/dist/spec/catalogs/languages/xhosa.json +9 -0
  297. package/dist/spec/catalogs/languages/yoruba.json +9 -0
  298. package/dist/spec/catalogs/languages/zulu.json +9 -0
  299. package/dist/spec/catalogs/layouts/blank.json +6 -0
  300. package/dist/spec/catalogs/layouts/chart-1x.json +16 -0
  301. package/dist/spec/catalogs/layouts/chart-2x.json +22 -0
  302. package/dist/spec/catalogs/layouts/chart-3x.json +28 -0
  303. package/dist/spec/catalogs/layouts/code-1x.json +16 -0
  304. package/dist/spec/catalogs/layouts/extract/canonical.json +487 -0
  305. package/dist/spec/catalogs/layouts/image-1x.json +16 -0
  306. package/dist/spec/catalogs/layouts/image-2x.json +22 -0
  307. package/dist/spec/catalogs/layouts/image-3x.json +28 -0
  308. package/dist/spec/catalogs/layouts/image-bleed.json +10 -0
  309. package/dist/spec/catalogs/layouts/index.json +147 -0
  310. package/dist/spec/catalogs/layouts/list-1x.json +13 -0
  311. package/dist/spec/catalogs/layouts/list-2x.json +16 -0
  312. package/dist/spec/catalogs/layouts/list-3x.json +19 -0
  313. package/dist/spec/catalogs/layouts/list-4x.json +22 -0
  314. package/dist/spec/catalogs/layouts/list-5x.json +25 -0
  315. package/dist/spec/catalogs/layouts/list-6x.json +28 -0
  316. package/dist/spec/catalogs/layouts/media-1x.json +16 -0
  317. package/dist/spec/catalogs/layouts/number-1x.json +13 -0
  318. package/dist/spec/catalogs/layouts/number-2x.json +16 -0
  319. package/dist/spec/catalogs/layouts/number-3x.json +19 -0
  320. package/dist/spec/catalogs/layouts/number-4x.json +22 -0
  321. package/dist/spec/catalogs/layouts/number-5x.json +25 -0
  322. package/dist/spec/catalogs/layouts/number-6x.json +28 -0
  323. package/dist/spec/catalogs/layouts/table-1x.json +16 -0
  324. package/dist/spec/catalogs/layouts/text-1x.json +13 -0
  325. package/dist/spec/catalogs/layouts/text-2x.json +16 -0
  326. package/dist/spec/catalogs/layouts/text-3x.json +19 -0
  327. package/dist/spec/catalogs/layouts/title-subtitle.json +13 -0
  328. package/dist/spec/catalogs/layouts/title.json +10 -0
  329. package/dist/spec/catalogs/narratives/board-meeting.json +192 -0
  330. package/dist/spec/catalogs/narratives/business-narrative.json +87 -0
  331. package/dist/spec/catalogs/narratives/business-review.json +119 -0
  332. package/dist/spec/catalogs/narratives/capacity-planning.json +88 -0
  333. package/dist/spec/catalogs/narratives/challenge-resolution.json +80 -0
  334. package/dist/spec/catalogs/narratives/classic-story.json +78 -0
  335. package/dist/spec/catalogs/narratives/company-intro.json +96 -0
  336. package/dist/spec/catalogs/narratives/conference-talk.json +54 -0
  337. package/dist/spec/catalogs/narratives/early-startup-pitch.json +119 -0
  338. package/dist/spec/catalogs/narratives/educate.json +95 -0
  339. package/dist/spec/catalogs/narratives/employee-review.json +87 -0
  340. package/dist/spec/catalogs/narratives/failure-analysis.json +104 -0
  341. package/dist/spec/catalogs/narratives/focus.json +120 -0
  342. package/dist/spec/catalogs/narratives/golden-circle.json +50 -0
  343. package/dist/spec/catalogs/narratives/index.json +358 -0
  344. package/dist/spec/catalogs/narratives/innovation.json +96 -0
  345. package/dist/spec/catalogs/narratives/justice.json +112 -0
  346. package/dist/spec/catalogs/narratives/marketing-strategy.json +111 -0
  347. package/dist/spec/catalogs/narratives/performance-improvement-plan.json +87 -0
  348. package/dist/spec/catalogs/narratives/performance-review.json +111 -0
  349. package/dist/spec/catalogs/narratives/persuade.json +94 -0
  350. package/dist/spec/catalogs/narratives/persuasive-sales.json +87 -0
  351. package/dist/spec/catalogs/narratives/pitch-deck.json +107 -0
  352. package/dist/spec/catalogs/narratives/problem-solution.json +61 -0
  353. package/dist/spec/catalogs/narratives/product-launch.json +104 -0
  354. package/dist/spec/catalogs/narratives/project-proposal.json +104 -0
  355. package/dist/spec/catalogs/narratives/qbr.json +85 -0
  356. package/dist/spec/catalogs/narratives/rags-to-riches.json +80 -0
  357. package/dist/spec/catalogs/narratives/reveal.json +87 -0
  358. package/dist/spec/catalogs/narratives/scqa.json +55 -0
  359. package/dist/spec/catalogs/narratives/status-update.json +72 -0
  360. package/dist/spec/catalogs/narratives/strategic-advisory.json +85 -0
  361. package/dist/spec/catalogs/narratives/strategic-narrative.json +61 -0
  362. package/dist/spec/catalogs/narratives/survey-analysis.json +104 -0
  363. package/dist/spec/catalogs/narratives/survival-story.json +103 -0
  364. package/dist/spec/catalogs/narratives/transformation-arc.json +50 -0
  365. package/dist/spec/catalogs/narratives/trend-analysis.json +79 -0
  366. package/dist/spec/catalogs/narratives/underdog-victory.json +87 -0
  367. package/dist/spec/catalogs/narratives/venture-pitch.json +109 -0
  368. package/dist/spec/catalogs/narratives/weekly-progress.json +103 -0
  369. package/dist/spec/catalogs/purposes/align.json +16 -0
  370. package/dist/spec/catalogs/purposes/decide.json +16 -0
  371. package/dist/spec/catalogs/purposes/educate.json +16 -0
  372. package/dist/spec/catalogs/purposes/index.json +61 -0
  373. package/dist/spec/catalogs/purposes/inform.json +16 -0
  374. package/dist/spec/catalogs/purposes/persuade.json +16 -0
  375. package/dist/spec/catalogs/purposes/pitch.json +16 -0
  376. package/dist/spec/catalogs/purposes/plan.json +16 -0
  377. package/dist/spec/catalogs/purposes/report.json +16 -0
  378. package/dist/spec/catalogs/purposes/sell.json +16 -0
  379. package/dist/spec/catalogs/social-platforms/bluesky.json +14 -0
  380. package/dist/spec/catalogs/social-platforms/facebook.json +14 -0
  381. package/dist/spec/catalogs/social-platforms/github.json +15 -0
  382. package/dist/spec/catalogs/social-platforms/index.json +68 -0
  383. package/dist/spec/catalogs/social-platforms/instagram.json +13 -0
  384. package/dist/spec/catalogs/social-platforms/linkedin.json +15 -0
  385. package/dist/spec/catalogs/social-platforms/mastodon.json +14 -0
  386. package/dist/spec/catalogs/social-platforms/threads.json +13 -0
  387. package/dist/spec/catalogs/social-platforms/tiktok.json +14 -0
  388. package/dist/spec/catalogs/social-platforms/x.json +14 -0
  389. package/dist/spec/catalogs/social-platforms/youtube.json +14 -0
  390. package/dist/spec/catalogs/themes/bold.json +13 -0
  391. package/dist/spec/catalogs/themes/classic.json +13 -0
  392. package/dist/spec/catalogs/themes/dark.json +13 -0
  393. package/dist/spec/catalogs/themes/index.json +31 -0
  394. package/dist/spec/catalogs/themes/minimal.json +13 -0
  395. package/dist/spec/catalogs/tones/authoritative.json +31 -0
  396. package/dist/spec/catalogs/tones/casual.json +31 -0
  397. package/dist/spec/catalogs/tones/conversational.json +31 -0
  398. package/dist/spec/catalogs/tones/formal.json +31 -0
  399. package/dist/spec/catalogs/tones/index.json +49 -0
  400. package/dist/spec/catalogs/tones/inspirational.json +31 -0
  401. package/dist/spec/catalogs/tones/persuasive.json +32 -0
  402. package/dist/spec/catalogs/tones/technical.json +31 -0
  403. package/dist/spec/openapi.yaml +776 -0
  404. package/dist/spec/reference/engine-defaults.json +35 -0
  405. package/dist/spec/schemas/audience.schema.json +156 -0
  406. package/dist/spec/schemas/chart-type.schema.json +537 -0
  407. package/dist/spec/schemas/color-scheme.schema.json +200 -0
  408. package/dist/spec/schemas/font-scheme.schema.json +174 -0
  409. package/dist/spec/schemas/language.schema.json +158 -0
  410. package/dist/spec/schemas/layout.schema.json +280 -0
  411. package/dist/spec/schemas/narrative.schema.json +207 -0
  412. package/dist/spec/schemas/opf.schema.json +2537 -0
  413. package/dist/spec/schemas/purpose.schema.json +92 -0
  414. package/dist/spec/schemas/social-platform.schema.json +184 -0
  415. package/dist/spec/schemas/theme.schema.json +168 -0
  416. package/dist/spec/schemas/tone.schema.json +146 -0
  417. package/dist/types.d.ts +1102 -0
  418. package/dist/types.js +3 -0
  419. package/dist/types.js.map +1 -0
  420. package/dist/validator-Be5EzqAt.d.ts +2700 -0
  421. package/dist/validator.d.ts +3 -0
  422. package/dist/validator.js +6694 -0
  423. package/dist/validator.js.map +1 -0
  424. package/package.json +80 -0
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-social-platform/v1",
3
+ "id": "youtube",
4
+ "name": "YouTube",
5
+ "summary": "Video-sharing platform with creator and brand channels.",
6
+ "description": "YouTube channels are addressable via the '@<handle>' form. The handlePrefix is '@' but it is part of the URL itself.",
7
+ "baseUrl": "https://youtube.com",
8
+ "profileUrlPattern": "https://youtube.com/@{handle}",
9
+ "handlePrefix": "@",
10
+ "handleExample": "@acme",
11
+ "brandColor": "#FF0000",
12
+ "tags": ["video", "creator", "brand"]
13
+ }
14
+
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-theme/v1",
3
+ "id": "bold",
4
+ "name": "Bold",
5
+ "background": {
6
+ "type": "theme",
7
+ "slot": "light1"
8
+ },
9
+ "colorScheme": "burnt-orange",
10
+ "description": "A vibrant, high-energy theme with bold colors and a dynamic, attention-grabbing style. Great for presentations that need to stand out.",
11
+ "fontScheme": "impact",
12
+ "dimensions": "widescreen"
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-theme/v1",
3
+ "id": "classic",
4
+ "name": "Classic",
5
+ "background": {
6
+ "type": "theme",
7
+ "slot": "light1"
8
+ },
9
+ "colorScheme": "cool-horizon",
10
+ "description": "A timeless, clean, and versatile theme with balanced color contrasts and classic typography. Ideal for professional, readable presentations.",
11
+ "fontScheme": "tenorite",
12
+ "dimensions": "widescreen"
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-theme/v1",
3
+ "id": "dark",
4
+ "name": "Dark",
5
+ "background": {
6
+ "type": "theme",
7
+ "slot": "dark1"
8
+ },
9
+ "colorScheme": "boost",
10
+ "description": "A rich dark-mode theme with bold contrast and modern style. Great for moody, high-impact presentations.",
11
+ "fontScheme": "seaford",
12
+ "dimensions": "widescreen"
13
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-theme-index/v1",
3
+ "version": "1",
4
+ "description": "Catalog of themes available in the openpresentation.org catalog. Each entry is a lightweight summary; full theme records live in the per-id JSON files alongside this index.",
5
+ "records": [
6
+ {
7
+ "id": "bold",
8
+ "name": "Bold",
9
+ "description": "A vibrant, high-energy theme with bold colors and a dynamic, attention-grabbing style. Great for presentations that need to stand out.",
10
+ "file": "bold.json"
11
+ },
12
+ {
13
+ "id": "classic",
14
+ "name": "Classic",
15
+ "description": "A timeless, clean, and versatile theme with balanced color contrasts and classic typography. Ideal for professional, readable presentations.",
16
+ "file": "classic.json"
17
+ },
18
+ {
19
+ "id": "dark",
20
+ "name": "Dark",
21
+ "description": "A rich dark-mode theme with bold contrast and modern style. Great for moody, high-impact presentations.",
22
+ "file": "dark.json"
23
+ },
24
+ {
25
+ "id": "minimal",
26
+ "name": "Minimal",
27
+ "description": "A clean, minimalistic theme with a focus on simplicity and readability. Ideal for professional, straightforward presentations.",
28
+ "file": "minimal.json"
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-theme/v1",
3
+ "id": "minimal",
4
+ "name": "Minimal",
5
+ "background": {
6
+ "type": "theme",
7
+ "slot": "dark2"
8
+ },
9
+ "colorScheme": "cool-horizon",
10
+ "description": "A clean, minimalistic theme with a focus on simplicity and readability. Ideal for professional, straightforward presentations.",
11
+ "fontScheme": "aptos",
12
+ "dimensions": "widescreen"
13
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-tone/v1",
3
+ "id": "authoritative",
4
+ "name": "Authoritative",
5
+ "summary": "Expert, declarative voice for category-defining and analyst-style decks.",
6
+ "description": "Adopt the perspective of someone who's seen the full landscape and is willing to call it. Use plain declaratives — strong claims with the receipts to back them. Step back from internal-only context and frame in terms the wider industry would recognize.",
7
+ "voiceCues": [
8
+ "Use declarative sentences; trust the reader to follow.",
9
+ "Frame in industry-wide terms, not company-internal language.",
10
+ "Cite outside sources — analysts, benchmarks, public peers.",
11
+ "Take a position; avoid 'on the other hand' symmetry without a verdict."
12
+ ],
13
+ "avoid": [
14
+ "Hedging ('we believe', 'in our view') unless deliberately contrasting.",
15
+ "Internal jargon and unexplained acronyms.",
16
+ "First-person plural overload — speak for the work, not the team.",
17
+ "Tentative phrasing that softens strong claims."
18
+ ],
19
+ "samplePhrases": [
20
+ "Agent latency is the bottleneck of the next AI cycle.",
21
+ "Three categories will absorb 80% of enterprise budget; we're built for the second.",
22
+ "The benchmarks are public; the gap holds across every comparable workload."
23
+ ],
24
+ "recommendedNarratives": [
25
+ "strategic-narrative",
26
+ "pitch-deck",
27
+ "conference-talk",
28
+ "marketing-strategy"
29
+ ],
30
+ "tags": ["industry", "category", "analyst"]
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-tone/v1",
3
+ "id": "casual",
4
+ "name": "Casual",
5
+ "summary": "Warm, plain-spoken voice for internal updates and customer storytelling.",
6
+ "description": "Friendly and direct. Use first- and second-person freely; favor short sentences and contractions. Numbers are still welcome — they just sit alongside human-scale framing rather than leading.",
7
+ "voiceCues": [
8
+ "Use first and second person.",
9
+ "Use contractions ('we're', 'it's', 'don't').",
10
+ "Favor short sentences and active voice.",
11
+ "Frame metrics with a human-scale anchor when possible."
12
+ ],
13
+ "avoid": [
14
+ "Stiff corporate jargon.",
15
+ "Long compound sentences.",
16
+ "Overuse of superlatives.",
17
+ "Bureaucratic passive voice."
18
+ ],
19
+ "samplePhrases": [
20
+ "We shipped the new dashboard last week, and customers are already moving over.",
21
+ "Here's where we ended up on hiring this quarter.",
22
+ "It's been a busy month — here's the recap."
23
+ ],
24
+ "recommendedNarratives": [
25
+ "weekly-progress",
26
+ "status-update",
27
+ "company-intro",
28
+ "all-hands"
29
+ ],
30
+ "tags": ["internal", "warm", "conversational"]
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-tone/v1",
3
+ "id": "conversational",
4
+ "name": "Conversational",
5
+ "summary": "Direct, dialog-style voice for podcasts, fireside chats, and small-group reviews.",
6
+ "description": "Sound like one half of a real conversation. Ask questions on the slide and answer them; keep paragraphs short; lean into examples over abstractions. Useful when the deck is meant to support a discussion rather than to lecture.",
7
+ "voiceCues": [
8
+ "Ask a question on the slide, then answer it on the next.",
9
+ "Use second person — speak to the room, not at it.",
10
+ "Lean on stories and concrete examples over abstract framing.",
11
+ "Keep each idea to one short paragraph; let the dialog do the rest."
12
+ ],
13
+ "avoid": [
14
+ "Lecture-style monologue across many bullets.",
15
+ "Hedge-laden academic phrasing.",
16
+ "Stuffing slides — leave room for the discussion.",
17
+ "Inside-baseball references the room may not share."
18
+ ],
19
+ "samplePhrases": [
20
+ "Why now? Two things changed in the last six months.",
21
+ "Here's the part that surprised us — and what we did about it.",
22
+ "If you take one thing from this section, take this."
23
+ ],
24
+ "recommendedNarratives": [
25
+ "all-hands",
26
+ "company-intro",
27
+ "weekly-progress",
28
+ "performance-review"
29
+ ],
30
+ "tags": ["dialog", "podcast", "discussion"]
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-tone/v1",
3
+ "id": "formal",
4
+ "name": "Formal",
5
+ "summary": "Polished, restrained voice for board, investor, and regulator audiences.",
6
+ "description": "Authoritative without being cold. Use third-person constructions, full sentences, and concrete numbers. Avoid hedges and humor that depend on shared in-jokes; rely on clarity and precision to land.",
7
+ "voiceCues": [
8
+ "Use third person and the corporate 'we' sparingly.",
9
+ "Lead with the recommendation, then evidence.",
10
+ "Quote concrete numbers; avoid round-tripping ranges.",
11
+ "Prefer full sentences to bullet fragments on key claims."
12
+ ],
13
+ "avoid": [
14
+ "Slang, idioms, or in-jokes.",
15
+ "Hedging language ('maybe', 'sort of', 'I think').",
16
+ "Marketing superlatives ('world-class', 'best-in-class').",
17
+ "Excessive emoji or exclamation points."
18
+ ],
19
+ "samplePhrases": [
20
+ "Q4 revenue grew 18% year over year, led by enterprise expansion.",
21
+ "We recommend approving the Series B raise at $30M.",
22
+ "Net retention was 124%; gross retention was 96%."
23
+ ],
24
+ "recommendedNarratives": [
25
+ "board-meeting",
26
+ "qbr",
27
+ "scqa",
28
+ "strategic-narrative"
29
+ ],
30
+ "tags": ["business", "executive", "formal"]
31
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-tone-index/v1",
3
+ "version": "1",
4
+ "description": "Catalog of presentation tones available in the openpresentation.org catalog. Each entry is a lightweight summary; full tone records (voice cues, anti-patterns, sample phrases) live in the per-id JSON files alongside this index. Tones are referenced from OPF documents via tone.",
5
+ "records": [
6
+ {
7
+ "id": "formal",
8
+ "name": "Formal",
9
+ "summary": "Polished, restrained voice for board, investor, and regulator audiences.",
10
+ "file": "formal.json"
11
+ },
12
+ {
13
+ "id": "casual",
14
+ "name": "Casual",
15
+ "summary": "Warm, plain-spoken voice for internal updates and customer storytelling.",
16
+ "file": "casual.json"
17
+ },
18
+ {
19
+ "id": "inspirational",
20
+ "name": "Inspirational",
21
+ "summary": "Aspirational, narrative-driven voice for keynotes, founders, and rallying cries.",
22
+ "file": "inspirational.json"
23
+ },
24
+ {
25
+ "id": "technical",
26
+ "name": "Technical",
27
+ "summary": "Precise, evidence-led voice for engineering, research, and product-detail audiences.",
28
+ "file": "technical.json"
29
+ },
30
+ {
31
+ "id": "persuasive",
32
+ "name": "Persuasive",
33
+ "summary": "Argument-led voice for sales, fundraising, and recommendation-driven decks.",
34
+ "file": "persuasive.json"
35
+ },
36
+ {
37
+ "id": "authoritative",
38
+ "name": "Authoritative",
39
+ "summary": "Expert, declarative voice for category-defining and analyst-style decks.",
40
+ "file": "authoritative.json"
41
+ },
42
+ {
43
+ "id": "conversational",
44
+ "name": "Conversational",
45
+ "summary": "Direct, dialog-style voice for podcasts, fireside chats, and small-group reviews.",
46
+ "file": "conversational.json"
47
+ }
48
+ ]
49
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-tone/v1",
3
+ "id": "inspirational",
4
+ "name": "Inspirational",
5
+ "summary": "Aspirational, narrative-driven voice for keynotes, founders, and rallying cries.",
6
+ "description": "Reach for shared belief and possibility, then ground it in something concrete. Use vivid imagery and rhythm; avoid collapsing into hype by always pairing aspiration with a real anchor.",
7
+ "voiceCues": [
8
+ "Open with belief; close with action.",
9
+ "Use rhythm — paired phrases, repetition, deliberate beats.",
10
+ "Pair every aspirational claim with a concrete proof point.",
11
+ "Speak in present tense to make the future feel inevitable."
12
+ ],
13
+ "avoid": [
14
+ "Empty hype without evidence.",
15
+ "Stacked superlatives ('the very best, world-changing, revolutionary').",
16
+ "Cynical or hedging language.",
17
+ "Dense data tables — push numbers into supporting slides."
18
+ ],
19
+ "samplePhrases": [
20
+ "We're building the runtime that makes agents feel instant.",
21
+ "When latency disappears, what becomes possible?",
22
+ "The next decade of software belongs to teams who treat speed as a feature."
23
+ ],
24
+ "recommendedNarratives": [
25
+ "golden-circle",
26
+ "conference-talk",
27
+ "venture-pitch",
28
+ "company-intro"
29
+ ],
30
+ "tags": ["motivational", "keynote", "founder"]
31
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-tone/v1",
3
+ "id": "persuasive",
4
+ "name": "Persuasive",
5
+ "summary": "Argument-led voice for sales, fundraising, and recommendation-driven decks.",
6
+ "description": "Frame every section as an argument that builds toward an ask. Surface objections, answer them, and pair claims with the strongest available proof. Read more like a memo than a report.",
7
+ "voiceCues": [
8
+ "Lead each section with the claim it's making.",
9
+ "Surface the strongest counter-argument and address it.",
10
+ "Pair every claim with proof — customer, benchmark, or analyst.",
11
+ "End on a clear ask with named owner and date."
12
+ ],
13
+ "avoid": [
14
+ "Buried leads.",
15
+ "Symmetrical 'on one hand / on the other' framing without a verdict.",
16
+ "Information for its own sake — every chart should advance the argument.",
17
+ "Passive endings without a clear ask."
18
+ ],
19
+ "samplePhrases": [
20
+ "Adopting our runtime cuts inference latency 8× while preserving accuracy.",
21
+ "The most common objection — 'we'll be locked in' — is addressed by our open OPF spec.",
22
+ "We're asking for a $30M Series B to ship into the enterprise tier."
23
+ ],
24
+ "recommendedNarratives": [
25
+ "pitch-deck",
26
+ "venture-pitch",
27
+ "early-startup-pitch",
28
+ "persuasive-sales",
29
+ "project-proposal"
30
+ ],
31
+ "tags": ["sales", "pitch", "argumentative"]
32
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-tone/v1",
3
+ "id": "technical",
4
+ "name": "Technical",
5
+ "summary": "Precise, evidence-led voice for engineering, research, and product-detail audiences.",
6
+ "description": "Lead with the question or claim, then walk through the mechanism and the numbers. Use exact terminology; assume the audience can handle and prefers it. Diagrams, tables, and benchmarks are first-class.",
7
+ "voiceCues": [
8
+ "State the claim, then the mechanism, then the evidence.",
9
+ "Use exact terminology — don't soften technical terms for general readability.",
10
+ "Quote benchmarks with conditions (cold/warm, p50/p95/p99, dataset, hardware).",
11
+ "Prefer diagrams and tables over prose paragraphs for structural information."
12
+ ],
13
+ "avoid": [
14
+ "Vague claims ('much faster', 'better', 'easier').",
15
+ "Marketing framing without supporting data.",
16
+ "Glossing over caveats and tradeoffs.",
17
+ "Casual register that obscures precision."
18
+ ],
19
+ "samplePhrases": [
20
+ "p95 inference latency is 38ms on a single A100, down from 312ms on the prior runtime.",
21
+ "We replaced the streaming serializer with a batched protobuf path; throughput rose 4.2× under load.",
22
+ "The result holds for context windows up to 32k tokens; beyond that, see appendix B."
23
+ ],
24
+ "recommendedNarratives": [
25
+ "challenge-resolution",
26
+ "innovation",
27
+ "conference-talk",
28
+ "engineering-update"
29
+ ],
30
+ "tags": ["technical", "engineering", "research"]
31
+ }