@overcrow/mcp 0.0.0-stage → 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 (461) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +90 -2
  3. package/dist/audit/index.js +103 -0
  4. package/dist/audit/lexer.js +417 -0
  5. package/dist/audit/project.js +200 -0
  6. package/dist/audit/rules.js +661 -0
  7. package/dist/bootstrap/download.js +229 -0
  8. package/dist/bootstrap/install.js +280 -0
  9. package/dist/bootstrap/pin.js +85 -0
  10. package/dist/bootstrap/pin.json +119 -0
  11. package/dist/bootstrap/zip.js +258 -0
  12. package/dist/cli.js +200 -0
  13. package/dist/confine.js +244 -0
  14. package/dist/content/docs/en/cli.md +353 -0
  15. package/dist/content/docs/en/dev-channel.md +130 -0
  16. package/dist/content/docs/en/elements.md +469 -0
  17. package/dist/content/docs/en/forms.md +328 -0
  18. package/dist/content/docs/en/guide.md +253 -0
  19. package/dist/content/docs/en/index.md +85 -0
  20. package/dist/content/docs/en/limits.md +241 -0
  21. package/dist/content/docs/en/logic.md +446 -0
  22. package/dist/content/docs/en/manifest.md +381 -0
  23. package/dist/content/docs/en/mcp.md +165 -0
  24. package/dist/content/docs/en/package.md +131 -0
  25. package/dist/content/docs/en/publishing.md +162 -0
  26. package/dist/content/docs/en/reference.md +55 -0
  27. package/dist/content/docs/en/result-shapes.md +332 -0
  28. package/dist/content/docs/en/sdk.md +295 -0
  29. package/dist/content/docs/en/security.md +115 -0
  30. package/dist/content/docs/en/service-reference.md +344 -0
  31. package/dist/content/docs/en/services.md +517 -0
  32. package/dist/content/docs/en/style-properties.md +270 -0
  33. package/dist/content/docs/en/style.md +266 -0
  34. package/dist/content/docs/en/testing.md +400 -0
  35. package/dist/content/docs/en/view.md +338 -0
  36. package/dist/content/docs/en/widgets.md +76 -0
  37. package/dist/content/docs/fr/cli.md +367 -0
  38. package/dist/content/docs/fr/dev-channel.md +140 -0
  39. package/dist/content/docs/fr/elements.md +475 -0
  40. package/dist/content/docs/fr/forms.md +341 -0
  41. package/dist/content/docs/fr/guide.md +264 -0
  42. package/dist/content/docs/fr/index.md +90 -0
  43. package/dist/content/docs/fr/limits.md +244 -0
  44. package/dist/content/docs/fr/logic.md +461 -0
  45. package/dist/content/docs/fr/manifest.md +392 -0
  46. package/dist/content/docs/fr/mcp.md +173 -0
  47. package/dist/content/docs/fr/package.md +139 -0
  48. package/dist/content/docs/fr/publishing.md +172 -0
  49. package/dist/content/docs/fr/reference.md +59 -0
  50. package/dist/content/docs/fr/result-shapes.md +333 -0
  51. package/dist/content/docs/fr/sdk.md +301 -0
  52. package/dist/content/docs/fr/security.md +129 -0
  53. package/dist/content/docs/fr/service-reference.md +346 -0
  54. package/dist/content/docs/fr/services.md +540 -0
  55. package/dist/content/docs/fr/style-properties.md +272 -0
  56. package/dist/content/docs/fr/style.md +281 -0
  57. package/dist/content/docs/fr/testing.md +417 -0
  58. package/dist/content/docs/fr/view.md +352 -0
  59. package/dist/content/docs/fr/widgets.md +81 -0
  60. package/dist/content/examples/clock/LICENSE +21 -0
  61. package/dist/content/examples/clock/README.md +75 -0
  62. package/dist/content/examples/clock/listing.json +19 -0
  63. package/dist/content/examples/clock/locales/en.json +4 -0
  64. package/dist/content/examples/clock/locales/fr.json +4 -0
  65. package/dist/content/examples/clock/logic.ts +85 -0
  66. package/dist/content/examples/clock/manifest.json +44 -0
  67. package/dist/content/examples/clock/package.json +16 -0
  68. package/dist/content/examples/clock/style.ocss +26 -0
  69. package/dist/content/examples/clock/tests/hidden.scenario.json +68 -0
  70. package/dist/content/examples/clock/tests/load-logic.mjs +22 -0
  71. package/dist/content/examples/clock/tests/logic.test.mjs +89 -0
  72. package/dist/content/examples/clock/tests/options.scenario.json +108 -0
  73. package/dist/content/examples/clock/tests/preview.scenario.json +25 -0
  74. package/dist/content/examples/clock/tests/render.scenario.json +94 -0
  75. package/dist/content/examples/clock/tests/summer-time.scenario.json +74 -0
  76. package/dist/content/examples/clock/tests/ticks.scenario.json +120 -0
  77. package/dist/content/examples/clock/tsconfig.json +16 -0
  78. package/dist/content/examples/clock/view.ocml +8 -0
  79. package/dist/content/examples/countdown/LICENSE +20 -0
  80. package/dist/content/examples/countdown/listing.json +10 -0
  81. package/dist/content/examples/countdown/locales/en.json +15 -0
  82. package/dist/content/examples/countdown/locales/fr.json +15 -0
  83. package/dist/content/examples/countdown/logic.ts +179 -0
  84. package/dist/content/examples/countdown/manifest.json +34 -0
  85. package/dist/content/examples/countdown/package.json +15 -0
  86. package/dist/content/examples/countdown/style.ocss +94 -0
  87. package/dist/content/examples/countdown/tsconfig.json +16 -0
  88. package/dist/content/examples/countdown/view.ocml +42 -0
  89. package/dist/content/examples/fps/LICENSE +21 -0
  90. package/dist/content/examples/fps/README.md +64 -0
  91. package/dist/content/examples/fps/listing.json +19 -0
  92. package/dist/content/examples/fps/locales/en.json +11 -0
  93. package/dist/content/examples/fps/locales/fr.json +11 -0
  94. package/dist/content/examples/fps/logic.ts +64 -0
  95. package/dist/content/examples/fps/manifest.json +30 -0
  96. package/dist/content/examples/fps/package.json +16 -0
  97. package/dist/content/examples/fps/style.ocss +31 -0
  98. package/dist/content/examples/fps/tests/label.scenario.json +63 -0
  99. package/dist/content/examples/fps/tests/load-logic.mjs +22 -0
  100. package/dist/content/examples/fps/tests/logic.test.mjs +60 -0
  101. package/dist/content/examples/fps/tests/preview.scenario.json +29 -0
  102. package/dist/content/examples/fps/tests/refused.scenario.json +20 -0
  103. package/dist/content/examples/fps/tests/render.scenario.json +96 -0
  104. package/dist/content/examples/fps/tests/stale.scenario.json +91 -0
  105. package/dist/content/examples/fps/tests/unavailable.scenario.json +111 -0
  106. package/dist/content/examples/fps/tsconfig.json +16 -0
  107. package/dist/content/examples/fps/view.ocml +11 -0
  108. package/dist/content/examples/media/LICENSE +21 -0
  109. package/dist/content/examples/media/README.md +147 -0
  110. package/dist/content/examples/media/listing.json +19 -0
  111. package/dist/content/examples/media/locales/en.json +11 -0
  112. package/dist/content/examples/media/locales/fr.json +11 -0
  113. package/dist/content/examples/media/logic.ts +191 -0
  114. package/dist/content/examples/media/manifest.json +35 -0
  115. package/dist/content/examples/media/package.json +16 -0
  116. package/dist/content/examples/media/style.ocss +148 -0
  117. package/dist/content/examples/media/tests/covers.scenario.json +144 -0
  118. package/dist/content/examples/media/tests/gesture.scenario.json +173 -0
  119. package/dist/content/examples/media/tests/load-logic.mjs +22 -0
  120. package/dist/content/examples/media/tests/logic.test.mjs +176 -0
  121. package/dist/content/examples/media/tests/marquee.scenario.json +127 -0
  122. package/dist/content/examples/media/tests/preview.scenario.json +52 -0
  123. package/dist/content/examples/media/tests/read-only.scenario.json +53 -0
  124. package/dist/content/examples/media/tests/refused.scenario.json +22 -0
  125. package/dist/content/examples/media/tests/refused.test.mjs +31 -0
  126. package/dist/content/examples/media/tests/render.scenario.json +136 -0
  127. package/dist/content/examples/media/tests/states.scenario.json +257 -0
  128. package/dist/content/examples/media/tests/unavailable.scenario.json +120 -0
  129. package/dist/content/examples/media/tsconfig.json +16 -0
  130. package/dist/content/examples/media/view.ocml +41 -0
  131. package/dist/content/examples/notes/LICENSE +21 -0
  132. package/dist/content/examples/notes/README.md +219 -0
  133. package/dist/content/examples/notes/listing.json +19 -0
  134. package/dist/content/examples/notes/locales/en.json +25 -0
  135. package/dist/content/examples/notes/locales/fr.json +25 -0
  136. package/dist/content/examples/notes/logic.ts +799 -0
  137. package/dist/content/examples/notes/manifest.json +40 -0
  138. package/dist/content/examples/notes/package.json +16 -0
  139. package/dist/content/examples/notes/style.ocss +469 -0
  140. package/dist/content/examples/notes/tests/checks.scenario.json +237 -0
  141. package/dist/content/examples/notes/tests/create.scenario.json +260 -0
  142. package/dist/content/examples/notes/tests/delete.scenario.json +342 -0
  143. package/dist/content/examples/notes/tests/drafts.scenario.json +714 -0
  144. package/dist/content/examples/notes/tests/editor.scenario.json +232 -0
  145. package/dist/content/examples/notes/tests/frame.scenario.json +93 -0
  146. package/dist/content/examples/notes/tests/interactive.scenario.json +344 -0
  147. package/dist/content/examples/notes/tests/limits.scenario.json +1351 -0
  148. package/dist/content/examples/notes/tests/load-logic.mjs +22 -0
  149. package/dist/content/examples/notes/tests/logic.test.mjs +514 -0
  150. package/dist/content/examples/notes/tests/preview.scenario.json +99 -0
  151. package/dist/content/examples/notes/tests/read-only.scenario.json +105 -0
  152. package/dist/content/examples/notes/tests/refused.scenario.json +33 -0
  153. package/dist/content/examples/notes/tests/save.scenario.json +378 -0
  154. package/dist/content/examples/notes/tests/states.scenario.json +640 -0
  155. package/dist/content/examples/notes/tests/typing.scenario.json +562 -0
  156. package/dist/content/examples/notes/tests/unavailable.scenario.json +246 -0
  157. package/dist/content/examples/notes/tsconfig.json +16 -0
  158. package/dist/content/examples/notes/view.ocml +154 -0
  159. package/dist/content/examples/performance/LICENSE +21 -0
  160. package/dist/content/examples/performance/README.md +134 -0
  161. package/dist/content/examples/performance/listing.json +19 -0
  162. package/dist/content/examples/performance/locales/en.json +20 -0
  163. package/dist/content/examples/performance/locales/fr.json +20 -0
  164. package/dist/content/examples/performance/logic.ts +210 -0
  165. package/dist/content/examples/performance/manifest.json +83 -0
  166. package/dist/content/examples/performance/package.json +16 -0
  167. package/dist/content/examples/performance/style.ocss +75 -0
  168. package/dist/content/examples/performance/tests/fahrenheit.scenario.json +110 -0
  169. package/dist/content/examples/performance/tests/horizontal.scenario.json +96 -0
  170. package/dist/content/examples/performance/tests/load-logic.mjs +22 -0
  171. package/dist/content/examples/performance/tests/logic.test.mjs +226 -0
  172. package/dist/content/examples/performance/tests/menu.scenario.json +170 -0
  173. package/dist/content/examples/performance/tests/no-fps-source.scenario.json +47 -0
  174. package/dist/content/examples/performance/tests/preview.scenario.json +45 -0
  175. package/dist/content/examples/performance/tests/refused.scenario.json +20 -0
  176. package/dist/content/examples/performance/tests/refused.test.mjs +19 -0
  177. package/dist/content/examples/performance/tests/region.scenario.json +89 -0
  178. package/dist/content/examples/performance/tests/render.scenario.json +112 -0
  179. package/dist/content/examples/performance/tests/sources.scenario.json +151 -0
  180. package/dist/content/examples/performance/tests/stale.scenario.json +111 -0
  181. package/dist/content/examples/performance/tests/telemetry-only.scenario.json +44 -0
  182. package/dist/content/examples/performance/tests/thresholds.scenario.json +147 -0
  183. package/dist/content/examples/performance/tests/waiting.scenario.json +105 -0
  184. package/dist/content/examples/performance/tsconfig.json +16 -0
  185. package/dist/content/examples/performance/view.ocml +18 -0
  186. package/dist/content/examples/playervox-journal/LICENSE +21 -0
  187. package/dist/content/examples/playervox-journal/README.md +150 -0
  188. package/dist/content/examples/playervox-journal/listing.json +19 -0
  189. package/dist/content/examples/playervox-journal/locales/en.json +25 -0
  190. package/dist/content/examples/playervox-journal/locales/fr.json +25 -0
  191. package/dist/content/examples/playervox-journal/logic.ts +556 -0
  192. package/dist/content/examples/playervox-journal/manifest.json +19 -0
  193. package/dist/content/examples/playervox-journal/package.json +16 -0
  194. package/dist/content/examples/playervox-journal/style.ocss +142 -0
  195. package/dist/content/examples/playervox-journal/tests/changes.scenario.json +482 -0
  196. package/dist/content/examples/playervox-journal/tests/delete.scenario.json +432 -0
  197. package/dist/content/examples/playervox-journal/tests/frame.scenario.json +169 -0
  198. package/dist/content/examples/playervox-journal/tests/load-logic.mjs +22 -0
  199. package/dist/content/examples/playervox-journal/tests/logic.test.mjs +349 -0
  200. package/dist/content/examples/playervox-journal/tests/paging.scenario.json +428 -0
  201. package/dist/content/examples/playervox-journal/tests/preview.scenario.json +184 -0
  202. package/dist/content/examples/playervox-journal/tests/read-only.scenario.json +157 -0
  203. package/dist/content/examples/playervox-journal/tests/refused.scenario.json +39 -0
  204. package/dist/content/examples/playervox-journal/tests/scale.scenario.json +286 -0
  205. package/dist/content/examples/playervox-journal/tests/signed-out.scenario.json +134 -0
  206. package/dist/content/examples/playervox-journal/tests/states.scenario.json +741 -0
  207. package/dist/content/examples/playervox-journal/tests/unavailable.scenario.json +183 -0
  208. package/dist/content/examples/playervox-journal/tsconfig.json +16 -0
  209. package/dist/content/examples/playervox-journal/view.ocml +52 -0
  210. package/dist/content/examples/playervox-rating/LICENSE +21 -0
  211. package/dist/content/examples/playervox-rating/README.md +166 -0
  212. package/dist/content/examples/playervox-rating/listing.json +19 -0
  213. package/dist/content/examples/playervox-rating/locales/en.json +35 -0
  214. package/dist/content/examples/playervox-rating/locales/fr.json +35 -0
  215. package/dist/content/examples/playervox-rating/logic.ts +581 -0
  216. package/dist/content/examples/playervox-rating/manifest.json +19 -0
  217. package/dist/content/examples/playervox-rating/package.json +16 -0
  218. package/dist/content/examples/playervox-rating/style.ocss +333 -0
  219. package/dist/content/examples/playervox-rating/tests/account.scenario.json +125 -0
  220. package/dist/content/examples/playervox-rating/tests/bounds.scenario.json +73 -0
  221. package/dist/content/examples/playervox-rating/tests/draft.scenario.json +199 -0
  222. package/dist/content/examples/playervox-rating/tests/form.scenario.json +142 -0
  223. package/dist/content/examples/playervox-rating/tests/load-logic.mjs +22 -0
  224. package/dist/content/examples/playervox-rating/tests/logic.test.mjs +346 -0
  225. package/dist/content/examples/playervox-rating/tests/offline.scenario.json +142 -0
  226. package/dist/content/examples/playervox-rating/tests/preview.scenario.json +44 -0
  227. package/dist/content/examples/playervox-rating/tests/publish-keyboard.scenario.json +221 -0
  228. package/dist/content/examples/playervox-rating/tests/publish-pointer.scenario.json +314 -0
  229. package/dist/content/examples/playervox-rating/tests/read-only.scenario.json +70 -0
  230. package/dist/content/examples/playervox-rating/tests/refused.scenario.json +45 -0
  231. package/dist/content/examples/playervox-rating/tests/states.scenario.json +362 -0
  232. package/dist/content/examples/playervox-rating/tsconfig.json +16 -0
  233. package/dist/content/examples/playervox-rating/view.ocml +62 -0
  234. package/dist/content/examples/playervox-reviews/LICENSE +21 -0
  235. package/dist/content/examples/playervox-reviews/README.md +194 -0
  236. package/dist/content/examples/playervox-reviews/listing.json +19 -0
  237. package/dist/content/examples/playervox-reviews/locales/en.json +32 -0
  238. package/dist/content/examples/playervox-reviews/locales/fr.json +32 -0
  239. package/dist/content/examples/playervox-reviews/logic.ts +822 -0
  240. package/dist/content/examples/playervox-reviews/manifest.json +30 -0
  241. package/dist/content/examples/playervox-reviews/package.json +16 -0
  242. package/dist/content/examples/playervox-reviews/style.ocss +260 -0
  243. package/dist/content/examples/playervox-reviews/tests/account.scenario.json +249 -0
  244. package/dist/content/examples/playervox-reviews/tests/bounds.scenario.json +336 -0
  245. package/dist/content/examples/playervox-reviews/tests/changes.scenario.json +515 -0
  246. package/dist/content/examples/playervox-reviews/tests/filter.scenario.json +400 -0
  247. package/dist/content/examples/playervox-reviews/tests/frame.scenario.json +185 -0
  248. package/dist/content/examples/playervox-reviews/tests/keyboard.scenario.json +188 -0
  249. package/dist/content/examples/playervox-reviews/tests/load-logic.mjs +22 -0
  250. package/dist/content/examples/playervox-reviews/tests/logic.test.mjs +559 -0
  251. package/dist/content/examples/playervox-reviews/tests/offline-start.scenario.json +152 -0
  252. package/dist/content/examples/playervox-reviews/tests/offline.scenario.json +311 -0
  253. package/dist/content/examples/playervox-reviews/tests/paging.scenario.json +497 -0
  254. package/dist/content/examples/playervox-reviews/tests/preview.scenario.json +286 -0
  255. package/dist/content/examples/playervox-reviews/tests/reading.scenario.json +591 -0
  256. package/dist/content/examples/playervox-reviews/tests/refused.scenario.json +54 -0
  257. package/dist/content/examples/playervox-reviews/tests/scale.scenario.json +303 -0
  258. package/dist/content/examples/playervox-reviews/tests/states.scenario.json +700 -0
  259. package/dist/content/examples/playervox-reviews/tests/unavailable.scenario.json +192 -0
  260. package/dist/content/examples/playervox-reviews/tsconfig.json +16 -0
  261. package/dist/content/examples/playervox-reviews/view.ocml +110 -0
  262. package/dist/content/examples/playervox-score/LICENSE +21 -0
  263. package/dist/content/examples/playervox-score/README.md +131 -0
  264. package/dist/content/examples/playervox-score/listing.json +19 -0
  265. package/dist/content/examples/playervox-score/locales/en.json +23 -0
  266. package/dist/content/examples/playervox-score/locales/fr.json +23 -0
  267. package/dist/content/examples/playervox-score/logic.ts +430 -0
  268. package/dist/content/examples/playervox-score/manifest.json +47 -0
  269. package/dist/content/examples/playervox-score/package.json +16 -0
  270. package/dist/content/examples/playervox-score/style.ocss +247 -0
  271. package/dist/content/examples/playervox-score/tests/grades.scenario.json +279 -0
  272. package/dist/content/examples/playervox-score/tests/load-logic.mjs +22 -0
  273. package/dist/content/examples/playervox-score/tests/logic.test.mjs +229 -0
  274. package/dist/content/examples/playervox-score/tests/options.scenario.json +302 -0
  275. package/dist/content/examples/playervox-score/tests/preview.scenario.json +68 -0
  276. package/dist/content/examples/playervox-score/tests/pulse.scenario.json +157 -0
  277. package/dist/content/examples/playervox-score/tests/refused.scenario.json +21 -0
  278. package/dist/content/examples/playervox-score/tests/signed-out.scenario.json +46 -0
  279. package/dist/content/examples/playervox-score/tests/states.scenario.json +450 -0
  280. package/dist/content/examples/playervox-score/tests/unavailable.scenario.json +84 -0
  281. package/dist/content/examples/playervox-score/tsconfig.json +16 -0
  282. package/dist/content/examples/playervox-score/view.ocml +51 -0
  283. package/dist/content/examples/session/LICENSE +21 -0
  284. package/dist/content/examples/session/README.md +57 -0
  285. package/dist/content/examples/session/listing.json +19 -0
  286. package/dist/content/examples/session/locales/en.json +3 -0
  287. package/dist/content/examples/session/locales/fr.json +3 -0
  288. package/dist/content/examples/session/logic.ts +26 -0
  289. package/dist/content/examples/session/manifest.json +19 -0
  290. package/dist/content/examples/session/package.json +16 -0
  291. package/dist/content/examples/session/style.ocss +16 -0
  292. package/dist/content/examples/session/tests/hidden.scenario.json +45 -0
  293. package/dist/content/examples/session/tests/load-logic.mjs +22 -0
  294. package/dist/content/examples/session/tests/logic.test.mjs +37 -0
  295. package/dist/content/examples/session/tests/preview.scenario.json +28 -0
  296. package/dist/content/examples/session/tests/refused.scenario.json +20 -0
  297. package/dist/content/examples/session/tests/refused.test.mjs +16 -0
  298. package/dist/content/examples/session/tests/render.scenario.json +95 -0
  299. package/dist/content/examples/session/tests/ticks.scenario.json +139 -0
  300. package/dist/content/examples/session/tests/unknown.scenario.json +37 -0
  301. package/dist/content/examples/session/tsconfig.json +16 -0
  302. package/dist/content/examples/session/view.ocml +11 -0
  303. package/dist/content/examples/stopwatch/LICENSE +21 -0
  304. package/dist/content/examples/stopwatch/README.md +99 -0
  305. package/dist/content/examples/stopwatch/listing.json +19 -0
  306. package/dist/content/examples/stopwatch/locales/en.json +8 -0
  307. package/dist/content/examples/stopwatch/locales/fr.json +8 -0
  308. package/dist/content/examples/stopwatch/logic.ts +93 -0
  309. package/dist/content/examples/stopwatch/manifest.json +19 -0
  310. package/dist/content/examples/stopwatch/package.json +16 -0
  311. package/dist/content/examples/stopwatch/style.ocss +54 -0
  312. package/dist/content/examples/stopwatch/tests/errors.scenario.json +121 -0
  313. package/dist/content/examples/stopwatch/tests/gesture.scenario.json +154 -0
  314. package/dist/content/examples/stopwatch/tests/hidden.scenario.json +57 -0
  315. package/dist/content/examples/stopwatch/tests/hundredths.scenario.json +173 -0
  316. package/dist/content/examples/stopwatch/tests/load-logic.mjs +22 -0
  317. package/dist/content/examples/stopwatch/tests/logic.test.mjs +99 -0
  318. package/dist/content/examples/stopwatch/tests/preview.scenario.json +36 -0
  319. package/dist/content/examples/stopwatch/tests/read-only.scenario.json +42 -0
  320. package/dist/content/examples/stopwatch/tests/read-only.test.mjs +18 -0
  321. package/dist/content/examples/stopwatch/tests/refused.scenario.json +22 -0
  322. package/dist/content/examples/stopwatch/tests/refused.test.mjs +18 -0
  323. package/dist/content/examples/stopwatch/tests/render.scenario.json +105 -0
  324. package/dist/content/examples/stopwatch/tests/states.scenario.json +246 -0
  325. package/dist/content/examples/stopwatch/tests/unknown.scenario.json +40 -0
  326. package/dist/content/examples/stopwatch/tsconfig.json +16 -0
  327. package/dist/content/examples/stopwatch/view.ocml +29 -0
  328. package/dist/content/examples/twitch-chat/LICENSE +21 -0
  329. package/dist/content/examples/twitch-chat/README.md +283 -0
  330. package/dist/content/examples/twitch-chat/listing.json +19 -0
  331. package/dist/content/examples/twitch-chat/locales/en.json +52 -0
  332. package/dist/content/examples/twitch-chat/locales/fr.json +52 -0
  333. package/dist/content/examples/twitch-chat/logic.ts +887 -0
  334. package/dist/content/examples/twitch-chat/manifest.json +33 -0
  335. package/dist/content/examples/twitch-chat/package.json +16 -0
  336. package/dist/content/examples/twitch-chat/style.ocss +544 -0
  337. package/dist/content/examples/twitch-chat/tests/account.scenario.json +325 -0
  338. package/dist/content/examples/twitch-chat/tests/burst.scenario.json +1866 -0
  339. package/dist/content/examples/twitch-chat/tests/channel-refused.scenario.json +372 -0
  340. package/dist/content/examples/twitch-chat/tests/channel.scenario.json +480 -0
  341. package/dist/content/examples/twitch-chat/tests/draft.scenario.json +279 -0
  342. package/dist/content/examples/twitch-chat/tests/fade.scenario.json +269 -0
  343. package/dist/content/examples/twitch-chat/tests/failures.scenario.json +420 -0
  344. package/dist/content/examples/twitch-chat/tests/favorites.scenario.json +376 -0
  345. package/dist/content/examples/twitch-chat/tests/frame.scenario.json +152 -0
  346. package/dist/content/examples/twitch-chat/tests/lifetime.scenario.json +186 -0
  347. package/dist/content/examples/twitch-chat/tests/load-logic.mjs +22 -0
  348. package/dist/content/examples/twitch-chat/tests/logic.test.mjs +1053 -0
  349. package/dist/content/examples/twitch-chat/tests/passive.scenario.json +536 -0
  350. package/dist/content/examples/twitch-chat/tests/preview.scenario.json +147 -0
  351. package/dist/content/examples/twitch-chat/tests/read-only.scenario.json +202 -0
  352. package/dist/content/examples/twitch-chat/tests/read-only.test.mjs +63 -0
  353. package/dist/content/examples/twitch-chat/tests/refused.scenario.json +65 -0
  354. package/dist/content/examples/twitch-chat/tests/refused.test.mjs +43 -0
  355. package/dist/content/examples/twitch-chat/tests/render.scenario.json +347 -0
  356. package/dist/content/examples/twitch-chat/tests/reply.scenario.json +384 -0
  357. package/dist/content/examples/twitch-chat/tests/send-refused.scenario.json +383 -0
  358. package/dist/content/examples/twitch-chat/tests/send.scenario.json +300 -0
  359. package/dist/content/examples/twitch-chat/tests/states.scenario.json +455 -0
  360. package/dist/content/examples/twitch-chat/tests/unavailable.scenario.json +256 -0
  361. package/dist/content/examples/twitch-chat/tests/unread.scenario.json +997 -0
  362. package/dist/content/examples/twitch-chat/tsconfig.json +16 -0
  363. package/dist/content/examples/twitch-chat/view.ocml +141 -0
  364. package/dist/content/examples/warframe-market/LICENSE +21 -0
  365. package/dist/content/examples/warframe-market/README.md +176 -0
  366. package/dist/content/examples/warframe-market/listing.json +19 -0
  367. package/dist/content/examples/warframe-market/locales/en.json +44 -0
  368. package/dist/content/examples/warframe-market/locales/fr.json +44 -0
  369. package/dist/content/examples/warframe-market/logic.ts +1265 -0
  370. package/dist/content/examples/warframe-market/manifest.json +92 -0
  371. package/dist/content/examples/warframe-market/package.json +16 -0
  372. package/dist/content/examples/warframe-market/style.ocss +422 -0
  373. package/dist/content/examples/warframe-market/tests/bounds.scenario.json +60 -0
  374. package/dist/content/examples/warframe-market/tests/cached.scenario.json +70 -0
  375. package/dist/content/examples/warframe-market/tests/detail.scenario.json +251 -0
  376. package/dist/content/examples/warframe-market/tests/errors.scenario.json +105 -0
  377. package/dist/content/examples/warframe-market/tests/fixtures.json +295 -0
  378. package/dist/content/examples/warframe-market/tests/load-logic.mjs +22 -0
  379. package/dist/content/examples/warframe-market/tests/logic.test.mjs +505 -0
  380. package/dist/content/examples/warframe-market/tests/no-clipboard.scenario.json +104 -0
  381. package/dist/content/examples/warframe-market/tests/passive.scenario.json +87 -0
  382. package/dist/content/examples/warframe-market/tests/preview.scenario.json +146 -0
  383. package/dist/content/examples/warframe-market/tests/refresh.scenario.json +56 -0
  384. package/dist/content/examples/warframe-market/tests/refused.scenario.json +74 -0
  385. package/dist/content/examples/warframe-market/tests/render.scenario.json +210 -0
  386. package/dist/content/examples/warframe-market/tests/search.scenario.json +189 -0
  387. package/dist/content/examples/warframe-market/tests/unavailable.scenario.json +54 -0
  388. package/dist/content/examples/warframe-market/tsconfig.json +16 -0
  389. package/dist/content/examples/warframe-market/view.ocml +116 -0
  390. package/dist/content/examples/weather/LICENSE +20 -0
  391. package/dist/content/examples/weather/listing.json +10 -0
  392. package/dist/content/examples/weather/locales/en.json +9 -0
  393. package/dist/content/examples/weather/locales/fr.json +9 -0
  394. package/dist/content/examples/weather/logic.ts +62 -0
  395. package/dist/content/examples/weather/manifest.json +51 -0
  396. package/dist/content/examples/weather/package.json +15 -0
  397. package/dist/content/examples/weather/style.ocss +29 -0
  398. package/dist/content/examples/weather/tsconfig.json +16 -0
  399. package/dist/content/examples/weather/view.ocml +12 -0
  400. package/dist/content/index.json +3601 -0
  401. package/dist/content/reference/errors.json +1712 -0
  402. package/dist/content/reference/limits.json +1154 -0
  403. package/dist/content/reference/manifest.md +223 -0
  404. package/dist/content/reference/permissions.json +413 -0
  405. package/dist/content/templates/blank/locales/en.json +3 -0
  406. package/dist/content/templates/blank/locales/fr.json +3 -0
  407. package/dist/content/templates/blank/logic.ts +7 -0
  408. package/dist/content/templates/blank/manifest.json +16 -0
  409. package/dist/content/templates/blank/style.ocss +10 -0
  410. package/dist/content/templates/blank/tests/example.scenario.json +10 -0
  411. package/dist/content/templates/blank/view.ocml +6 -0
  412. package/dist/content/templates/chart/locales/en.json +3 -0
  413. package/dist/content/templates/chart/locales/fr.json +3 -0
  414. package/dist/content/templates/chart/logic.ts +27 -0
  415. package/dist/content/templates/chart/manifest.json +16 -0
  416. package/dist/content/templates/chart/style.ocss +27 -0
  417. package/dist/content/templates/chart/tests/example.scenario.json +10 -0
  418. package/dist/content/templates/chart/view.ocml +10 -0
  419. package/dist/content/templates/counter/locales/en.json +4 -0
  420. package/dist/content/templates/counter/locales/fr.json +4 -0
  421. package/dist/content/templates/counter/logic.ts +20 -0
  422. package/dist/content/templates/counter/manifest.json +16 -0
  423. package/dist/content/templates/counter/style.ocss +26 -0
  424. package/dist/content/templates/counter/tests/example.scenario.json +11 -0
  425. package/dist/content/templates/counter/view.ocml +13 -0
  426. package/dist/content/templates/list/locales/en.json +8 -0
  427. package/dist/content/templates/list/locales/fr.json +8 -0
  428. package/dist/content/templates/list/logic.ts +35 -0
  429. package/dist/content/templates/list/manifest.json +16 -0
  430. package/dist/content/templates/list/style.ocss +42 -0
  431. package/dist/content/templates/list/tests/example.scenario.json +10 -0
  432. package/dist/content/templates/list/view.ocml +17 -0
  433. package/dist/content/templates/shared/LICENSE +20 -0
  434. package/dist/content/templates/shared/package.json +14 -0
  435. package/dist/content/templates/shared/tsconfig.json +16 -0
  436. package/dist/content.js +68 -0
  437. package/dist/env.js +156 -0
  438. package/dist/fingerprint.js +32 -0
  439. package/dist/ids.js +27 -0
  440. package/dist/index.js +82 -0
  441. package/dist/knowledge.js +222 -0
  442. package/dist/npm.js +149 -0
  443. package/dist/prompts.js +47 -0
  444. package/dist/resources.js +82 -0
  445. package/dist/run.js +120 -0
  446. package/dist/server.js +43 -0
  447. package/dist/session.js +205 -0
  448. package/dist/sources.js +218 -0
  449. package/dist/text.js +80 -0
  450. package/dist/texts.js +44 -0
  451. package/dist/tools/audit.js +105 -0
  452. package/dist/tools/build.js +453 -0
  453. package/dist/tools/common.js +122 -0
  454. package/dist/tools/docs.js +196 -0
  455. package/dist/tools/preview.js +87 -0
  456. package/dist/tools/project.js +178 -0
  457. package/dist/tools/setup.js +146 -0
  458. package/dist/tools/submission.js +369 -0
  459. package/dist/version.js +3 -0
  460. package/npm-shrinkwrap.json +402 -0
  461. package/package.json +52 -4
@@ -0,0 +1,333 @@
1
+ /* The built-in's layout at 100 %: a 24 px header (title, PlayerVox mark),
2
+ the game's name, a 64 px row (badge, score and caption, or a status),
3
+ and in Interactive mode the form: three 24 px criterion rows, the
4
+ review, the button and its hint. The wrapper draws the panel; the
5
+ content keeps the built-in's 10 × 8 px margin. The width is the user's;
6
+ the height fits the content. */
7
+ .rating {
8
+ flex-direction: column;
9
+ padding: 8px 10px;
10
+ width: 100%;
11
+ }
12
+
13
+ /* OverCrow draws its offline notice over the last 22 px of the content. */
14
+ .offline {
15
+ padding-bottom: 30px;
16
+ }
17
+
18
+ .header {
19
+ flex-direction: row;
20
+ align-items: start;
21
+ column-gap: 6px;
22
+ height: 24px;
23
+ flex-shrink: 0;
24
+ }
25
+
26
+ .title {
27
+ flex-grow: 1;
28
+ flex-shrink: 1;
29
+ min-width: 0px;
30
+ font-family: var(--font-ui);
31
+ font-size: 12px;
32
+ font-weight: 700;
33
+ line-height: 16px;
34
+ color: var(--color-text);
35
+ white-space: nowrap;
36
+ overflow: hidden;
37
+ text-overflow: ellipsis;
38
+ }
39
+
40
+ .mark {
41
+ width: 16px;
42
+ height: 18px;
43
+ margin-left: auto;
44
+ flex-shrink: 0;
45
+ }
46
+
47
+ .game {
48
+ height: 18px;
49
+ flex-shrink: 0;
50
+ font-family: var(--font-ui);
51
+ font-size: 12px;
52
+ line-height: 16px;
53
+ color: var(--color-text-secondary);
54
+ white-space: nowrap;
55
+ overflow: hidden;
56
+ text-overflow: ellipsis;
57
+ }
58
+
59
+ .summary {
60
+ flex-direction: row;
61
+ column-gap: 14px;
62
+ height: 64px;
63
+ flex-shrink: 0;
64
+ }
65
+
66
+ .slot {
67
+ width: 64px;
68
+ height: 64px;
69
+ flex-shrink: 0;
70
+ }
71
+
72
+ .side {
73
+ flex-direction: column;
74
+ flex-grow: 1;
75
+ flex-shrink: 1;
76
+ min-width: 0px;
77
+ }
78
+
79
+ .value {
80
+ margin-top: 8px;
81
+ font-family: var(--font-mono);
82
+ font-size: 25px;
83
+ font-weight: 700;
84
+ line-height: 30px;
85
+ color: var(--color-text);
86
+ white-space: nowrap;
87
+ }
88
+
89
+ .max {
90
+ font-family: var(--font-mono);
91
+ font-size: 12px;
92
+ font-weight: 400;
93
+ color: var(--color-text-muted);
94
+ }
95
+
96
+ .caption {
97
+ margin-top: 6px;
98
+ font-family: var(--font-ui);
99
+ font-size: var(--font-size-small);
100
+ line-height: 14px;
101
+ color: var(--color-text-muted);
102
+ white-space: nowrap;
103
+ overflow: hidden;
104
+ text-overflow: ellipsis;
105
+ }
106
+
107
+ .status {
108
+ margin-top: 18px;
109
+ font-family: var(--font-ui);
110
+ font-size: 12px;
111
+ line-height: 16px;
112
+ color: var(--color-text);
113
+ white-space: nowrap;
114
+ overflow: hidden;
115
+ text-overflow: ellipsis;
116
+ }
117
+
118
+ .hint {
119
+ margin-top: 4px;
120
+ font-family: var(--font-ui);
121
+ font-size: var(--font-size-small);
122
+ line-height: 14px;
123
+ color: var(--color-text-muted);
124
+ }
125
+
126
+ /* The form: shown in Interactive mode only. Hidden, it stays in the view
127
+ and OverCrow keeps the draft its controls hold. */
128
+ .form {
129
+ flex-direction: column;
130
+ margin-top: 8px;
131
+ flex-shrink: 0;
132
+ }
133
+
134
+ .hidden {
135
+ display: none;
136
+ }
137
+
138
+ .notice {
139
+ margin-bottom: 6px;
140
+ font-family: var(--font-ui);
141
+ font-size: var(--font-size-small);
142
+ line-height: 14px;
143
+ color: var(--color-warning);
144
+ }
145
+
146
+ .criterion {
147
+ flex-direction: row;
148
+ align-items: center;
149
+ column-gap: 8px;
150
+ height: 24px;
151
+ }
152
+
153
+ .criterion-name {
154
+ width: 80px;
155
+ flex-shrink: 0;
156
+ font-family: var(--font-ui);
157
+ font-size: 12px;
158
+ line-height: 16px;
159
+ color: var(--color-text);
160
+ white-space: nowrap;
161
+ overflow: hidden;
162
+ text-overflow: ellipsis;
163
+ }
164
+
165
+ .criterion-slider {
166
+ flex-grow: 1;
167
+ flex-shrink: 1;
168
+ min-width: 30px;
169
+ }
170
+
171
+ .criterion-value {
172
+ width: 30px;
173
+ flex-shrink: 0;
174
+ font-family: var(--font-mono);
175
+ font-size: 12px;
176
+ line-height: 16px;
177
+ text-align: end;
178
+ color: var(--color-text);
179
+ }
180
+
181
+ .eyebrow {
182
+ margin-top: 8px;
183
+ margin-bottom: 4px;
184
+ font-family: var(--font-ui);
185
+ font-size: var(--font-size-caption);
186
+ line-height: 14px;
187
+ letter-spacing: 0.6px;
188
+ color: var(--color-text-muted);
189
+ }
190
+
191
+ .review {
192
+ width: 100%;
193
+ padding: 6px 8px;
194
+ border-radius: var(--radius-sm);
195
+ border: 1px solid var(--color-border);
196
+ background: var(--color-surface-field);
197
+ font-family: var(--font-ui);
198
+ font-size: 12px;
199
+ line-height: 16px;
200
+ color: var(--color-text);
201
+ }
202
+
203
+ .review:focus {
204
+ border: 1px solid var(--color-border-strong);
205
+ }
206
+
207
+ .error {
208
+ margin-top: 6px;
209
+ font-family: var(--font-ui);
210
+ font-size: var(--font-size-small);
211
+ line-height: 14px;
212
+ color: var(--color-warning);
213
+ }
214
+
215
+ .publish {
216
+ margin-top: 8px;
217
+ height: var(--control-height);
218
+ padding: 0px 12px;
219
+ justify-content: center;
220
+ align-items: center;
221
+ align-self: start;
222
+ border-radius: var(--radius-md);
223
+ background: var(--color-surface-raised);
224
+ border: 1px solid var(--color-border-strong);
225
+ }
226
+
227
+ .publish:hover,
228
+ .publish:focus {
229
+ background: var(--color-surface-hover);
230
+ }
231
+
232
+ .publish-label {
233
+ font-family: var(--font-ui);
234
+ font-size: var(--font-size-button);
235
+ font-weight: 700;
236
+ line-height: 16px;
237
+ color: var(--color-text);
238
+ white-space: nowrap;
239
+ }
240
+
241
+ .publish:disabled .publish-label {
242
+ color: var(--color-text-muted);
243
+ }
244
+
245
+ .publish-hint {
246
+ margin-top: 6px;
247
+ font-family: var(--font-ui);
248
+ font-size: var(--font-size-small);
249
+ line-height: 14px;
250
+ color: var(--color-text-muted);
251
+ }
252
+
253
+ /* <shared:playervox-badge/badge.ocss> */
254
+ /* The PlayerVox grade badge, shared by the Score and Rating built-ins.
255
+ scripts/sync-shared-widgets.mjs copies this file, as is, into their
256
+ style.ocss between the markers `<shared:playervox-badge/badge.ocss>`;
257
+ edit it here, never in a copy.
258
+
259
+ The badge canvas is 76 px square around a 56 px badge: the rotation and
260
+ the S+ glow reach past the badge, so the canvas overlaps its 64 px slot
261
+ by 6 px on each side. */
262
+ .badge {
263
+ width: 76px;
264
+ height: 76px;
265
+ margin: -6px;
266
+ }
267
+
268
+ /* One pulse when a score shows or changes (badge.ts `nextPulse`): the
269
+ host animates the transform, so the widget sends one class change and
270
+ no frame is drawn once it ends or while the widget is hidden. Two
271
+ identical keyframes let the next change restart it. */
272
+ @keyframes badge-pulse-a {
273
+ from {
274
+ transform: scale(1);
275
+ }
276
+ 40% {
277
+ transform: scale(1.08);
278
+ }
279
+ to {
280
+ transform: scale(1);
281
+ }
282
+ }
283
+
284
+ @keyframes badge-pulse-b {
285
+ from {
286
+ transform: scale(1);
287
+ }
288
+ 40% {
289
+ transform: scale(1.08);
290
+ }
291
+ to {
292
+ transform: scale(1);
293
+ }
294
+ }
295
+
296
+ .badge.pulse-a {
297
+ animation: badge-pulse-a 600ms ease-out 1;
298
+ }
299
+
300
+ .badge.pulse-b {
301
+ animation: badge-pulse-b 600ms ease-out 1;
302
+ }
303
+
304
+ /* Grade colours (badge.ts `GRADE_COLORS`), for text and bars. */
305
+ .grade-s-plus {
306
+ color: #9ae600;
307
+ }
308
+
309
+ .grade-s {
310
+ color: #7ccf00;
311
+ }
312
+
313
+ .grade-a {
314
+ color: #00d3f3;
315
+ }
316
+
317
+ .grade-b {
318
+ color: #fdc700;
319
+ }
320
+
321
+ .grade-c {
322
+ color: #fe9a00;
323
+ }
324
+
325
+ .grade-d {
326
+ color: #e7000b;
327
+ }
328
+
329
+ .grade-f,
330
+ .grade-none {
331
+ color: #52525c;
332
+ }
333
+ /* </shared:playervox-badge/badge.ocss> */
@@ -0,0 +1,125 @@
1
+ {
2
+ "scenarioVersion": 1,
3
+ "name": "account",
4
+ "description": "Without a PlayerVox session the widget shows nothing of its own: OverCrow covers it with its account panel (link or create an account, the browser step, an expired session), in both modes, and no input reaches the widget.",
5
+ "host": {
6
+ "mode": "interactive",
7
+ "frame": true,
8
+ "accounts": {
9
+ "playervox": "disconnected"
10
+ }
11
+ },
12
+ "steps": [
13
+ {
14
+ "expect": {
15
+ "state": "running",
16
+ "calls": [
17
+ {
18
+ "service": "playervox.rating.subscribe"
19
+ }
20
+ ],
21
+ "noText": [
22
+ "Portal 2"
23
+ ],
24
+ "image": "signed-out-interactive"
25
+ }
26
+ },
27
+ {
28
+ "pointer": {
29
+ "click": {
30
+ "at": [
31
+ 175,
32
+ 60
33
+ ]
34
+ }
35
+ }
36
+ },
37
+ {
38
+ "expect": {
39
+ "intents": []
40
+ }
41
+ },
42
+ {
43
+ "host": {
44
+ "mode": "passive"
45
+ }
46
+ },
47
+ {
48
+ "expect": {
49
+ "image": "signed-out-passive"
50
+ }
51
+ },
52
+ {
53
+ "host": {
54
+ "mode": "interactive",
55
+ "accounts": {
56
+ "playervox": "pending"
57
+ }
58
+ }
59
+ },
60
+ {
61
+ "expect": {
62
+ "image": "pending"
63
+ }
64
+ },
65
+ {
66
+ "host": {
67
+ "accounts": {
68
+ "playervox": "expired"
69
+ }
70
+ }
71
+ },
72
+ {
73
+ "expect": {
74
+ "image": "expired"
75
+ }
76
+ },
77
+ {
78
+ "host": {
79
+ "locale": "fr",
80
+ "theme": "light"
81
+ }
82
+ },
83
+ {
84
+ "expect": {
85
+ "image": "expired-light-fr"
86
+ }
87
+ },
88
+ {
89
+ "host": {
90
+ "accounts": {
91
+ "playervox": "connected"
92
+ },
93
+ "locale": "en",
94
+ "theme": "dark"
95
+ }
96
+ },
97
+ {
98
+ "publish": {
99
+ "service": "playervox.rating.subscribe",
100
+ "value": {
101
+ "state": "ready",
102
+ "name": "Portal 2",
103
+ "offline": false,
104
+ "rating": {
105
+ "gameplay": 96,
106
+ "art": 88,
107
+ "tech": 94,
108
+ "review": "Great.",
109
+ "publishedAt": null,
110
+ "offsetMinutes": null
111
+ }
112
+ }
113
+ }
114
+ },
115
+ {
116
+ "expect": {
117
+ "text": [
118
+ "Portal 2",
119
+ "Update my rating"
120
+ ],
121
+ "image": "connected"
122
+ }
123
+ }
124
+ ]
125
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "scenarioVersion": 1,
3
+ "name": "bounds",
4
+ "description": "A long game name stays on one line; the review is bounded at 2000 characters by OverCrow's field, whatever is typed, and the submission carries exactly that text.",
5
+ "host": {
6
+ "mode": "interactive"
7
+ },
8
+ "fixtures": {
9
+ "subscriptions": {
10
+ "playervox.rating.subscribe": {
11
+ "state": "ready",
12
+ "name": "An Unreasonably Long Game Title: The Definitive Remastered Collector's Edition",
13
+ "offline": false,
14
+ "rating": null
15
+ }
16
+ },
17
+ "intents": {
18
+ "playervox.rating.publish": [
19
+ "accepted"
20
+ ]
21
+ }
22
+ },
23
+ "steps": [
24
+ {
25
+ "expect": {
26
+ "text": [
27
+ "An Unreasonably Long Game Title: The Definitive Remastered Collector's Edition"
28
+ ],
29
+ "image": "long-name"
30
+ }
31
+ },
32
+ {
33
+ "pointer": {
34
+ "click": {
35
+ "label": "Review, optional"
36
+ }
37
+ }
38
+ },
39
+ {
40
+ "text": "A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review t"
41
+ },
42
+ {
43
+ "text": "A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review t"
44
+ },
45
+ {
46
+ "text": "A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review t"
47
+ },
48
+ {
49
+ "pointer": {
50
+ "click": {
51
+ "text": "Publish my rating"
52
+ }
53
+ }
54
+ },
55
+ {
56
+ "expect": {
57
+ "intents": [
58
+ {
59
+ "intent": "playervox.rating.publish",
60
+ "fields": {
61
+ "gameplay": 50,
62
+ "art": 50,
63
+ "tech": 50,
64
+ "review": "A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review tA review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review that goes on and on. A review t"
65
+ },
66
+ "outcome": "accepted"
67
+ }
68
+ ],
69
+ "image": "long-review"
70
+ }
71
+ }
72
+ ]
73
+ }