@the-inclusionist/engine 9.0.0 → 11.0.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 (532) hide show
  1. package/README.md +120 -78
  2. package/app/css/style.css +761 -377
  3. package/app/public/vendor/fonts/playwrite-cu.woff2 +0 -0
  4. package/app/public/vendor/fonts/playwrite-es-deco.woff2 +0 -0
  5. package/app/public/vendor/fonts/playwrite-es.woff2 +0 -0
  6. package/app/public/vendor/fonts/playwrite-gb-j.woff2 +0 -0
  7. package/app/public/vendor/fonts/playwrite-gb-s.woff2 +0 -0
  8. package/app/public/vendor/fonts/playwrite-pe.woff2 +0 -0
  9. package/app/public/vendor/fonts/playwrite-pt.woff2 +0 -0
  10. package/app/public/vendor/fonts-licences/NOTICE.txt +166 -0
  11. package/app/public/vendor/fonts-licences/OFL-1.1.txt +86 -0
  12. package/app/public/vendor/fonts.css +36 -84
  13. package/dist-pkg/boot/create-game.d.ts +499 -219
  14. package/dist-pkg/boot/create-game.js +3944 -562
  15. package/dist-pkg/core/a11y-sr.d.ts +25 -3
  16. package/dist-pkg/core/a11y-sr.js +38 -19
  17. package/dist-pkg/core/accessible-label.d.ts +17 -0
  18. package/dist-pkg/core/accessible-label.js +37 -0
  19. package/dist-pkg/core/accommodation-subjects.d.ts +26 -0
  20. package/dist-pkg/core/accommodation-subjects.js +32 -0
  21. package/dist-pkg/core/accommodations.d.ts +125 -0
  22. package/dist-pkg/core/accommodations.js +195 -0
  23. package/dist-pkg/core/actions.d.ts +108 -55
  24. package/dist-pkg/core/actions.js +122 -71
  25. package/dist-pkg/core/calm-mode.d.ts +31 -0
  26. package/dist-pkg/core/calm-mode.js +47 -0
  27. package/dist-pkg/core/camera-cycle.d.ts +15 -0
  28. package/dist-pkg/core/camera-cycle.js +7 -0
  29. package/dist-pkg/core/caption-duration.d.ts +15 -0
  30. package/dist-pkg/core/caption-duration.js +19 -0
  31. package/dist-pkg/core/cartridge-problems.d.ts +34 -0
  32. package/dist-pkg/core/cartridge-problems.js +53 -0
  33. package/dist-pkg/core/constants.d.ts +0 -54
  34. package/dist-pkg/core/constants.js +9 -76
  35. package/dist-pkg/core/contract.d.ts +142 -164
  36. package/dist-pkg/core/contract.js +222 -208
  37. package/dist-pkg/core/dom-query.d.ts +4 -4
  38. package/dist-pkg/core/dom-query.js +12 -20
  39. package/dist-pkg/core/entity.d.ts +62 -77
  40. package/dist-pkg/core/entity.js +18 -32
  41. package/dist-pkg/core/escape-html.d.ts +9 -10
  42. package/dist-pkg/core/escape-html.js +16 -20
  43. package/dist-pkg/core/flash-threshold.d.ts +17 -0
  44. package/dist-pkg/core/flash-threshold.js +113 -0
  45. package/dist-pkg/core/game-speed.d.ts +11 -0
  46. package/dist-pkg/core/game-speed.js +16 -0
  47. package/dist-pkg/core/genres.d.ts +20 -0
  48. package/dist-pkg/core/genres.js +44 -0
  49. package/dist-pkg/core/i18n.d.ts +71 -60
  50. package/dist-pkg/core/i18n.js +186 -200
  51. package/dist-pkg/core/loop.d.ts +17 -6
  52. package/dist-pkg/core/loop.js +26 -26
  53. package/dist-pkg/core/pause-icon-catalogue.d.ts +15 -0
  54. package/dist-pkg/core/pause-icon-catalogue.js +54 -0
  55. package/dist-pkg/core/ring.d.ts +17 -0
  56. package/dist-pkg/core/ring.js +29 -0
  57. package/dist-pkg/core/rng.d.ts +7 -12
  58. package/dist-pkg/core/rng.js +23 -53
  59. package/dist-pkg/core/route.d.ts +26 -26
  60. package/dist-pkg/core/route.js +126 -121
  61. package/dist-pkg/core/scenes.d.ts +37 -40
  62. package/dist-pkg/core/scenes.js +41 -43
  63. package/dist-pkg/core/screens.d.ts +4 -4
  64. package/dist-pkg/core/screens.js +11 -16
  65. package/dist-pkg/core/session-clock.d.ts +23 -0
  66. package/dist-pkg/core/session-clock.js +37 -0
  67. package/dist-pkg/core/setting-defaults.d.ts +61 -0
  68. package/dist-pkg/core/setting-defaults.js +66 -0
  69. package/dist-pkg/core/speech-rate.d.ts +29 -0
  70. package/dist-pkg/core/speech-rate.js +47 -0
  71. package/dist-pkg/core/state.d.ts +118 -118
  72. package/dist-pkg/core/state.js +322 -297
  73. package/dist-pkg/core/visual-cycles.d.ts +30 -0
  74. package/dist-pkg/core/visual-cycles.js +52 -0
  75. package/dist-pkg/core/visual-state.d.ts +13 -0
  76. package/dist-pkg/core/visual-state.js +6 -0
  77. package/dist-pkg/educational/activities-registry.d.ts +1 -1
  78. package/dist-pkg/educational/activities-registry.js +9 -8
  79. package/dist-pkg/educational/adaptive-engine.d.ts +11 -11
  80. package/dist-pkg/educational/adaptive-engine.js +17 -17
  81. package/dist-pkg/educational/segment-bar.d.ts +12 -12
  82. package/dist-pkg/educational/segment-bar.js +9 -9
  83. package/dist-pkg/i18n/en.js +324 -223
  84. package/dist-pkg/i18n/es.js +323 -223
  85. package/dist-pkg/i18n/pt.js +348 -226
  86. package/dist-pkg/input/default-bindings.d.ts +37 -38
  87. package/dist-pkg/input/default-bindings.js +127 -144
  88. package/dist-pkg/input/devices.d.ts +7 -7
  89. package/dist-pkg/input/devices.js +17 -16
  90. package/dist-pkg/input/edges.d.ts +23 -32
  91. package/dist-pkg/input/edges.js +23 -28
  92. package/dist-pkg/input/empathy-filter.d.ts +22 -0
  93. package/dist-pkg/input/empathy-filter.js +34 -0
  94. package/dist-pkg/input/face-map.d.ts +96 -0
  95. package/dist-pkg/input/face-map.js +255 -0
  96. package/dist-pkg/input/face-signals.d.ts +40 -0
  97. package/dist-pkg/input/face-signals.js +48 -0
  98. package/dist-pkg/input/gamepad.d.ts +195 -145
  99. package/dist-pkg/input/gamepad.js +383 -556
  100. package/dist-pkg/input/gaze-cycle.d.ts +64 -0
  101. package/dist-pkg/input/gaze-cycle.js +133 -0
  102. package/dist-pkg/input/gaze-relative.d.ts +68 -0
  103. package/dist-pkg/input/gaze-relative.js +142 -0
  104. package/dist-pkg/input/hand-map.d.ts +28 -0
  105. package/dist-pkg/input/hand-map.js +142 -0
  106. package/dist-pkg/input/input-cooldown.d.ts +17 -0
  107. package/dist-pkg/input/input-cooldown.js +39 -0
  108. package/dist-pkg/input/key-default.d.ts +30 -0
  109. package/dist-pkg/input/key-default.js +60 -0
  110. package/dist-pkg/input/keyboard-runtime.d.ts +15 -21
  111. package/dist-pkg/input/keyboard-runtime.js +23 -27
  112. package/dist-pkg/input/keyboard.d.ts +68 -63
  113. package/dist-pkg/input/keyboard.js +83 -105
  114. package/dist-pkg/input/keydown.d.ts +123 -137
  115. package/dist-pkg/input/keydown.js +284 -289
  116. package/dist-pkg/input/latch-edge.d.ts +33 -21
  117. package/dist-pkg/input/latch-edge.js +34 -35
  118. package/dist-pkg/input/latch-scope.d.ts +51 -50
  119. package/dist-pkg/input/latch-scope.js +61 -82
  120. package/dist-pkg/input/latch-store.d.ts +26 -30
  121. package/dist-pkg/input/latch-store.js +42 -50
  122. package/dist-pkg/input/latch-sync.d.ts +29 -29
  123. package/dist-pkg/input/latch-sync.js +25 -25
  124. package/dist-pkg/input/latch.d.ts +14 -17
  125. package/dist-pkg/input/latch.js +29 -37
  126. package/dist-pkg/input/pad-defaults.d.ts +13 -16
  127. package/dist-pkg/input/pad-defaults.js +21 -28
  128. package/dist-pkg/input/pad-reading.d.ts +76 -0
  129. package/dist-pkg/input/pad-reading.js +169 -0
  130. package/dist-pkg/input/pad-wizard.d.ts +99 -0
  131. package/dist-pkg/input/pad-wizard.js +256 -0
  132. package/dist-pkg/input/pointer-space.d.ts +19 -20
  133. package/dist-pkg/input/pointer-space.js +27 -32
  134. package/dist-pkg/input/pointer.d.ts +39 -40
  135. package/dist-pkg/input/pointer.js +42 -45
  136. package/dist-pkg/input/state.d.ts +101 -89
  137. package/dist-pkg/input/state.js +54 -134
  138. package/dist-pkg/input/switch-scan.d.ts +59 -0
  139. package/dist-pkg/input/switch-scan.js +67 -0
  140. package/dist-pkg/input/synthetic-source.d.ts +42 -0
  141. package/dist-pkg/input/synthetic-source.js +57 -0
  142. package/dist-pkg/input/touch-bindings.d.ts +127 -116
  143. package/dist-pkg/input/touch-bindings.js +158 -173
  144. package/dist-pkg/input/touch.d.ts +147 -72
  145. package/dist-pkg/input/touch.js +362 -126
  146. package/dist-pkg/input/transport-in-use.d.ts +107 -0
  147. package/dist-pkg/input/transport-in-use.js +130 -0
  148. package/dist-pkg/input/transports.d.ts +90 -117
  149. package/dist-pkg/input/transports.js +104 -106
  150. package/dist-pkg/input/virtual-controller.d.ts +82 -0
  151. package/dist-pkg/input/virtual-controller.js +69 -0
  152. package/dist-pkg/input/vocabulary-migration.d.ts +50 -49
  153. package/dist-pkg/input/vocabulary-migration.js +80 -79
  154. package/dist-pkg/input/voice-map.d.ts +59 -0
  155. package/dist-pkg/input/voice-map.js +123 -0
  156. package/dist-pkg/platform/audio-ambient.d.ts +13 -2
  157. package/dist-pkg/platform/audio-ambient.js +14 -14
  158. package/dist-pkg/platform/audio-earcons.d.ts +20 -19
  159. package/dist-pkg/platform/audio-earcons.js +51 -42
  160. package/dist-pkg/platform/audio-jingles.js +9 -10
  161. package/dist-pkg/platform/audio-mixer.d.ts +14 -2
  162. package/dist-pkg/platform/audio-mixer.js +31 -39
  163. package/dist-pkg/platform/audio-sonar.d.ts +49 -152
  164. package/dist-pkg/platform/audio-sonar.js +124 -302
  165. package/dist-pkg/platform/audio.d.ts +62 -19
  166. package/dist-pkg/platform/audio.js +193 -168
  167. package/dist-pkg/platform/choose-by-voice.d.ts +70 -0
  168. package/dist-pkg/platform/choose-by-voice.js +157 -0
  169. package/dist-pkg/platform/flash-sampler.d.ts +19 -0
  170. package/dist-pkg/platform/flash-sampler.js +79 -0
  171. package/dist-pkg/platform/font-library.d.ts +77 -0
  172. package/dist-pkg/platform/font-library.js +98 -0
  173. package/dist-pkg/platform/font-library.json +721 -0
  174. package/dist-pkg/platform/heavy-catalogue.d.ts +77 -0
  175. package/dist-pkg/platform/heavy-catalogue.js +256 -0
  176. package/dist-pkg/platform/heavy-mirror.d.ts +20 -0
  177. package/dist-pkg/platform/heavy-mirror.js +73 -0
  178. package/dist-pkg/platform/heavy.d.ts +136 -0
  179. package/dist-pkg/platform/heavy.js +324 -0
  180. package/dist-pkg/platform/interruptible-speech.d.ts +23 -16
  181. package/dist-pkg/platform/interruptible-speech.js +77 -54
  182. package/dist-pkg/platform/kokoro-port.d.ts +27 -0
  183. package/dist-pkg/platform/kokoro-port.js +50 -0
  184. package/dist-pkg/platform/kokoro-runtime.d.ts +20 -0
  185. package/dist-pkg/platform/kokoro-runtime.js +52 -0
  186. package/dist-pkg/platform/kokoro.d.ts +70 -0
  187. package/dist-pkg/platform/kokoro.js +133 -0
  188. package/dist-pkg/platform/listener-scope.d.ts +12 -0
  189. package/dist-pkg/platform/listener-scope.js +90 -0
  190. package/dist-pkg/platform/locale-host.d.ts +14 -0
  191. package/dist-pkg/platform/locale-host.js +45 -0
  192. package/dist-pkg/platform/microphone.d.ts +51 -0
  193. package/dist-pkg/platform/microphone.js +118 -0
  194. package/dist-pkg/platform/onnx-runtime.d.ts +34 -0
  195. package/dist-pkg/platform/onnx-runtime.js +42 -0
  196. package/dist-pkg/platform/reading-in-worker.d.ts +64 -0
  197. package/dist-pkg/platform/reading-in-worker.js +125 -0
  198. package/dist-pkg/platform/reading-model.d.ts +94 -0
  199. package/dist-pkg/platform/reading-model.js +272 -0
  200. package/dist-pkg/platform/reading-runtime.d.ts +24 -0
  201. package/dist-pkg/platform/reading-runtime.js +164 -0
  202. package/dist-pkg/platform/reading-worker.d.ts +41 -0
  203. package/dist-pkg/platform/reading-worker.js +58 -0
  204. package/dist-pkg/platform/reading.d.ts +80 -0
  205. package/dist-pkg/platform/reading.js +136 -0
  206. package/dist-pkg/platform/speech-recognition.d.ts +60 -0
  207. package/dist-pkg/platform/speech-recognition.js +104 -0
  208. package/dist-pkg/platform/speech.d.ts +23 -1
  209. package/dist-pkg/platform/speech.js +29 -18
  210. package/dist-pkg/platform/storage-keys.d.ts +96 -0
  211. package/dist-pkg/platform/storage-keys.js +106 -0
  212. package/dist-pkg/platform/storage.d.ts +46 -111
  213. package/dist-pkg/platform/storage.js +104 -169
  214. package/dist-pkg/platform/tts.d.ts +85 -39
  215. package/dist-pkg/platform/tts.js +447 -127
  216. package/dist-pkg/platform/vision-loop.d.ts +23 -0
  217. package/dist-pkg/platform/vision-loop.js +56 -0
  218. package/dist-pkg/platform/vision.d.ts +132 -0
  219. package/dist-pkg/platform/vision.js +117 -0
  220. package/dist-pkg/platform/voice-listener.d.ts +40 -0
  221. package/dist-pkg/platform/voice-listener.js +88 -0
  222. package/dist-pkg/platform/voice-plan.d.ts +15 -98
  223. package/dist-pkg/platform/voice-plan.js +56 -143
  224. package/dist-pkg/platform/vosk-runtime.d.ts +96 -0
  225. package/dist-pkg/platform/vosk-runtime.js +151 -0
  226. package/dist-pkg/platform/vosk-vocabulary.d.ts +6 -0
  227. package/dist-pkg/platform/vosk-vocabulary.js +178 -0
  228. package/dist-pkg/render/canvas.d.ts +13 -7
  229. package/dist-pkg/render/canvas.js +13 -13
  230. package/dist-pkg/render/crt.d.ts +48 -12
  231. package/dist-pkg/render/crt.js +78 -80
  232. package/dist-pkg/render/cvd-matrices.d.ts +22 -18
  233. package/dist-pkg/render/cvd-matrices.js +37 -38
  234. package/dist-pkg/render/hc-role-data.d.ts +7 -7
  235. package/dist-pkg/render/hc-role-data.js +14 -14
  236. package/dist-pkg/render/high-contrast.d.ts +67 -56
  237. package/dist-pkg/render/high-contrast.js +226 -217
  238. package/dist-pkg/render/low-vision-drawing.d.ts +5 -0
  239. package/dist-pkg/render/low-vision-drawing.js +46 -0
  240. package/dist-pkg/render/lq-filter.d.ts +32 -20
  241. package/dist-pkg/render/lq-filter.js +59 -65
  242. package/dist-pkg/render/port.d.ts +86 -88
  243. package/dist-pkg/render/port.js +17 -23
  244. package/dist-pkg/render/screen-pipeline.d.ts +42 -42
  245. package/dist-pkg/render/screen-pipeline.js +80 -87
  246. package/dist-pkg/render/sprite-fx.d.ts +2 -1
  247. package/dist-pkg/render/sprite-fx.js +16 -14
  248. package/dist-pkg/render/viewports.d.ts +20 -15
  249. package/dist-pkg/render/viewports.js +83 -114
  250. package/dist-pkg/render/viz-axes-labels.d.ts +47 -0
  251. package/dist-pkg/render/viz-axes-labels.js +88 -0
  252. package/dist-pkg/render/viz-axes.d.ts +89 -86
  253. package/dist-pkg/render/viz-axes.js +128 -116
  254. package/dist-pkg/render/viz-modes.d.ts +28 -29
  255. package/dist-pkg/render/viz-modes.js +40 -45
  256. package/dist-pkg/render/viz-refusal.d.ts +32 -0
  257. package/dist-pkg/render/viz-refusal.js +57 -0
  258. package/dist-pkg/render/viz-setters.d.ts +104 -66
  259. package/dist-pkg/render/viz-setters.js +182 -191
  260. package/dist-pkg/ui/aac-sets.d.ts +45 -0
  261. package/dist-pkg/ui/aac-sets.js +41 -0
  262. package/dist-pkg/ui/audio-choices.d.ts +68 -0
  263. package/dist-pkg/ui/audio-choices.js +98 -0
  264. package/dist-pkg/ui/audio-rows-that-apply.d.ts +12 -0
  265. package/dist-pkg/ui/audio-rows-that-apply.js +43 -0
  266. package/dist-pkg/ui/camera-control.d.ts +53 -0
  267. package/dist-pkg/ui/camera-control.js +48 -0
  268. package/dist-pkg/ui/changed-mark.d.ts +9 -8
  269. package/dist-pkg/ui/changed-mark.js +22 -53
  270. package/dist-pkg/ui/control-choices.d.ts +37 -0
  271. package/dist-pkg/ui/control-choices.js +84 -0
  272. package/dist-pkg/ui/debug-panel.d.ts +59 -43
  273. package/dist-pkg/ui/debug-panel.js +68 -69
  274. package/dist-pkg/ui/declared-words.d.ts +21 -0
  275. package/dist-pkg/ui/declared-words.js +66 -0
  276. package/dist-pkg/ui/dom.d.ts +10 -14
  277. package/dist-pkg/ui/dom.js +10 -47
  278. package/dist-pkg/ui/drawing-problems.d.ts +25 -0
  279. package/dist-pkg/ui/drawing-problems.js +94 -0
  280. package/dist-pkg/ui/eye-control.d.ts +36 -0
  281. package/dist-pkg/ui/eye-control.js +178 -0
  282. package/dist-pkg/ui/face-control.d.ts +25 -0
  283. package/dist-pkg/ui/face-control.js +183 -0
  284. package/dist-pkg/ui/focus-trap.d.ts +39 -49
  285. package/dist-pkg/ui/focus-trap.js +56 -65
  286. package/dist-pkg/ui/fonts.d.ts +157 -68
  287. package/dist-pkg/ui/fonts.js +305 -115
  288. package/dist-pkg/ui/footer-scroll-driver.d.ts +14 -0
  289. package/dist-pkg/ui/footer-scroll-driver.js +201 -0
  290. package/dist-pkg/ui/footer-scroll.d.ts +38 -0
  291. package/dist-pkg/ui/footer-scroll.js +55 -0
  292. package/dist-pkg/ui/game-options.d.ts +47 -0
  293. package/dist-pkg/ui/game-options.js +158 -0
  294. package/dist-pkg/ui/gaze-overlay.d.ts +64 -0
  295. package/dist-pkg/ui/gaze-overlay.js +165 -0
  296. package/dist-pkg/ui/hand-control.d.ts +25 -0
  297. package/dist-pkg/ui/hand-control.js +143 -0
  298. package/dist-pkg/ui/help-panel.d.ts +87 -0
  299. package/dist-pkg/ui/help-panel.js +242 -0
  300. package/dist-pkg/ui/hud-bands.d.ts +62 -0
  301. package/dist-pkg/ui/hud-bands.js +146 -0
  302. package/dist-pkg/ui/hud-row.d.ts +34 -0
  303. package/dist-pkg/ui/hud-row.js +80 -0
  304. package/dist-pkg/ui/hud.d.ts +73 -73
  305. package/dist-pkg/ui/hud.js +94 -98
  306. package/dist-pkg/ui/item-announcement.d.ts +13 -12
  307. package/dist-pkg/ui/item-announcement.js +25 -26
  308. package/dist-pkg/ui/layout.d.ts +103 -28
  309. package/dist-pkg/ui/layout.js +117 -99
  310. package/dist-pkg/ui/libras-avatar-clip.d.ts +30 -0
  311. package/dist-pkg/ui/libras-avatar-clip.js +86 -0
  312. package/dist-pkg/ui/libras-avatar-load.d.ts +52 -0
  313. package/dist-pkg/ui/libras-avatar-load.js +134 -0
  314. package/dist-pkg/ui/libras-avatar-plan.d.ts +102 -0
  315. package/dist-pkg/ui/libras-avatar-plan.js +211 -0
  316. package/dist-pkg/ui/libras-avatar-player.d.ts +28 -0
  317. package/dist-pkg/ui/libras-avatar-player.js +226 -0
  318. package/dist-pkg/ui/libras-avatar-stage.d.ts +37 -0
  319. package/dist-pkg/ui/libras-avatar-stage.js +208 -0
  320. package/dist-pkg/ui/libras-glosses.d.ts +28 -0
  321. package/dist-pkg/ui/libras-glosses.js +161 -0
  322. package/dist-pkg/ui/locale-flags.d.ts +16 -0
  323. package/dist-pkg/ui/locale-flags.js +30 -0
  324. package/dist-pkg/ui/loop-crash.d.ts +17 -17
  325. package/dist-pkg/ui/loop-crash.js +33 -62
  326. package/dist-pkg/ui/menu-intent.d.ts +61 -0
  327. package/dist-pkg/ui/menu-intent.js +88 -0
  328. package/dist-pkg/ui/menu-items.d.ts +20 -0
  329. package/dist-pkg/ui/menu-items.js +51 -0
  330. package/dist-pkg/ui/menu-nav.d.ts +98 -92
  331. package/dist-pkg/ui/menu-nav.js +398 -286
  332. package/dist-pkg/ui/mobility-choices.d.ts +26 -0
  333. package/dist-pkg/ui/mobility-choices.js +41 -0
  334. package/dist-pkg/ui/motion-choices.d.ts +31 -0
  335. package/dist-pkg/ui/motion-choices.js +68 -0
  336. package/dist-pkg/ui/motion-scene.d.ts +24 -19
  337. package/dist-pkg/ui/motion-scene.js +29 -61
  338. package/dist-pkg/ui/mount-panel.d.ts +81 -0
  339. package/dist-pkg/ui/mount-panel.js +61 -0
  340. package/dist-pkg/ui/panel-shell.d.ts +65 -31
  341. package/dist-pkg/ui/panel-shell.js +92 -66
  342. package/dist-pkg/ui/panel-widgets.d.ts +150 -0
  343. package/dist-pkg/ui/panel-widgets.js +294 -0
  344. package/dist-pkg/ui/pause-buttons.d.ts +35 -0
  345. package/dist-pkg/ui/pause-buttons.js +66 -0
  346. package/dist-pkg/ui/pause-icons.d.ts +261 -347
  347. package/dist-pkg/ui/pause-icons.js +671 -601
  348. package/dist-pkg/ui/pause-markup.d.ts +86 -0
  349. package/dist-pkg/ui/pause-markup.js +125 -0
  350. package/dist-pkg/ui/reach-notice.d.ts +22 -23
  351. package/dist-pkg/ui/reach-notice.js +55 -58
  352. package/dist-pkg/ui/scan-overlay.d.ts +23 -0
  353. package/dist-pkg/ui/scan-overlay.js +50 -0
  354. package/dist-pkg/ui/screen-text.d.ts +25 -0
  355. package/dist-pkg/ui/screen-text.js +152 -0
  356. package/dist-pkg/ui/session-clock.d.ts +32 -0
  357. package/dist-pkg/ui/session-clock.js +67 -0
  358. package/dist-pkg/ui/settings-aac.d.ts +70 -0
  359. package/dist-pkg/ui/settings-aac.js +208 -0
  360. package/dist-pkg/ui/settings-audio.d.ts +97 -114
  361. package/dist-pkg/ui/settings-audio.js +493 -425
  362. package/dist-pkg/ui/settings-controls.d.ts +53 -96
  363. package/dist-pkg/ui/settings-controls.js +143 -215
  364. package/dist-pkg/ui/settings-empathy.d.ts +39 -30
  365. package/dist-pkg/ui/settings-empathy.js +53 -60
  366. package/dist-pkg/ui/settings-mobility.d.ts +192 -0
  367. package/dist-pkg/ui/settings-mobility.js +332 -0
  368. package/dist-pkg/ui/settings-motion.d.ts +91 -70
  369. package/dist-pkg/ui/settings-motion.js +287 -198
  370. package/dist-pkg/ui/settings-panel.d.ts +58 -45
  371. package/dist-pkg/ui/settings-panel.js +189 -94
  372. package/dist-pkg/ui/settings-typo.d.ts +29 -78
  373. package/dist-pkg/ui/settings-typo.js +158 -129
  374. package/dist-pkg/ui/settings-visual.d.ts +29 -87
  375. package/dist-pkg/ui/settings-visual.js +240 -193
  376. package/dist-pkg/ui/shell.d.ts +112 -135
  377. package/dist-pkg/ui/shell.js +148 -217
  378. package/dist-pkg/ui/simulation-list.d.ts +27 -0
  379. package/dist-pkg/ui/simulation-list.js +76 -0
  380. package/dist-pkg/ui/simulation-over-the-world.d.ts +23 -0
  381. package/dist-pkg/ui/simulation-over-the-world.js +131 -0
  382. package/dist-pkg/ui/simulation-refusal.d.ts +5 -31
  383. package/dist-pkg/ui/simulation-refusal.js +8 -56
  384. package/dist-pkg/ui/switchable-control.d.ts +11 -0
  385. package/dist-pkg/ui/switchable-control.js +19 -0
  386. package/dist-pkg/ui/title.d.ts +3 -12
  387. package/dist-pkg/ui/title.js +49 -18
  388. package/dist-pkg/ui/top-band.d.ts +26 -0
  389. package/dist-pkg/ui/top-band.js +96 -0
  390. package/dist-pkg/ui/typo-choices.d.ts +71 -0
  391. package/dist-pkg/ui/typo-choices.js +85 -0
  392. package/dist-pkg/ui/visual-axes-panel.d.ts +11 -47
  393. package/dist-pkg/ui/visual-axes-panel.js +12 -94
  394. package/dist-pkg/ui/visual-choices.d.ts +77 -0
  395. package/dist-pkg/ui/visual-choices.js +107 -0
  396. package/dist-pkg/ui/vlibras.d.ts +77 -10
  397. package/dist-pkg/ui/vlibras.js +130 -81
  398. package/dist-pkg/ui/voice-control.d.ts +68 -0
  399. package/dist-pkg/ui/voice-control.js +276 -0
  400. package/dist-pkg/ui/voice-settings.d.ts +95 -0
  401. package/dist-pkg/ui/voice-settings.js +352 -0
  402. package/dist-pkg/ui/where-the-child-is.d.ts +31 -0
  403. package/dist-pkg/ui/where-the-child-is.js +70 -0
  404. package/docs/CREDITS.md +300 -44
  405. package/docs/LICENSES.md +189 -145
  406. package/package.json +51 -27
  407. package/scripts/check-cartridge.mjs +78 -0
  408. package/scripts/game-build.d.mts +25 -0
  409. package/scripts/game-build.mjs +144 -0
  410. package/scripts/heavy-into-the-delivery.mjs +388 -0
  411. package/scripts/libras-avatar.json +680 -0
  412. package/scripts/libras-avatar.mjs +246 -0
  413. package/scripts/libras-glosses/gloss.py +95 -0
  414. package/scripts/libras-glosses/pyproject.toml +32 -0
  415. package/scripts/libras-glosses/uv.lock +781 -0
  416. package/scripts/libras-glosses.mjs +351 -0
  417. package/scripts/licences/Apache-2.0.txt +176 -0
  418. package/scripts/licences/GPL-3.0.txt +674 -0
  419. package/scripts/licences/MIT.txt +17 -0
  420. package/scripts/licences/OFL-1.1.txt +86 -0
  421. package/scripts/licences/UFL-1.0.txt +96 -0
  422. package/scripts/licences/fonts.mjs +389 -0
  423. package/scripts/licences/third-party.mjs +301 -0
  424. package/scripts/licences/vosk-browser.NOTICE.txt +268 -0
  425. package/app/public/vendor/fonts/comicneue-400.woff2 +0 -0
  426. package/app/public/vendor/fonts/comicneue-700.woff2 +0 -0
  427. package/app/public/vendor/fonts/fondamento-400-ext.woff2 +0 -0
  428. package/app/public/vendor/fonts/fondamento-400.woff2 +0 -0
  429. package/app/public/vendor/fonts/inter-400.woff2 +0 -0
  430. package/app/public/vendor/fonts/inter-700.woff2 +0 -0
  431. package/app/public/vendor/fonts/lato-400.woff2 +0 -0
  432. package/app/public/vendor/fonts/lato-700.woff2 +0 -0
  433. package/app/public/vendor/fonts/literata-400.woff2 +0 -0
  434. package/app/public/vendor/fonts/literata-700.woff2 +0 -0
  435. package/app/public/vendor/fonts/newsreader-400.woff2 +0 -0
  436. package/app/public/vendor/fonts/newsreader-700.woff2 +0 -0
  437. package/app/public/vendor/fonts/opendyslexic-400.woff2 +0 -0
  438. package/app/public/vendor/fonts/opensans-400.woff2 +0 -0
  439. package/app/public/vendor/fonts/opensans-700.woff2 +0 -0
  440. package/app/public/vendor/fonts/pinyon-400.woff2 +0 -0
  441. package/app/public/vendor/fonts/pressstart-400.woff2 +0 -0
  442. package/app/public/vendor/fonts/quattro-400.woff2 +0 -0
  443. package/app/public/vendor/fonts/quattro-700.woff2 +0 -0
  444. package/app/public/vendor/fonts/sourcesans-400.woff2 +0 -0
  445. package/app/public/vendor/fonts/sourcesans-700.woff2 +0 -0
  446. package/app/public/vendor/fonts/sourceserif-400.woff2 +0 -0
  447. package/app/public/vendor/fonts/sourceserif-700.woff2 +0 -0
  448. package/app/public/vendor/fonts/ufmag-400.woff2 +0 -0
  449. package/dist-pkg/core/anel.d.ts +0 -17
  450. package/dist-pkg/core/anel.js +0 -31
  451. package/dist-pkg/core/collision.d.ts +0 -21
  452. package/dist-pkg/core/collision.js +0 -62
  453. package/dist-pkg/core/layers.d.ts +0 -63
  454. package/dist-pkg/core/layers.js +0 -95
  455. package/dist-pkg/core/letter-grid.d.ts +0 -55
  456. package/dist-pkg/core/letter-grid.js +0 -116
  457. package/dist-pkg/core/password.d.ts +0 -34
  458. package/dist-pkg/core/password.js +0 -205
  459. package/dist-pkg/core/rotulo-acessivel.d.ts +0 -17
  460. package/dist-pkg/core/rotulo-acessivel.js +0 -41
  461. package/dist-pkg/core/run-state.d.ts +0 -115
  462. package/dist-pkg/core/run-state.js +0 -40
  463. package/dist-pkg/core/tiles.d.ts +0 -12
  464. package/dist-pkg/core/tiles.js +0 -61
  465. package/dist-pkg/core/world.d.ts +0 -4
  466. package/dist-pkg/core/world.js +0 -58
  467. package/dist-pkg/input/origem-sintetica.d.ts +0 -44
  468. package/dist-pkg/input/origem-sintetica.js +0 -60
  469. package/dist-pkg/input/transporte-em-uso.d.ts +0 -101
  470. package/dist-pkg/input/transporte-em-uso.js +0 -130
  471. package/dist-pkg/platform/audio-nav.d.ts +0 -51
  472. package/dist-pkg/platform/audio-nav.js +0 -99
  473. package/dist-pkg/platform/guide-intensity.d.ts +0 -40
  474. package/dist-pkg/platform/guide-intensity.js +0 -73
  475. package/dist-pkg/platform/pesados-catalogo.d.ts +0 -14
  476. package/dist-pkg/platform/pesados-catalogo.js +0 -177
  477. package/dist-pkg/platform/pesados.d.ts +0 -31
  478. package/dist-pkg/platform/pesados.js +0 -75
  479. package/dist-pkg/platform/vozes-prontas.d.ts +0 -28
  480. package/dist-pkg/platform/vozes-prontas.js +0 -61
  481. package/dist-pkg/render/camera.d.ts +0 -58
  482. package/dist-pkg/render/camera.js +0 -105
  483. package/dist-pkg/render/cenario-data.d.ts +0 -127
  484. package/dist-pkg/render/cenario-data.js +0 -145
  485. package/dist-pkg/render/city-tex.d.ts +0 -63
  486. package/dist-pkg/render/city-tex.js +0 -228
  487. package/dist-pkg/render/city-tiles.d.ts +0 -11
  488. package/dist-pkg/render/city-tiles.js +0 -140
  489. package/dist-pkg/render/draw.d.ts +0 -149
  490. package/dist-pkg/render/draw.js +0 -231
  491. package/dist-pkg/render/fx.d.ts +0 -63
  492. package/dist-pkg/render/fx.js +0 -123
  493. package/dist-pkg/render/minimap.d.ts +0 -11
  494. package/dist-pkg/render/minimap.js +0 -94
  495. package/dist-pkg/render/parallax.d.ts +0 -85
  496. package/dist-pkg/render/parallax.js +0 -158
  497. package/dist-pkg/render/player-anim.d.ts +0 -71
  498. package/dist-pkg/render/player-anim.js +0 -152
  499. package/dist-pkg/render/recycling-tex.d.ts +0 -48
  500. package/dist-pkg/render/recycling-tex.js +0 -164
  501. package/dist-pkg/render/scene-city.d.ts +0 -77
  502. package/dist-pkg/render/scene-city.js +0 -181
  503. package/dist-pkg/render/scene-parallax.d.ts +0 -72
  504. package/dist-pkg/render/scene-parallax.js +0 -426
  505. package/dist-pkg/render/scene-sky.d.ts +0 -126
  506. package/dist-pkg/render/scene-sky.js +0 -295
  507. package/dist-pkg/render/set-cenario.d.ts +0 -54
  508. package/dist-pkg/render/set-cenario.js +0 -103
  509. package/dist-pkg/render/textures.d.ts +0 -75
  510. package/dist-pkg/render/textures.js +0 -240
  511. package/dist-pkg/render/title-scene.d.ts +0 -46
  512. package/dist-pkg/render/title-scene.js +0 -75
  513. package/dist-pkg/render/weather.d.ts +0 -96
  514. package/dist-pkg/render/weather.js +0 -171
  515. package/dist-pkg/render/wheelchair-sprites.d.ts +0 -32
  516. package/dist-pkg/render/wheelchair-sprites.js +0 -69
  517. package/dist-pkg/render/world-tex.d.ts +0 -18
  518. package/dist-pkg/render/world-tex.js +0 -87
  519. package/dist-pkg/ui/activities-menu.d.ts +0 -258
  520. package/dist-pkg/ui/activities-menu.js +0 -648
  521. package/dist-pkg/ui/caa-sets.d.ts +0 -39
  522. package/dist-pkg/ui/caa-sets.js +0 -65
  523. package/dist-pkg/ui/latch-refusal.d.ts +0 -32
  524. package/dist-pkg/ui/latch-refusal.js +0 -60
  525. package/dist-pkg/ui/map-hub.d.ts +0 -56
  526. package/dist-pkg/ui/map-hub.js +0 -138
  527. package/dist-pkg/ui/settings-caa.d.ts +0 -45
  528. package/dist-pkg/ui/settings-caa.js +0 -137
  529. package/dist-pkg/ui/settings-motor.d.ts +0 -175
  530. package/dist-pkg/ui/settings-motor.js +0 -342
  531. package/dist-pkg/ui/webcam.d.ts +0 -7
  532. package/dist-pkg/ui/webcam.js +0 -93
package/docs/LICENSES.md CHANGED
@@ -1,170 +1,214 @@
1
- # O que governa o quê
1
+ # What governs what
2
2
 
3
- Este projeto tem **duas licenças e um terceiro regime**, e confundi-los seria afirmar direito que não se
4
- tem. Este ficheiro diz apenas **qual regra alcança qual coisa**. As atribuições estão em
5
- [`CREDITS.md`](CREDITS.md); as razões, nos registros citados em cada linha.
3
+ This project has **two licences and a third regime**, and confusing them would be claiming a right one does not
4
+ have. This file says only **which rule reaches which thing**. The attributions are in
5
+ [`CREDITS.md`](CREDITS.md); the reasons, in the records cited on each line.
6
6
 
7
- | o quê | regime | onde se decide |
7
+ | what | regime | where it is decided |
8
8
  |---|---|---|
9
- | **Código** | **AGPL-3.0-or-later** | ADR-0064 · texto integral em [`../LICENSE`](../LICENSE) |
10
- | **Arte própria** | **NÃO é FOSS** — direito autoral do autor, uso restrito | ADR-0010 pilar 10 · `research/LICENCAS-GERACAO-IMAGEM.md` |
11
- | **Conteúdo de terceiros** | a licença que o autor escolheu, preservada | requerimento, pedido `g` |
9
+ | **Code** | **AGPL-3.0-or-later** | ADR-0064 · full text in [`../LICENSE`](../LICENSE) |
10
+ | **Own art** | **NOT FOSS** — the author's copyright, restricted use | ADR-0010 pillar 10 · `research/LICENSES-IMAGE-GENERATION.md` |
11
+ | **Third-party content** | the licence its author chose, preserved | the filing, request `g` |
12
12
 
13
13
  ---
14
14
 
15
- ## 1 · O código é AGPL-3.0-or-later
16
-
17
- Todo programa deste repositório. O `-or-later` é deliberado.
18
-
19
- **Por que AGPL e não GPL:** a GPL obriga quem **conveia**, e rodar serviço não é conveiar — a seção 0 da
20
- própria GPL separa `propagate` de `convey`. Um fornecedor que pegasse este código, melhorasse e hospedasse
21
- a sala de aula como serviço **não deveria a fonte a ninguém**. A seção 13 da AGPL fecha exatamente isso, e é
22
- o argumento que o requerimento faz ao Município na alínea `e`. Ver **ADR-0064**.
23
-
24
- ⚠️ **Titularidade patrimonial: o MUNICÍPIO, não o desenvolvedor.** Software produzido no exercício das
25
- funções pertence ao empregador (Lei nº 9.609/1998, art. 4º), e é por isso que a publicação sob AGPL é
26
- objeto de **pedido** no requerimento — ato do Poder Executivo — e não decisão de quem escreveu o código.
27
-
28
- ⚠️ **E é AQUI que essa titularidade fica dita, não no nome do pacote.** O escopo era `@pm-monte` para
29
- carregar esse fato (ADR-0036); passou a ser **`@the-inclusionist`** (**ADR-0071**), porque nome é lido por
30
- quem não vai abrir o repositório, e um escopo com o nome da Prefeitura publicado por servidor **antes do
31
- ato** é reivindicação pública de nome alheio. A regra é a mesma do **ADR-0066 §2**: a posse se declara
32
- DENTRO — neste ficheiro, na `LICENSE` e nos registros —, onde lê quem pretende usar.
33
-
34
- ## 2 · A arte NÃO é AGPL, e isso é decisão, não omissão
35
-
36
- Programa é o que a **Lei nº 9.609/1998** define. **Arte segue a Lei nº 9.610/1998** e pertence a quem a fez.
37
- Estender a AGPL à arte daria mais do que a lei pede **e** disporia de direito alheio.
38
-
39
- ⚠️ **E há uma razão de produto, não só jurídica:** o requisito é que os personagens **não** sejam de uso
40
- livre — não aparecerem em produto adulto, por exemplo. Isso é **incompatível com FOSS por construção**:
41
- licença livre não pode restringir campo de uso (liberdade 0; critério 6 da OSI, "sem discriminação de área
42
- de atuação"). Não existe arte simultaneamente livre e de uso restrito. A escolha foi feita com o
43
- trade-off escrito: **código FOSS + arte não-FOSS**.
44
-
45
- **A proteção é uma pilha de três, do mais forte ao mais fraco** (`research/LICENCAS-GERACAO-IMAGEM.md`):
46
-
47
- 1. **Marca registrada** dos personagens — nome e design-assinatura. É o esteio, porque barra uso que cause
48
- confusão ou diluição **independentemente de copyright**. Seletiva: nem todo personagem é registrado.
49
- 2. **Licença de arte própria**, não-FOSS, sobre os dados de arte e os algoritmos de composição.
50
- 3. **Autoria humana no algoritmo procedural** — quanto mais o humano cria, seleciona e modifica (em vez de
51
- apenas pedir a um gerador), mais forte o copyright, e mais exequível a licença (2).
52
-
53
- ⚠️ **E a ressalva que ordena a pilha:** arte derivada de IA **pode ser incopyrightável** — o US Copyright
54
- Office já o disse —, o que pode tornar a licença (2) **inexequível sozinha**. Por isso a marca é
55
- indispensável, e não um reforço opcional. Escrito aqui porque é o ponto em que a proteção falha em
56
- silêncio se ninguém souber.
57
-
58
- ## 3 · Conteúdo de terceiros mantém a licença de quem o fez
59
-
60
- Nem tudo aqui é nosso, e o que não é **não muda de licença por estar neste repositório**. É o que o pedido
61
- `g` do requerimento pede que conste dos autos: a relação nominal desses elementos e de suas licenças.
62
-
63
- - **Código de terceiros** — Clarity (MIT), sherpa-onnx (Apache-2.0), Piper (MIT), eSpeak NG (GPL-3.0).
64
- Detalhe e atribuição em [`CREDITS.md`](CREDITS.md).
65
- - **Vozes** — licença por voz, no `MODEL_CARD` de cada pacote. **A confirmar por voz antes de distribuição
66
- formal** — está assim no `CREDITS.md` e continua verdade.
67
- - **Pictogramas** — a camada é decidida pela **LICENÇA e por mais nada** (**ADR-0028**): Mulberry,
68
- Blissymbolics e Tawasol sob CC BY-SA são embutíveis; ARASAAC é **baixado, nunca redistribuído**; Sclera,
69
- PCS, SymbolStix e Widgit aparecem no menu como **indisponíveis, aguardando negociação**.
70
- ⚠️ E o **SA** alcança o que nós alterarmos: um pictograma reajustado à paleta de alto contraste
71
- (ADR-0011) ou à grade de pixels continua CC BY-SA.
72
- - **Tipografias** — roster e restrições no **ADR-0012**. ⚠️ Ronde e as alternativas OPTIFrench-Script e
73
- Merveille são **gratuitas só para uso pessoal e NÃO podem ser empacotadas**: oferece-se download, e a
74
- opção fica desabilitada quando nenhuma está presente.
75
- - **Arte de terceiros — TRÊS PORTAS, e o que decide é compatibilidade com o projeto** (**ADR-0133**), não a
76
- família a que um nome pertence. Quatro perguntas: podemos **derivar**? pode ser usada **comercialmente**?
77
- podemos **conveiar** o ficheiro no que publicamos? alguma coisa **viaja** da fonte para a nossa saída?
78
- - **Porta `licenca`** — uma licença pública já medida: **CC0 1.0**, **CC BY 3.0/4.0**, **OGA-BY 3.0/4.0**,
79
- e as permissivas de software (**MIT**, **Apache-2.0**) quando a arte carrega uma. ⚠️ A OGA-BY **não é
80
- Creative Commons** — a própria CC declara que não a endossa — e é a CC BY *menos* a restrição sobre
81
- medidas técnicas, logo estritamente mais permissiva. 📌 Um nome novo não é recusado: é **referido**, e
82
- entra assim que um registo responder as quatro perguntas para ele.
83
- - **Porta `concessao`** — o autor escreveu a permissão, sem nome de licença conhecido. A linha do livro
84
- guarda a **URL onde a concessão está escrita**, porque uma permissão que ninguém consegue abrir é
85
- memória e não permissão.
86
- - **Porta `ponte`** — copyleft **CC BY-SA** entra convertido em **`GPL-3.0-only`** na nossa saída. O
87
- mecanismo é público e tem três degraus: a CC BY-SA 3.0 §4(b)(ii) deixa uma **adaptação** sair como 4.0;
88
- a Creative Commons declarou a GPLv3 compatível num sentido só em 08/10/2015; e o **§13 da GPLv3** permite
89
- combinar obra GPLv3 com obra AGPLv3 num único trabalho. ⚠️ Exige **fonte modificável** — a imagem
90
- semântica mais o dicionário de paletas —, é de **sentido único e permanente**, e só abre para
91
- **adaptação**: nenhum ficheiro CC BY-SA entra tal e qual.
92
- 🔴 **E essa fonte modificável AINDA NÃO EXISTE.** A versão anterior desta linha dizia «o que este projeto
93
- já mantém», e era falsa: não há `app/js/art/`, não há formato semântico e não há editor. **Enquanto não
94
- houver, esta porta está descrita e não está aberta** — o LPC não entra. Ver `game-design/plano-arte-procedural.md`.
95
- 🔴 **E o que não tem porta nenhuma: ND** (proíbe derivar, e recolorir já é derivar) e **NC** (deixaria a
96
- arte mais estreita que o CÓDIGO — a AGPL permite uso comercial, e quem ela convida seria travado por um
97
- sprite; e a fronteira do NC é indefinida, com uma implantação municipal em cima dela).
98
- 📌 **Não há quarentena, e já houve.** O ADR-0107 punha o Liberated Pixel Cup atrás de uma parede; a ponte
99
- substitui-a, porque a arte que a atravessa **deixa de ser share-alike do nosso lado** em vez de ficar
100
- murada do resto.
101
- - **Arte de terceiros — as fontes admitidas** (decisão do Dev, 2026-09-09; detalhe em
102
- [`../art/README.md`](../art/README.md)). Entram **antes de qualquer arte do próprio projeto**:
103
- **Kenney** (`kenney.nl/assets`, CC0 1.0, confirmado em três lugares) · **ansimuz** (`ansimuz.itch.io`,
104
- CC0 1.0 **por pacote** — o perfil não concede nada) · **Tiny Swords** (`pixelfrog-assets.itch.io`), que
105
- entra **pelas duas portas**: o ficheiro `TS_old version_CC0 Licensed` é CC0, e o **pacote atual** entra
106
- pela **concessão** do autor, cujos termos permitem uso pessoal e comercial e modificação à vontade sem
107
- exigir crédito · e o **Liberated Pixel Cup** (`OpenGameArt/LiberatedPixelCup`), pela **ponte**, como
108
- adaptação sob `GPL-3.0-only`.
109
- **Quais recursos entram, e para que jogos, é direção de arte** e não se decide aqui.
110
- ⚠️ **Atribuição é condição de uso, por recurso**, e a **fonte guarda-se como URL**: uma licença declarada
111
- por quem nos entrega o ficheiro é indício, não autoridade, e sem a origem registada não há contra o que a
112
- conferir. Recurso sem autor conhecido **não entra** — «não consegui descobrir» não é licença.
15
+ ## 1 · The code is AGPL-3.0-or-later
16
+
17
+ Every program in this repository. The `-or-later` is deliberate.
18
+
19
+ **Why AGPL and not GPL:** the GPL binds whoever **conveys**, and running a service is not conveying — section 0 of
20
+ the GPL itself separates `propagate` from `convey`. A supplier who took this code, improved it and hosted
21
+ the classroom as a service **would owe the source to nobody**. Section 13 of the AGPL closes exactly that, and it is
22
+ the argument the filing makes to the Município in item `e`. See **ADR-0064**.
23
+
24
+ ⚠️ **Patrimonial ownership: the MUNICÍPIO, not the developer.** Software produced in the exercise of one's
25
+ duties belongs to the employer (Lei nº 9.609/1998, art. 4º), and that is why publication under the AGPL is
26
+ the object of a **request** in the filing — an act of the Executive Branch — and not a decision of whoever wrote the code.
27
+
28
+ ⚠️ **And it is HERE that this ownership is stated, not in the package name.** The scope was `@pm-monte` to
29
+ carry that fact (ADR-0036); it became **`@the-inclusionist`** (**ADR-0071**), because a name is read by
30
+ people who will not open the repository, and a scope bearing the City Hall's name published by a civil servant **before the
31
+ act** is a public claim to someone else's name. The rule is the same as **ADR-0066 §2**: ownership is declared
32
+ INSIDE — in this file, in the `LICENSE` and in the records —, where whoever intends to use it reads.
33
+
34
+ ## 2 · The art is NOT AGPL, and that is a decision, not an omission
35
+
36
+ A program is what **Lei nº 9.609/1998** defines. **Art follows Lei nº 9.610/1998** and belongs to whoever made it.
37
+ Extending the AGPL to the art would give more than the law asks **and** would dispose of someone else's right.
38
+
39
+ ⚠️ **And there is a product reason, not only a legal one:** the requirement is that the characters **not** be free to
40
+ use — not appear in an adult product, for example. That is **incompatible with FOSS by construction**:
41
+ a free licence cannot restrict the field of use (freedom 0; criterion 6 of the OSI, "no discrimination against fields
42
+ of endeavor"). There is no art that is at the same time free and of restricted use. The choice was made with the
43
+ trade-off written down: **FOSS code + non-FOSS art**.
44
+
45
+ **The protection is a stack of three, from strongest to weakest** (`research/LICENSES-IMAGE-GENERATION.md`):
46
+
47
+ 1. **Registered trademark** of the characters — name and signature design. It is the mainstay, because it bars use that causes
48
+ confusion or dilution **regardless of copyright**. Selective: not every character is registered.
49
+ 2. **Own art licence**, non-FOSS, over the art data and the composition algorithms.
50
+ 3. **Human authorship in the procedural algorithm** — the more the human creates, selects and modifies (instead of
51
+ just asking a generator), the stronger the copyright, and the more enforceable the licence (2).
52
+
53
+ ⚠️ **And the caveat that orders the stack:** AI-derived art **may be uncopyrightable** — the US Copyright
54
+ Office has said so —, which can make licence (2) **unenforceable on its own**. That is why the trademark is
55
+ indispensable, and not an optional reinforcement. Written here because it is the point where the protection fails in
56
+ silence if nobody knows.
57
+
58
+ ## 3 · Third-party content keeps the licence of whoever made it
59
+
60
+ Not everything here is ours, and what is not **does not change licence by being in this repository**. That is what
61
+ request `g` of the filing asks to be put on record: the itemized list of those elements and their licences.
62
+
63
+ - **Third-party code** — eSpeak NG (GPL-3.0). Clarity (MIT) left this repository with the platformer, and its
64
+ credit travels with `game-platformer`; Piper and sherpa-onnx left (ADR-0207). Detail and attribution in
65
+ [`CREDITS.md`](CREDITS.md).
66
+ The engine itself loads the neural voice's runtime (ADR-0216): eSpeak NG in WebAssembly (**GPL-3.0-or-later**,
67
+ compatible with the AGPL-3.0-or-later; built by the project from commit `530bf0ab` with `scripts/models/build-espeak-ng.ps1`,
68
+ which with that commit is its Corresponding Source, issue #192) and `onnxruntime-web` 1.27.0 (**MIT**) are catalogued
69
+ heavy files (`app/js/platform/heavy-catalogue.ts`), fetched by the build into the delivery's `heavy/` folder and read
70
+ from the page's own origin — only for a game that declares `uses: { neuralVoice: true }`. The published npm package
71
+ carries neither. The other runtimes and models in the same catalogue, each credited in `CREDITS.md`:
72
+ - **vision** — MediaPipe `@mediapipe/tasks-vision` 1.0.1 and its face, gesture and hand models: **Apache-2.0**;
73
+ - **reading** — Whisper small (pt, exported here): **Apache-2.0**; Moonshine streaming small (en, and es exported
74
+ here): **MIT**;
75
+ - **commands** — the Vosk browser runtime built here from vosk-browser, vosk-api and Kaldi: **Apache-2.0**, with the
76
+ BSD, Zlib and MIT parts its `NOTICE` lists; the Vosk small models (pt, en-us, es): **Apache-2.0**.
77
+ - **Libras** — the Libras player deaf mode signs with (ADR-0234, route B), only in a delivery built with
78
+ `inclusionist-heavy --libras`: one avatar and one clip per sign, which `scripts/libras-export.mjs` exports from LAViD's
79
+ `vlibras-dictionary-sources` `.blend` files (**GPL-3.0**, pinned in `scripts/libras-export/sources.json`) — **GPL-3.0
80
+ derivatives** whose Corresponding Source is those `.blend` files plus the two export scripts. The delivery carries them
81
+ (`libras/avatar/`, pinned in `scripts/libras-avatar.json`) with the GPL-3.0 text and a NOTICE naming that source; the npm
82
+ package carries none. **Nothing closed and nothing patched is served**: the VLibras Unity player of route A — Unity
83
+ Technologies' proprietary runtime, with its `eval` rewritten at delivery time — was a declared, temporary exception, and
84
+ it left the engine and the delivery in phase B3.
85
+ The Libras **glosses** that delivery carries (`libras/avatar/glosses.json`) are made at build time by LAViD's
86
+ `vlibras-translator` 1.3.3 (**LGPL-3.0**, rule-based mode only) over spaCy (**MIT**) and its Portuguese model
87
+ `pt_core_news_md` 3.8.0 (**CC BY-SA 4.0**) — tools the build machine runs, **none of which is distributed**
88
+ (`scripts/libras-glosses/`). Whether a gloss is a derivative of the model is **not determined**; the project believes it
89
+ is not, which is not a legal opinion. See `CREDITS.md`.
90
+ The player that draws the avatar runs on **three.js** 0.186.1 (**MIT**), the engine's one run-time npm `dependency`,
91
+ pinned exactly and reached only by a dynamic `import()` at the first sign in deaf mode (ADR-0234 errata); the built chunk
92
+ that carries it keeps three.js's `@license` headers (`CREDITS.md`).
93
+
94
+ ⚠️ For most of these the project holds a statement of the licence, not its upstream text, and several copyright
95
+ lines are marked **UNVERIFIED** in `CREDITS.md`, which says what each line rests on.
96
+ - **Voices** — only **Kokoro-82M** (Apache-2.0 weights trained on permissive audio; `CREDITS.md`). A voice enters when its licence
97
+ AND its starting point's (the model it was fine-tuned from, and that model's data) have been read — that chain took the Piper
98
+ voices out (ADR-0207, [`notices/2026-09-14-piper-voices-withdrawn.md`](notices/2026-09-14-piper-voices-withdrawn.md)).
99
+ - **Pictograms** — **none is used** (**ADR-0233**, replacing ADR-0028's roster): the only candidates are
100
+ **ARASAAC** and **PCS**, each only once a licence is obtained, and no licence exists today. Both appear in the menu
101
+ **locked, with the reason «no licence»**; a set with no recorded licence can never be selected
102
+ (`tests/aac-sets.node.test.js`).
103
+ - **Typefaces** — roster and restrictions in **ADR-0012**. ⚠️ Ronde and the alternatives OPTIFrench-Script and
104
+ Merveille are **free for personal use only and CANNOT be packaged**: a download is offered, and the
105
+ option stays disabled when none of them is present.
106
+ The engine **packages** only the faces it draws with itself (ADR-0255) — every family `app/public/vendor/fonts.css`
107
+ declares, **19 families in 29 `.woff2` files**, all under the **SIL OFL 1.1** — which the service worker precaches into every
108
+ install and the npm package ships. Every other family is the **font library**, **194 families in 291 files** in
109
+ `the-inclusionist-lfs/fonts/`: **191 under the SIL OFL 1.1**, **2 under Apache-2.0** (Luckiest Guy, Smokum) and **1 under the
110
+ Ubuntu Font Licence 1.0** (Ubuntu), each as its own font states it, delivered only where a game declares it
111
+ (`inclusionist-heavy --fonts`). Every licence asks for the notice and the text to travel **with each copy**, so they sit
112
+ **beside the fonts**: in `app/public/vendor/fonts-licences/` for the engine's (beside `fonts/`, so the notice revalidates while
113
+ the fonts keep their year of cache: `NOTICE.txt`, every family with its files, its licence and its copyright line as read from
114
+ the font, and `OFL-1.1.txt`), and in each library folder and each delivered family's folder for the library's (its licence
115
+ text and its `NOTICE.txt`; the mirror's folders also carry a `SHA256SUMS`). Made by `scripts/licences/fonts.mjs`, which keeps
116
+ the three texts; a family without an entry, or under a licence whose text is not kept, is refused
117
+ (`tests/font-licences.node.test.js`). The library's reserved-name families are their authors' originals (ADR-0254).
118
+ Attribution in [`CREDITS.md`](CREDITS.md).
119
+ - **Third-party art — THREE DOORS, and what decides is compatibility with the project** (**ADR-0133**), not the
120
+ family a name belongs to. Four questions: may we **derive**? may it be used **commercially**?
121
+ may we **convey** the file in what we publish? does anything **travel** from the source to our output?
122
+ - **Door `licenca`** — a public licence already measured: **CC0 1.0**, **CC BY 3.0/4.0**, **OGA-BY 3.0/4.0**,
123
+ and the permissive software licences (**MIT**, **Apache-2.0**) when the art carries one. ⚠️ OGA-BY **is not
124
+ Creative Commons** — CC itself declares that it does not endorse it — and it is CC BY *minus* the restriction on
125
+ technical measures, so strictly more permissive. 📌 A new name is not refused: it is **referred**, and
126
+ comes in as soon as a record answers the four questions for it.
127
+ - **Door `concessao`** — the author wrote the permission, with no known licence name. The ledger row
128
+ keeps the **URL where the grant is written**, because a permission nobody can open is
129
+ memory and not permission.
130
+ - **Door `ponte`** — copyleft **CC BY-SA** comes in converted into **`GPL-3.0-only`** in our output. The
131
+ mechanism is public and has three steps: CC BY-SA 3.0 §4(b)(ii) lets an **adaptation** go out as 4.0;
132
+ Creative Commons declared GPLv3 one-way compatible on 2015-10-08; and **§13 of the GPLv3** allows
133
+ combining a GPLv3 work with an AGPLv3 work into a single work. ⚠️ It requires a **modifiable source** — the semantic
134
+ image plus the palette dictionary —, it is **one-way and permanent**, and it only opens for
135
+ **adaptation**: no CC BY-SA file comes in as it is.
136
+ 🔴 **And that modifiable source DOES NOT EXIST YET.** The previous version of this line said it was something
137
+ this project already maintains, and it was false: there is no `app/js/art/`, there is no semantic format and there is no editor. **As long as
138
+ there is not, this door is described and not open** — the LPC does not come in. See `game-design/plan-procedural-art.md`.
139
+ 🔴 **And what has no door at all: ND** (forbids deriving, and recolouring is already deriving) and **NC** (it would make the
140
+ art narrower than the CODE — the AGPL allows commercial use, and whoever it invites would be blocked by a
141
+ sprite; and the NC boundary is undefined, with a municipal deployment sitting on it).
142
+ 📌 **There is no quarantine, and there was one.** ADR-0107 put the Liberated Pixel Cup behind a wall; the bridge
143
+ replaces it, because the art that crosses it **stops being share-alike on our side** instead of staying
144
+ walled off from the rest.
145
+ - **Third-party art — the admitted sources** (the Dev's decision, 2026-09-09; detail in
146
+ [`../art/README.md`](../art/README.md)). They come in **before any of the project's own art**:
147
+ **Kenney** (`kenney.nl/assets`, CC0 1.0, confirmed in three places) · **ansimuz** (`ansimuz.itch.io`,
148
+ CC0 1.0 **per pack** — the profile grants nothing) · **Tiny Swords** (`pixelfrog-assets.itch.io`), which
149
+ comes in **through both doors**: the file `TS_old version_CC0 Licensed` is CC0, and the **current pack** comes in
150
+ through the author's **grant**, whose terms allow personal and commercial use and modification at will without
151
+ requiring credit · and the **Liberated Pixel Cup** (`OpenGameArt/LiberatedPixelCup`), through the **bridge**, as an
152
+ adaptation under `GPL-3.0-only`.
153
+ **Which resources come in, and for which games, is art direction** and is not decided here.
154
+ ⚠️ **Attribution is a condition of use, per resource**, and the **source is kept as a URL**: a licence declared
155
+ by whoever hands us the file is a clue, not an authority, and without the recorded origin there is nothing to
156
+ check it against. A resource with no known author **does not come in** — *I could not find out* is not a licence.
113
157
 
114
158
  ---
115
159
 
116
- ## 4 · Inventário da arte — por enquanto, só a do PixelLab
160
+ ## 4 · Art inventory — for now, only the PixelLab art
117
161
 
118
- O ADR-0066 §3 põe este inventário entre as condições para qualquer repositório virar público, e o §2 desta
119
- página dizia que ele ainda não existia. Existe agora, **com o alcance que o Dev deu: apenas a arte gerada
120
- no PixelLab.**
162
+ ADR-0066 §3 puts this inventory among the conditions for any repository to become public, and §2 of this
163
+ page said it did not exist yet. It exists now, **with the scope the Dev gave it: only the art generated
164
+ in PixelLab.**
121
165
 
122
- ### O que foi gerado, e onde está registrado
166
+ ### What was generated, and where it is recorded
123
167
 
124
- **100 gerações**, de 2026-06-01 em diante, com data, ferramenta, custo estimado e **o prompt de cada uma**:
125
- [`research/auditoria-creditos-pixellab.csv`](research/auditoria-creditos-pixellab.csv). O prompt está lá de
126
- propósito — é o que permite a alguém de fora refazer a pergunta *"de onde veio esta imagem?"* sem depender da
127
- memória de ninguém.
168
+ **100 generations**, from 2026-06-01 onwards, with date, tool, estimated cost and **the prompt of each one**:
169
+ [`research/pixellab-credits-audit.csv`](research/pixellab-credits-audit.csv). The prompt is there on
170
+ purpose — it is what lets someone from outside ask again *"where did this image come from?"* without depending on
171
+ anyone's memory.
128
172
 
129
- ### O regime, e a restrição que viaja junto
173
+ ### The regime, and the restriction that travels with it
130
174
 
131
- Conforme a pesquisa de licenças (`research/LICENCAS-GERACAO-IMAGEM.md`), o PixelLab.ai é o gerador com os
132
- termos mais limpos do levantamento: **a titularidade da imagem é de quem gerou**, o uso comercial é
133
- permitido — *"usar, modificar e distribuir … para qualquer fim"* —, e **não há exigência de atribuição**.
175
+ According to the licence research (`research/LICENSES-IMAGE-GENERATION.md`), PixelLab.ai is the generator with the
176
+ cleanest terms of the survey: **the image belongs to whoever generated it**, commercial use is
177
+ allowed — to use, modify and distribute … for any purpose —, and **there is no attribution requirement**.
134
178
 
135
- ⚠️ **E há UMA restrição, que não é nossa e por isso não podemos dispensá-la: as imagens não podem ser usadas
136
- para TREINAR MODELO.** Isso importa aqui por dois motivos concretos:
179
+ ⚠️ **And there is ONE restriction, which is not ours and so we cannot waive it: the images may not be used
180
+ to TRAIN A MODEL.** That matters here for two concrete reasons:
137
181
 
138
- 1. A arte deste projeto **não é FOSS** (§2), então a licença de arte própria é nossa para escrever — e ela
139
- tem de **carregar esta restrição adiante**, ou concederíamos a terceiros mais do que recebemos.
140
- 2. O alvo declarado é **arte procedural semântica** (`plano-arte-procedural.md`): imagem semântica + paletas.
141
- Se algum dia essa geração passar por um modelo treinado nos próprios assets, esta linha é a que diz que
142
- não pode.
182
+ 1. This project's art **is not FOSS** (§2), so the own art licence is ours to write — and it
183
+ has to **carry this restriction forward**, or we would grant third parties more than we received.
184
+ 2. The declared target is **semantic procedural art** (`game-design/plan-procedural-art.md`): semantic image + palettes.
185
+ If one day that generation goes through a model trained on the assets themselves, this line is the one that says it
186
+ may not.
143
187
 
144
- ### O que este inventário NÃO cobre, e por quê
188
+ ### What this inventory does NOT cover, and why
145
189
 
146
- **ARTE PRÓPRIA NÃO EXISTE.** Não é que esteja fora do inventário — não há nenhuma para inventariar, e é por
147
- isso que esta seção cobre só o PixelLab.
190
+ **OWN ART DOES NOT EXIST.** It is not that it is outside the inventory — there is none to inventory, and that is
191
+ why this section covers only PixelLab.
148
192
 
149
- O Dev passa a produzi-la **depois de o Município aceitar o arranjo inteiro**: o código sob **AGPL-3.0** e a
150
- arte sob **licença CC adequada**. Enquanto essa aceitação não estiver documentada, não há arte própria e
151
- não há o que licenciar.
193
+ The Dev starts producing it **after the Município accepts the whole arrangement**: the code under **AGPL-3.0** and the
194
+ art under **a suitable CC licence**. As long as that acceptance is not documented, there is no own art and
195
+ nothing to license.
152
196
 
153
- ⚠️ **E arte não vai para AGPL — vai para CC.** A AGPL é licença de PROGRAMA (Lei 9.609); arte é obra da Lei
154
- 9.610 e o instrumento usual dela é o Creative Commons. Está escrito aqui porque a versão anterior deste
155
- parágrafo levantava, como se fosse dúvida em aberto, a hipótese de a arte própria virar AGPL. Não era
156
- dúvida: era erro, sobre uma coisa que ainda não existe.
197
+ ⚠️ **And art does not go to the AGPL — it goes to CC.** The AGPL is a licence for a PROGRAM (Lei 9.609); art is a work under Lei
198
+ 9.610 and its usual instrument is Creative Commons. It is written here because the previous version of this
199
+ paragraph raised, as if it were an open question, the hypothesis of own art becoming AGPL. It was not a
200
+ question: it was an error, about something that does not exist yet.
157
201
 
158
- **Qual CC** é escolha para quando houver arte a licenciar, e não antes. O §2 desta página fica de pé como
159
- está: ele descreve o regime da arte que EXISTE hoje.
202
+ **Which CC** is a choice for when there is art to license, and not before. §2 of this page stands as
203
+ it is: it describes the regime of the art that EXISTS today.
160
204
 
161
205
  ---
162
206
 
163
- ## O que este ficheiro NÃO faz
207
+ ## What this file does NOT do
164
208
 
165
- - **Não é parecer jurídico.** É a declaração de escopo que um leitor precisa para não assumir que a AGPL da
166
- raiz alcança tudo. Onde há dúvida de propriedade intelectual, a fonte é a Procuradoria — que o requerimento
167
- aciona no pedido `c`.
168
- - **Não substitui o `CREDITS.md`**, que é onde mora a atribuição. Fato duplicado apodrece.
169
- - **Não lista a arte própria peça a peça** — e agora isso é ALCANCE e não omissão: o §4 inventaria a
170
- arte do PixelLab e diz, na mesma seção, por que a arte própria ainda não entrou.
209
+ - **It is not a legal opinion.** It is the scope statement a reader needs so as not to assume that the root AGPL
210
+ reaches everything. Where there is an intellectual-property doubt, the source is the Procuradoria (the municipal attorney's office) — which the filing
211
+ calls on in request `c`.
212
+ - **It does not replace `CREDITS.md`**, which is where attribution lives. A duplicated fact rots.
213
+ - **It does not list the own art piece by piece** — and now that is SCOPE and not omission: §4 inventories the
214
+ PixelLab art and says, in the same section, why the own art has not come in yet.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@the-inclusionist/engine",
3
- "version": "9.0.0",
3
+ "version": "11.0.0",
4
4
  "type": "module",
5
5
  "description": "Accessibility-first (WCAG 2.2 + GAG) engine for educational 2D pixel-art games, built with PixiJS. Screen reader, sonar, high contrast by role, colour-vision filters, remappable input as intent, i18n and offline PWA — the parts every game inherits (ADR-0035, ADR-0036).",
6
6
  "comment:exports": [
@@ -34,8 +34,12 @@
34
34
  "that used to link it left with the cartridge (issue #111), and the typography panel went on offering",
35
35
  "seventeen families of which none loaded — the child picks one, the menu marks it active, and the browser",
36
36
  "draws the system font. No error anywhere. `app/quiz.html` links it now, and",
37
- "`tests/fontes-carregam.node.test.js` holds both halves: no offerable font without a `@font-face`, and",
38
- "the host actually loading the sheet."
37
+ "`tests/an-offered-font-loads.node.test.js` holds both halves: no offerable font without a `@font-face`, and",
38
+ "the host actually loading the sheet.",
39
+ "`./build` IS A BUILD SCRIPT, NOT ENGINE CODE (ADR-0253): the game's `vite.config` wraps its config in `defineGameBuild`,",
40
+ "so `vite build` builds its app and `vite build --mode cartridge` its cartridge; `inclusionist-check-cartridge` (bin) runs",
41
+ "the boot's own refusals on the built cartridge. Both live in `scripts/` and import no package: the types are emitted with",
42
+ "the game's own `typescript`. `tests/the-engine-builds-both-targets.node.test.js` holds them."
39
43
  ],
40
44
  "exports": {
41
45
  ".": {
@@ -70,17 +74,21 @@
70
74
  "types": "./dist-pkg/i18n/*.d.ts",
71
75
  "default": "./dist-pkg/i18n/*.js"
72
76
  },
77
+ "./build": {
78
+ "types": "./scripts/game-build.d.mts",
79
+ "default": "./scripts/game-build.mjs"
80
+ },
73
81
  "./style.css": "./app/css/style.css",
74
82
  "./assets/vendor/*": "./app/public/vendor/*",
75
83
  "./package.json": "./package.json"
76
84
  },
77
85
  "types": "./dist-pkg/boot/create-game.d.ts",
78
86
  "comment:build-scripts": [
79
- "`dist-pkg/` é GERADO e NÃO versionado (como `dist/`), e o `exports` aponta para dentro dele — então num",
80
- "clone limpo o pacote existe e não resolve nada. Daí DOIS ganchos, que cobrem entradas diferentes:",
81
- "`prepare` roda no `npm install` da própria pasta e no `npm ci` da CI; `prepack` roda antes de empacotar.",
82
- "⚠️ E o consumidor que mais depende disto hoje não é o registro: `the-inclusionist/hartwig-zdog-chess`",
83
- "consome esta engine por `file:../SP-the-inclusionist-tracer`, ou seja, lê ESTA pasta ao vivo."
87
+ "`dist-pkg/` is GENERATED and NOT versioned (like `dist/`), and `exports` points inside it — so in a",
88
+ "clean clone the package exists and resolves nothing. Hence TWO hooks, covering different entrances:",
89
+ "`prepare` runs on `npm install` of this folder itself and on CI's `npm ci`; `prepack` runs before packing.",
90
+ "⚠️ `prepare` is also what serves a consumer that reads THIS folder live through a `file:` dependency",
91
+ "instead of the registry — a local checkout of a game, for instance."
84
92
  ],
85
93
  "sideEffects": [
86
94
  "*.css"
@@ -107,24 +115,39 @@
107
115
  "LICENSE",
108
116
  "README.md",
109
117
  "docs/LICENSES.md",
110
- "docs/CREDITS.md"
118
+ "docs/CREDITS.md",
119
+ "scripts/heavy-into-the-delivery.mjs",
120
+ "scripts/game-build.mjs",
121
+ "scripts/game-build.d.mts",
122
+ "scripts/check-cartridge.mjs",
123
+ "scripts/licences",
124
+ "scripts/libras-glosses.mjs",
125
+ "scripts/libras-glosses/pyproject.toml",
126
+ "scripts/libras-glosses/uv.lock",
127
+ "scripts/libras-glosses/gloss.py",
128
+ "scripts/libras-avatar.mjs",
129
+ "scripts/libras-avatar.json"
111
130
  ],
112
- "comment:no-dependencies": [
113
- "⚠️ ESTE PACOTE NÃO TEM `dependencies`, E ISSO É UMA DECISÃO MEDIDA (ADR-0094), não um acaso.",
114
- "A 6.36.1 saiu com `@mintplex-labs/piper-tts-web` em `devDependencies` enquanto `platform/tts` — código",
115
- "EMBARCADO, alcançado por `createGame` — o nomeava num `import()`. O npm não instala devDependencies para",
116
- "quem consome, então a versão publicada NÃO COMPILAVA para ninguém (ADR-0093).",
117
- "O conserto óbvio era mover para `dependencies`, e ele foi feito e DESFEITO no mesmo dia, por uma medida",
118
- "que faltava: o fornecedor traz `onnxruntime-web` como peer NÃO-opcional, que o npm instala sozinho —",
119
- "**135,4 MB** no `node_modules` de todo consumidor, incluindo um jogo que nunca fale por voz neural.",
120
- "⚠️ `optionalDependencies` NÃO resolveria: o npm as instala por omissão; só tolera a falha da instalação.",
121
- "O motor neural passa a chegar por PORTA — `carregarVozNeural` em `CreateGameOptions`, uma linha do lado",
122
- "do jogo. `main.ts` (o app DESTE repositório, que fica fora do pacote) é o único ponto da árvore que",
123
- "nomeia o fornecedor, e é por isso que ele continua em `devDependencies` aqui.",
124
- "O gate que prende as duas direções é `tests/engine-package.node.test.js`: nenhum módulo embarcado pode",
125
- "nomear pacote não declarado, e nada declarado pode ficar sem quem o nomeie. É ele que faz a troca por",
126
- "sherpa-onnx-wasm (ADR-0022) não reabrir o mesmo buraco em silêncio."
131
+ "bin": {
132
+ "inclusionist-heavy": "scripts/heavy-into-the-delivery.mjs",
133
+ "inclusionist-check-cartridge": "scripts/check-cartridge.mjs"
134
+ },
135
+ "comment:dependencies": [
136
+ "⚠️ THIS PACKAGE HAS ONE `dependency`, AND EACH ONE IS A RECORDED DECISION (ADR-0094), never an accident.",
137
+ "Embedded code that names a package the consumer's npm does not install publishes an engine that does not compile (ADR-0093);",
138
+ "a neural provider in `dependencies` lands its runtime in every consumer, a game that never speaks neurally included.",
139
+ "The engine LOADS that voice itself (ADR-0216) and declares nothing for it: espeak-ng and onnxruntime-web are catalogued heavy",
140
+ "files, fetched by the build into `heavy/` and read from the page's own origin — so they are in nobody's `node_modules`, here",
141
+ "included. A game says `uses: { neuralVoice: true }`, and a game that does not say it downloads none of it.",
142
+ "THE ONE: three.js 0.186.1 (MIT), pinned exactly — the free Libras player draws with it (ADR-0234 errata, route B). It is",
143
+ "reached only by the dynamic `import()` of `ui/libras-avatar-stage` at the first sign in deaf mode, so a bundler cuts it into",
144
+ "a chunk of its own and a child who never turns deaf mode on never downloads it.",
145
+ "`tests/engine-package.node.test.js` holds both directions — no embedded module names an undeclared package, and nothing declared",
146
+ "is left without a module naming it — and that no dependency enters without a recorded reason, at an exact version."
127
147
  ],
148
+ "dependencies": {
149
+ "three": "0.186.1"
150
+ },
128
151
  "comment:peerDependencies": [
129
152
  "PixiJS is a PEER, not a dependency. Measured on the emitted package (2026-09-05): exactly TWO shipped",
130
153
  "modules import it — `render/canvas` and `render/minimap` — plus their two `.d.ts`. A consumer that",
@@ -141,9 +164,11 @@
141
164
  "scripts": {
142
165
  "dev": "vite",
143
166
  "build": "vite build",
144
- "build:pkg": "tsc -p tsconfig.pkg.json && node scripts/stamp-license.mjs dist-pkg",
167
+ "build:pkg": "node scripts/clean-dist-pkg.mjs && tsc -p tsconfig.pkg.json && node scripts/stamp-license.mjs dist-pkg",
145
168
  "prepare": "npm run build:pkg",
146
169
  "prepack": "npm run build:pkg",
170
+ "heavy:delivery": "npm run build:pkg && node scripts/heavy-into-the-delivery.mjs dist --kokoro",
171
+ "libras:setup": "node scripts/heavy-into-the-delivery.mjs --libras-setup",
147
172
  "preview": "vite preview",
148
173
  "typecheck": "tsc --noEmit",
149
174
  "validate": "npm run typecheck && vitest run && npm run build:pkg && vite build",
@@ -152,14 +177,13 @@
152
177
  "test:node": "vitest run --project node",
153
178
  "test:browser": "vitest run --project browser",
154
179
  "check:precache": "node scripts/check-precache.mjs",
155
- "censo:issues": "node scripts/censo-de-issues.mjs",
180
+ "issues:census": "node scripts/issue-census.mjs",
156
181
  "check:annual-report": "node scripts/check-annual-report.mjs",
157
182
  "test:a11y": "node scripts/axe-check.mjs",
158
183
  "release": "release-it"
159
184
  },
160
185
  "devDependencies": {
161
186
  "@axe-core/playwright": "^4.10.0",
162
- "@mintplex-labs/piper-tts-web": "^1.0.4",
163
187
  "@release-it/conventional-changelog": "^11.0.1",
164
188
  "@types/node": "^22.0.0",
165
189
  "@vitest/browser": "^4.0.0",