@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,367 @@
1
+ # L’outil en ligne de commande
2
+
3
+ `overcrow-widget` crée, vérifie et empaquette les widgets PlayerVox
4
+ OverCrow, les exécute dans OverCrow pendant que vous les écrivez, et les
5
+ teste. C’est un seul programme pour Linux et Windows. Il contient les mêmes
6
+ validateurs que ceux qu’OverCrow exécute quand il installe et démarre un
7
+ widget : un paquet qu’il accepte est un paquet qu’OverCrow lit.
8
+
9
+ ```sh
10
+ overcrow-widget init my-widget --template counter
11
+ cd my-widget
12
+ overcrow-widget check
13
+ overcrow-widget package
14
+ overcrow-widget inspect dist/com.example.my-widget-0.1.0.ocpkg
15
+ overcrow-widget doctor
16
+ overcrow-widget dev
17
+ overcrow-widget test
18
+ ```
19
+
20
+ | Commande | Rôle |
21
+ | --- | --- |
22
+ | [`init`](#init) | Crée un projet à partir d’un template. |
23
+ | [`check`](#check) | Valide un projet sans rien écrire. |
24
+ | [`package`](#package) | Vérifie, puis écrit le paquet `.ocpkg`. |
25
+ | [`inspect`](#inspect) | Montre ce qu’un paquet contient et demande. |
26
+ | [`dev`](#dev) | Exécute le widget dans OverCrow et le recharge à chaque enregistrement. |
27
+ | [`test`](#test) | Joue les scénarios de test du projet et compare leurs images. |
28
+ | [`doctor`](#doctor) | Indique ce que votre installation a et ce qui lui manque. |
29
+ | [`admit`](#admit) | Exécute l’admission de la marketplace sur votre soumission. |
30
+
31
+ Chaque commande prend le dossier du projet en argument ; sans argument,
32
+ elle utilise le dossier courant.
33
+
34
+ ## Installation
35
+
36
+ Chaque [release d’OverCrow](https://github.com/Valhallab/playervox-overcrow-releases/releases)
37
+ contient les outils créateurs dans un ZIP par plateforme : l’outil avec
38
+ sa licence et ses notices tierces, le runtime headless d’OverCrow
39
+ qu’utilise [`test`](#test), un `README.txt` et un `SHA256SUMS` de tous
40
+ les fichiers.
41
+
42
+ | Plateforme | ZIP | Outil dans le ZIP |
43
+ | --- | --- | --- |
44
+ | Linux x86-64 | `overcrow-creator-tools-VERSION-linux-x86_64.zip` | `overcrow-widget-VERSION-linux-x86_64` |
45
+ | Windows x64 | `overcrow-creator-tools-VERSION-windows-x86_64.zip` | `overcrow-widget-VERSION-windows-x86_64.exe` |
46
+
47
+ Décompressez-le, vérifiez les fichiers, renommez l’outil `overcrow-widget`
48
+ (`overcrow-widget.exe` sous Windows), rendez-le exécutable sous Linux
49
+ (`chmod +x`) et placez-le dans votre `PATH`. Il n’a besoin de rien d’autre
50
+ pour vérifier et empaqueter un widget. `overcrow-widget --version` donne sa
51
+ version et celle du SDK qu’il embarque.
52
+
53
+ ```sh
54
+ unzip overcrow-creator-tools-VERSION-linux-x86_64.zip
55
+ cd overcrow-creator-tools-VERSION-linux-x86_64
56
+ sha256sum --check SHA256SUMS
57
+ install -m 755 overcrow-widget-*-linux-x86_64 ~/.local/bin/overcrow-widget
58
+ ```
59
+
60
+ L’outil se compile aussi avec Rust depuis le
61
+ [dépôt public](https://github.com/Valhallab/playervox-overcrow-releases) ;
62
+ le dépôt épingle la toolchain nécessaire. Le programme est alors
63
+ `target/dist/overcrow-widget`.
64
+
65
+ ```sh
66
+ cargo build -p overcrow-widget-cli --profile dist --locked
67
+ ```
68
+
69
+ ### Les types du SDK
70
+
71
+ `check` vérifie les types de votre logique avec le TypeScript du projet, si
72
+ Node.js 22 ou plus récent et `node_modules/typescript` sont présents. Sinon,
73
+ il signale par un avertissement que les types n’ont pas été vérifiés
74
+ (`typecheck.skipped`) et continue. Le SDK lui-même est inclus dans l’outil :
75
+ l’empaquetage ne dépend donc jamais de `node_modules`.
76
+
77
+ `@overcrow/sdk` est sur [npm](https://www.npmjs.com/package/@overcrow/sdk).
78
+ Le `package.json` d’un projet créé par `init` nomme TypeScript et la version
79
+ du SDK que l’outil embarque : lancez `npm install` dans le projet. Dans un
80
+ autre projet, installez le SDK avec :
81
+
82
+ ```sh
83
+ npm install --save-dev --save-exact @overcrow/sdk@1.0.0
84
+ ```
85
+
86
+ Gardez la version que l’outil embarque (`overcrow-widget --version`).
87
+ `overcrow-widget doctor` signale l’absence de TypeScript, ainsi qu’un SDK
88
+ dans `node_modules` dont la version diffère de celle que l’outil embarque.
89
+
90
+ ## Fichiers d’un projet
91
+
92
+ | Fichier | Rôle | Empaqueté |
93
+ | --- | --- | --- |
94
+ | `manifest.json` | [Le manifeste](manifest.md), empaqueté tel quel. | oui |
95
+ | `view.ocml` | [La vue](view.md), compilée en `view.json`. | compilé |
96
+ | `style.ocss` | [Le style](style.md) ; facultatif. | oui |
97
+ | `logic.ts` ou `logic.js` | [La logique](logic.md), un seul module ; regroupée avec le SDK dans `logic.js`. | regroupé |
98
+ | `locales/en.json`, `locales/fr.json` | [Les messages](logic.md#messages) ; les deux fichiers ou aucun, avec les mêmes clés. | oui |
99
+ | `LICENSE` | Le texte de la licence du paquet. Les templates partent de la licence MIT ; choisissez la vôtre. | oui |
100
+ | `assets/` | Images PNG, JPEG ou WebP ; facultatif. | oui |
101
+ | `package.json`, `tsconfig.json` | Outillage uniquement : TypeScript et les types du SDK. | non |
102
+ | `listing.json` | Le texte de marketplace d’une [soumission](publishing.md#la-fiche) ; lu par `admit`. | non |
103
+ | `tests/` | Les [scénarios](testing.md#scénarios) (`tests/<name>.scenario.json`), leurs images de référence (`tests/reference/`) et vos tests unitaires. `tests/output/` contient les images des exécutions en échec. | non |
104
+
105
+ ## init
106
+
107
+ ```sh
108
+ overcrow-widget init my-widget --template list --id com.example.my-widget --name "My widget"
109
+ ```
110
+
111
+ Écrit un nouveau projet dans le dossier, qui ne doit pas exister ou doit
112
+ être vide : `init` n’écrase jamais un fichier.
113
+
114
+ | Template | Montre |
115
+ | --- | --- |
116
+ | `blank` (par défaut) | Un titre tiré des messages et un état vide. |
117
+ | `counter` | Une valeur et deux boutons dont la logique exporte les gestionnaires. |
118
+ | `list` | Une liste de tâches à clés : `for`, gestionnaires avec arguments, `t()` avec paramètres. |
119
+ | `chart` | Un graphique en direct, mis à jour par un minuteur. |
120
+
121
+ Par défaut, l’ID vaut `com.example.<dir>`. Passez `--id` avec un ID en DNS
122
+ inversé, sous un domaine que vous contrôlez (`com.playervox.*` est réservé).
123
+ Chaque template est livré avec un scénario de test,
124
+ `tests/example.scenario.json` ; `counter`, `list` et `chart` fournissent
125
+ aussi ses images de référence.
126
+
127
+ ## check
128
+
129
+ ```sh
130
+ overcrow-widget check
131
+ overcrow-widget check --deny-warnings --format json
132
+ ```
133
+
134
+ Exécute toutes les vérifications, dans cet ordre, et n’écrit rien :
135
+
136
+ 1. **Fichiers du projet** : les fichiers requis sont présents et respectent
137
+ leurs limites de taille, il y a un seul module de logique, et les deux
138
+ fichiers de langue ou aucun.
139
+ 2. **Manifeste** : le validateur de manifeste d’OverCrow lui-même.
140
+ 3. **Vue** : `view.ocml` est compilé et le résultat validé ; les images
141
+ statiques doivent exister dans `assets/`.
142
+ 4. **Style** : `style.ocss` est analysé avec l’analyseur syntaxique
143
+ d’OverCrow.
144
+ 5. **Fichiers de langue** : des objets de chaînes aux clés valides, avec les
145
+ mêmes clés dans les deux fichiers. Un `t("key")` de la vue dont la clé
146
+ n’a pas de message donne un avertissement.
147
+ 6. **Logique** : son
148
+ [analyse statique](logic.md#ce-que-la-logique-ne-peut-pas-utiliser), et
149
+ les exports que la vue appelle.
150
+ 7. **Types** : le `tsc --noEmit -p tsconfig.json` du projet.
151
+ 8. **Paquet** : `logic.js` est construit, puis le paquet est écrit en
152
+ mémoire et relu exactement comme OverCrow le lira.
153
+
154
+ Options : `--no-typecheck`, `--deny-warnings` (un avertissement fait échouer
155
+ la commande), `--format json`.
156
+
157
+ ## package
158
+
159
+ ```sh
160
+ overcrow-widget package
161
+ overcrow-widget package --out build/my-widget.ocpkg
162
+ ```
163
+
164
+ Exécute `check`, puis écrit le paquet dans `dist/<id>-<version>.ocpkg`, ou
165
+ à l’emplacement donné par `--out`. La commande affiche le chemin, la taille
166
+ et le SHA-256 de l’archive.
167
+
168
+ L’empaquetage est déterministe : les mêmes sources et la même version de
169
+ l’outil donnent les mêmes octets à chaque exécution et sur tous les
170
+ systèmes. Le contenu du paquet est décrit dans [le paquet](package.md).
171
+
172
+ ## inspect
173
+
174
+ ```sh
175
+ overcrow-widget inspect dist/com.example.my-widget-0.1.0.ocpkg
176
+ ```
177
+
178
+ Valide un paquet comme le fait OverCrow, puis le montre tel qu’un relecteur
179
+ le voit : l’ID, la version et les noms ; la taille et le SHA-256 de
180
+ l’archive ; la version du SDK que contient son `logic.js` ; chaque
181
+ permission en toutes lettres (routes réseau avec les contraintes de leurs
182
+ paramètres et la limite de réponse déclarée, stockage, presse-papiers,
183
+ événements de jeu) ; chaque capability avec son résumé, en précisant si
184
+ elle est sensible ou demande un compte ; le nombre de lignes du menu ; et
185
+ chaque fichier avec sa taille et son SHA-256. Quand OverCrow refuserait le
186
+ paquet, la commande le signale à la place, avec la raison.
187
+
188
+ ## dev
189
+
190
+ ```sh
191
+ overcrow-widget dev
192
+ ```
193
+
194
+ Exécute le widget dans l’overlay OverCrow qui tourne sur votre machine,
195
+ pendant que vous le modifiez :
196
+
197
+ 1. la commande se connecte à l’overlay, qui doit avoir été lancé avec les
198
+ installations de développement autorisées ;
199
+ 2. elle construit le paquet comme le fait `package` et l’envoie à l’overlay,
200
+ qui le valide entièrement et l’affiche avec la mention
201
+ **Unverified · development package**, les permissions de son manifeste
202
+ étant accordées pour la session seulement ;
203
+ 3. elle surveille les fichiers du projet et, 200 ms après la dernière
204
+ modification, reconstruit et recharge le widget. Une construction en
205
+ erreur n’est pas envoyée : le widget continue de s’exécuter avec sa
206
+ dernière construction valide ;
207
+ 4. elle affiche ce que l’overlay rapporte : les états du widget (`starting`,
208
+ `running`, `restarting` avec l’échec, `failed`…) et les sorties `log.*`
209
+ de sa logique ;
210
+ 5. sur **Ctrl+C**, elle retire le widget de l’overlay.
211
+
212
+ Options : `--no-typecheck`, `--format json` (un objet JSON par ligne).
213
+ Codes de sortie : 0 après Ctrl+C, 1 quand l’overlay met fin à la session,
214
+ 2 quand aucun overlay n’est joignable.
215
+ [Le canal de développement](dev-channel.md) explique comment lancer OverCrow
216
+ pour cela, et ce que signifient chaque état et chaque refus.
217
+
218
+ ## test
219
+
220
+ ```sh
221
+ overcrow-widget test
222
+ overcrow-widget test --scenario example
223
+ overcrow-widget test --update
224
+ ```
225
+
226
+ Joue les scénarios de `tests/` dans le runtime headless d’OverCrow et
227
+ compare les images qu’il rend avec les références :
228
+
229
+ 1. la commande construit le paquet comme le fait `package` ;
230
+ 2. elle lit chaque `tests/<name>.scenario.json` et le vérifie par rapport au
231
+ manifeste avant toute exécution ; une erreur dans un scénario donne un
232
+ diagnostic `test.scenario` dans son fichier ;
233
+ 3. elle exécute chaque scénario dans le [runtime headless](testing.md#le-runtime-headless)
234
+ que l’outil épingle, ou celui donné par `--runtime`, et affiche la
235
+ version et le SHA-256 de ce runtime. La première fois, elle télécharge
236
+ le runtime épinglé ;
237
+ 4. elle compare chaque image capturée avec
238
+ `tests/reference/<name>/<image>.png`. Une différence, un changement de
239
+ taille ou une référence manquante fait échouer le scénario et écrit
240
+ `tests/output/<name>/<image>.actual.png` et, pour une différence,
241
+ `<image>.diff.png`.
242
+
243
+ Options : `--runtime <path>` (un autre programme `overcrow-widget-headless`),
244
+ `--offline` (ne jamais télécharger le runtime), `--scenario <name>` (ce scénario seulement), `--update` (enregistre les
245
+ images capturées comme références : examinez-les avant de les commiter),
246
+ `--format json`, `--no-typecheck`.
247
+
248
+ Codes de sortie : 0 quand tous les scénarios ont réussi, 1 quand l’un d’eux
249
+ a échoué, 2 quand aucun runtime ne peut s’exécuter. Les scénarios sont
250
+ décrits dans [tester un widget](testing.md).
251
+
252
+ ## doctor
253
+
254
+ ```sh
255
+ overcrow-widget doctor
256
+ ```
257
+
258
+ | Ligne | Ce qui est vérifié |
259
+ | --- | --- |
260
+ | `cli`, `sdk` | La version de l’outil, son API de widgets et le `@overcrow/sdk` qu’il embarque. |
261
+ | `platform` | Le système d’exploitation et l’architecture. |
262
+ | `overcrow` | Un OverCrow installé. |
263
+ | `development` | Un overlay en cours d’exécution qui autorise les installations de développement, et sa version. |
264
+ | `node`, `typescript`, `project sdk` | Dans un projet de widget : Node.js dans le `PATH`, `node_modules/typescript` et la version de `node_modules/@overcrow/sdk`. |
265
+
266
+ | Code | Sévérité | Signification |
267
+ | --- | --- | --- |
268
+ | `doctor.overcrow_missing` | avertissement | OverCrow n’est pas installé. |
269
+ | `doctor.development_off` | avertissement | Aucun overlay n’autorise les installations de développement ; l’aide donne les commandes pour relancer OverCrow en les autorisant. |
270
+ | `doctor.channel_busy` | avertissement | L’overlay sert déjà son nombre maximal de sessions `dev`. |
271
+ | `doctor.channel_io` | avertissement | La connexion à l’overlay a échoué. |
272
+ | `doctor.channel_untrusted` | erreur | Ce qui répond n’est pas l’overlay de cet utilisateur. |
273
+ | `doctor.protocol_version` | erreur | L’overlay et l’outil ne parlent pas la même version du canal de développement. |
274
+ | `doctor.node_missing`, `doctor.node_version` | avertissement | Pas de Node.js, ou une version antérieure à la 22 : `check` ne peut pas vérifier les types. |
275
+ | `doctor.typescript_missing`, `doctor.sdk_missing` | avertissement | TypeScript ou les types du SDK ne sont pas installés dans le projet. |
276
+ | `doctor.sdk_version` | avertissement | `node_modules/@overcrow/sdk` diffère du SDK de l’outil. |
277
+
278
+ Options : `--format json`, `--deny-warnings`.
279
+
280
+ ## admit
281
+
282
+ ```sh
283
+ overcrow-widget admit
284
+ overcrow-widget admit --package dist/com.example.my-widget-0.1.0.ocpkg
285
+ ```
286
+
287
+ Exécute l’admission statique par laquelle passe une soumission à la
288
+ marketplace, exactement comme la marketplace l’exécute. La commande
289
+ n’exécute jamais votre code ni `tsc` :
290
+
291
+ 1. le dossier est construit comme `package` le construit ;
292
+ 2. avec `--package`, la vue compilée de cette archive doit être, à l’octet
293
+ près, ce que donne la compilation de `view.ocml` ;
294
+ 3. l’ID n’est pas réservé, `listing.json` est valide, son aperçu est un PNG
295
+ empaqueté d’au plus 256 Kio ;
296
+ 4. les pouvoirs que le widget demande sont listés pour le relecteur :
297
+ capabilities (les sensibles sont signalées), routes réseau avec leur
298
+ limite de réponse, écritures dans le presse-papiers, stockage et
299
+ événements de jeu.
300
+
301
+ | Code | Sévérité | Signification |
302
+ | --- | --- | --- |
303
+ | `admission.reserved_id` | erreur | Un ID `com.playervox.*`, réservé à PlayerVox. |
304
+ | `admission.listing_missing`, `admission.listing` | erreur | Pas de `listing.json`, ou un fichier qui enfreint les règles de la fiche. |
305
+ | `admission.preview` | erreur | `preview` ne désigne pas un PNG empaqueté dans les limites. |
306
+ | `admission.license` | erreur | Un widget PlayerVox dont la licence n’est pas MIT. |
307
+ | `admission.view_not_reproducible` | erreur | La vue compilée soumise diffère de ce que donne la compilation de `view.ocml`. |
308
+ | `admission.package_rebuilt` | avertissement | L’archive soumise diffère de la reconstruction dans d’autres fichiers. |
309
+ | `admission.not_rebuilt` | avertissement | Une archive a été admise sans ses sources. |
310
+
311
+ Options : `--package FILE`, `--out DIR` (écrit le paquet admis, sa fiche et
312
+ un rapport dans un dossier vide), `--format json`, `--deny-warnings`.
313
+ `admit <file.ocpkg> --listing FILE` vérifie une archive sans ses sources.
314
+ Codes de sortie : 0 admis, 1 refusé, 2 pour une erreur d’utilisation ou de
315
+ fichier. Voir [publication et revue](publishing.md).
316
+
317
+ ## Diagnostics
318
+
319
+ Chaque problème est un diagnostic, avec un code stable, une position et,
320
+ quand il y en a une, une suggestion :
321
+
322
+ ```text
323
+ error[view.unknown_attribute]: `clas` is not an attribute of <text>
324
+ --> view.ocml:4:9
325
+ |
326
+ 4 | <text clas="value">{state.count}</text>
327
+ | ^
328
+ = help: did you mean `class`?
329
+ check: 1 error(s), 0 warning(s)
330
+ ```
331
+
332
+ Le code a la forme `<domain>.<category>` :
333
+
334
+ | Domaine | Origine | Codes |
335
+ | --- | --- | --- |
336
+ | `project` | Les fichiers du projet | `missing_file`, `file_size`, `encoding`, `ambiguous_logic`, `asset_path`, `entry_limit`, `read` |
337
+ | `manifest` | `manifest.json` | voir [le manifeste](manifest.md#comment-le-manifeste-est-vérifié) |
338
+ | `view` | `view.ocml` | voir [la vue](view.md#quand-la-vue-est-incorrecte) |
339
+ | `style` | `style.ocss` | voir [le style](style.md#quand-le-style-est-incorrect) |
340
+ | `locales` | `locales/*.json` | `missing_file`, `json`, `shape`, `key`, `value`, `keys`, `entry_limit`, `unknown_key` |
341
+ | `logic` | `logic.ts` | voir [la logique](logic.md#ce-que-la-logique-ne-peut-pas-utiliser) |
342
+ | `typecheck` | TypeScript | `tsc` (le message de TypeScript lui-même), `skipped`, `sdk_version`, `timeout` |
343
+ | `package` | Le paquet relu | `archive_size`, `file_size` et les catégories du lecteur de paquets d’OverCrow |
344
+ | `test` | Les scénarios | `scenario`, `scenario_name`, `too_many_scenarios` |
345
+ | `init`, `doctor`, `admission` | Ces commandes | listés ci-dessus |
346
+
347
+ - Les lignes et les colonnes commencent à 1 ; une colonne compte des
348
+ caractères, pas des octets.
349
+ - Un nom inconnu est accompagné du nom existant le plus proche.
350
+ - Avec `--format json`, chaque diagnostic est un objet JSON sur une ligne de
351
+ la sortie standard :
352
+ `{"severity","code","file","line","column","message","help"}`, avec
353
+ `null` pour ce qui est inconnu. `package --format json` se termine par un
354
+ objet `{"package","bytes","sha256","logicBytes"}`.
355
+ - Les textes qui viennent d’un widget (ses journaux, ses noms) sont affichés
356
+ avec les caractères de contrôle du terminal neutralisés.
357
+
358
+ Dans vos scripts, appuyez-vous sur les codes : les messages et les textes
359
+ d’aide peuvent être reformulés.
360
+
361
+ ## Codes de sortie
362
+
363
+ | Code | Signification |
364
+ | --- | --- |
365
+ | 0 | Succès. Les avertissements sont admis, sauf avec `--deny-warnings`. |
366
+ | 1 | Des erreurs ont été trouvées ; `admit` a refusé la soumission ; un scénario de `test` a échoué ; l’overlay a mis fin à une session `dev`. |
367
+ | 2 | Une erreur d’utilisation ou de fichier ; pas d’overlay pour `dev` ; pas de runtime pour `test`. |
@@ -0,0 +1,140 @@
1
+ # Le canal de développement
2
+
3
+ `overcrow-widget dev` affiche votre widget dans l’overlay PlayerVox OverCrow
4
+ qui tourne sur votre machine, par-dessus votre jeu, et le recharge chaque
5
+ fois que vous enregistrez un fichier. La commande joint l’overlay par le
6
+ **canal de développement**, qu’OverCrow n’ouvre que si vous le demandez.
7
+
8
+ ```sh
9
+ overcrow-widget doctor
10
+ overcrow-widget dev
11
+ ```
12
+
13
+ `doctor` indique si un overlay en cours d’exécution propose le canal ; `dev`
14
+ construit ensuite le widget, l’envoie et reste au premier plan jusqu’à
15
+ Ctrl+C.
16
+
17
+ ## L’activer
18
+
19
+ Le canal n’existe que tant qu’OverCrow s’exécute avec les installations de
20
+ développement autorisées, c’est-à-dire lancé avec la variable
21
+ d’environnement `OVERCROW_WIDGET_DEVELOPMENT=1`. Sans elle, l’overlay
22
+ n’ouvre rien.
23
+
24
+ **Linux.** Définissez la variable pour les services de votre session, puis
25
+ redémarrez l’overlay :
26
+
27
+ ```sh
28
+ systemctl --user set-environment OVERCROW_WIDGET_DEVELOPMENT=1
29
+ systemctl --user restart overcrow-overlay.service
30
+ ```
31
+
32
+ Pour désactiver le canal, supprimez la variable et redémarrez de nouveau
33
+ (ou fermez votre session) :
34
+
35
+ ```sh
36
+ systemctl --user unset-environment OVERCROW_WIDGET_DEVELOPMENT
37
+ systemctl --user restart overcrow-overlay.service
38
+ ```
39
+
40
+ **Windows.** Quittez OverCrow depuis son icône de la zone de notification,
41
+ puis lancez-le depuis PowerShell :
42
+
43
+ ```text
44
+ $env:OVERCROW_WIDGET_DEVELOPMENT='1'; & "$env:LOCALAPPDATA\Programs\OverCrow\OverCrow.exe"
45
+ ```
46
+
47
+ `overcrow-widget doctor` affiche ces commandes quand il trouve un overlay
48
+ sans le canal (`doctor.development_off`).
49
+
50
+ ## Ce qu’est un widget de développement
51
+
52
+ L’overlay traite ce que `dev` envoie comme un **paquet de développement** :
53
+
54
+ - il est validé entièrement, exactement comme un paquet installé, et
55
+ s’exécute dans le même sandbox : rien de ce qui passe par le canal
56
+ n’échappe à une vérification ;
57
+ - il porte la mention **Unverified · development package** dans les deux
58
+ modes : on ne peut donc pas le prendre pour un widget du catalogue ;
59
+ - les permissions que son manifeste déclare sont accordées pour la session
60
+ seulement ;
61
+ - rien de lui n’est conservé : son stockage dure le temps de la session, et
62
+ il ne lit ni n’écrit jamais les données d’un widget installé ;
63
+ - il prend la place d’un widget installé de même ID pendant la session, et
64
+ le widget installé revient quand il est retiré ;
65
+ - les ID sous `com.playervox.` sont refusés.
66
+
67
+ Quand `dev` se termine, quelle qu’en soit la raison, l’overlay retire le
68
+ widget.
69
+
70
+ ## Ce qu’affiche `dev`
71
+
72
+ À chaque enregistrement, `dev` reconstruit le paquet et affiche les mêmes
73
+ diagnostics que `check`. Une construction en erreur n’est pas envoyée : le
74
+ widget continue de s’exécuter avec sa dernière construction valide. Viennent
75
+ ensuite les rapports de l’overlay.
76
+
77
+ **États** du widget :
78
+
79
+ | État | Signification |
80
+ | --- | --- |
81
+ | `starting` | L’overlay démarre le processus du widget. |
82
+ | `running` | Le widget s’exécute. |
83
+ | `restarting` | Il a échoué et redémarre ; l’échec est affiché. |
84
+ | `failed` | Il a échoué trop souvent : il attend votre prochain enregistrement. |
85
+ | `refused` | L’overlay a refusé de le démarrer. |
86
+ | `stopped` | Il a été arrêté. |
87
+
88
+ **Échecs** qui accompagnent `restarting` et `failed` :
89
+
90
+ <!-- generated:failure-categories -->
91
+ | Catégorie | Relancé | Signification |
92
+ | --- | --- | --- |
93
+ | `invalid_bundle` | non | Paquet, registre ou contenu compilé refusé. |
94
+ | `permission_denied` | non | Ce que le widget déclare, ce que l’utilisateur a accordé et ce qui est demandé ne concordent pas. |
95
+ | `protocol_violation` | non | Ce que le widget a envoyé à l’hôte est mal formé, inconnu ou dans le désordre. |
96
+ | `resource_limit` | oui | Un plafond de mémoire, de CPU, de file, de débit ou de taille a été dépassé. |
97
+ | `unresponsive` | oui | Le widget n’a pas démarré ou répondu dans le délai, ou a dépassé le budget de temps d’un tour. |
98
+ | `vm_exited` | oui | Le processus du widget s’est terminé sans signaler de faute (tué par le sandbox, mémoire épuisée). |
99
+ <!-- /generated:failure-categories -->
100
+
101
+ **Journaux** : chaque `log.debug`, `log.info`, `log.warn` et `log.error` de
102
+ la logique, avec son niveau. Une ligne de journal est coupée à
103
+ 512 caractères. Les caractères de contrôle, les séquences d’échappement du
104
+ terminal et les contrôles bidirectionnels sont affichés échappés
105
+ (`\u{1b}`), jamais interprétés : le texte d’un widget ne peut pas prendre le
106
+ contrôle de votre terminal.
107
+
108
+ Avec `--format json`, chacun de ces éléments est un objet JSON par ligne :
109
+ les diagnostics, `{"type":"built",…}` à chaque construction, puis les
110
+ messages de l’overlay (`state`, `log`, `event`…) au fil de leur arrivée.
111
+
112
+ ## Quand la connexion échoue
113
+
114
+ | Ce que vous voyez | Cause |
115
+ | --- | --- |
116
+ | `doctor.development_off` | Aucun overlay en cours d’exécution n’autorise les installations de développement : [activez le canal](#lactiver). |
117
+ | `doctor.overcrow_missing` | OverCrow n’est pas installé. |
118
+ | `doctor.channel_busy`, `too_many_sessions` | Quatre sessions `dev` sont déjà connectées à cet overlay. |
119
+ | `doctor.protocol_version`, `unsupported_protocol` | L’overlay et l’outil ne parlent pas la même version du canal : mettez à jour le plus ancien des deux. |
120
+ | `doctor.channel_untrusted` | Ce qui répond à l’adresse du canal n’est pas votre propre overlay. |
121
+ | `busy` | Une autre installation ou un autre retrait est en cours : `dev` réessaie. |
122
+ | `conflict` | Une autre session `dev` a installé un widget avec cet ID. |
123
+ | `invalid_bundle` | La validation de l’overlay a refusé le paquet ; un ID réservé `com.playervox.*` en est une cause. |
124
+ | `development_disabled` | L’overlay n’autorise plus les installations de développement. |
125
+ | `unavailable` | L’overlay n’a pas pu démarrer son runtime de widgets, ou n’a pas répondu dans les 30 secondes. |
126
+ | `rate_limited` | Plus de 10 requêtes par seconde : les enregistrements arrivent plus vite que l’overlay ne les accepte. |
127
+
128
+ ## Qui peut utiliser le canal
129
+
130
+ Seuls les programmes qui s’exécutent en tant que **votre propre
131
+ utilisateur**, sur la même machine. Le canal est un socket local (Linux) ou
132
+ un tube nommé (Windows) que les autres utilisateurs, les autres machines et
133
+ les programmes en sandbox ne peuvent pas ouvrir, et chaque extrémité vérifie
134
+ l’autre avant qu’une session ne commence. Les widgets ne peuvent pas
135
+ l’utiliser : leur sandbox n’y a pas accès.
136
+
137
+ C’est pourquoi le canal est désactivé par défaut. Une fois activé, tout
138
+ programme que vous lancez peut afficher un widget non vérifié dans votre
139
+ overlay, aussi longtemps qu’OverCrow s’exécute. Désactivez-le quand vous
140
+ avez terminé.