@reicek/neataptic-ts 0.1.21 → 0.1.23

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 (361) hide show
  1. package/.github/agents/boundary-mapper.agent.md +31 -0
  2. package/.github/agents/docs-scout.agent.md +29 -0
  3. package/.github/agents/plan-scout.agent.md +31 -0
  4. package/.github/agents/solid-split.agent.md +143 -0
  5. package/.github/copilot-instructions.md +119 -0
  6. package/.github/skills/solid-split-playbook/SKILL.md +220 -0
  7. package/.github/skills/solid-split-playbook/assets/docs-checklist.md +34 -0
  8. package/.github/skills/solid-split-playbook/assets/split-plan-template.md +48 -0
  9. package/.github/skills/solid-split-playbook/assets/split-workflow-checklist.md +51 -0
  10. package/.github/skills/trace-analyzer-extension/SKILL.md +63 -0
  11. package/.github/skills/trace-analyzer-extension/assets/extension-checklist.md +24 -0
  12. package/.github/skills/trace-analyzer-extension/references/analyzer-extension-workflow.md +101 -0
  13. package/.github/skills/trace-audit-reporting/SKILL.md +96 -0
  14. package/.github/skills/trace-audit-reporting/assets/performance-report-template.md +123 -0
  15. package/.github/skills/trace-audit-reporting/references/trace-analysis-workflow.md +132 -0
  16. package/package.json +7 -3
  17. package/plans/ES2023 migration +13 -8
  18. package/plans/Evolution_Training_Interoperability_Contracts.md +1 -1
  19. package/plans/Flappy_Bird_Folder_Documentation_Pass.md +53 -0
  20. package/plans/Flappy_Evolution_Worker_Documentation_Pass.md +58 -0
  21. package/plans/Interactive_Examples_and_Learning_Path.md +10 -2
  22. package/plans/Memory_Optimization.md +3 -3
  23. package/plans/README.md +63 -0
  24. package/plans/Roadmap.md +15 -3
  25. package/plans/asciiMaze_SOLID_split.done.md +130 -0
  26. package/plans/flappy_bird_SOLID_split.done.md +67 -0
  27. package/scripts/analyze-trace.ts +590 -0
  28. package/scripts/assets/theme.css +221 -34
  29. package/scripts/copy-examples.mjs +9 -5
  30. package/scripts/export-onnx.mjs +3 -3
  31. package/scripts/generate-bench-tables.mjs +10 -10
  32. package/scripts/generate-bench-tables.ts +10 -10
  33. package/scripts/generate-docs.ts +1415 -449
  34. package/scripts/render-docs-html.ts +15 -8
  35. package/src/README.md +127 -222
  36. package/src/architecture/README.md +117 -184
  37. package/src/architecture/architect.ts +6 -0
  38. package/src/architecture/layer/README.md +38 -38
  39. package/src/architecture/network/README.md +49 -31
  40. package/src/architecture/network/activate/README.md +77 -77
  41. package/src/architecture/network/connect/README.md +15 -13
  42. package/src/architecture/network/deterministic/README.md +7 -7
  43. package/src/architecture/network/evolve/README.md +44 -44
  44. package/src/architecture/network/gating/README.md +20 -20
  45. package/src/architecture/network/genetic/README.md +51 -51
  46. package/src/architecture/network/mutate/README.md +97 -97
  47. package/src/architecture/network/network.types.ts +39 -0
  48. package/src/architecture/network/onnx/README.md +264 -264
  49. package/src/architecture/network/prune/README.md +39 -39
  50. package/src/architecture/network/remove/README.md +26 -26
  51. package/src/architecture/network/serialize/README.md +56 -56
  52. package/src/architecture/network/serialize/network.serialize.json.utils.ts +1 -0
  53. package/src/architecture/network/serialize/network.serialize.utils.ts +6 -1
  54. package/src/architecture/network/serialize/network.serialize.utils.types.ts +1 -1
  55. package/src/architecture/network/slab/README.md +61 -61
  56. package/src/architecture/network/standalone/README.md +24 -24
  57. package/src/architecture/network/stats/README.md +9 -9
  58. package/src/architecture/network/topology/README.md +46 -46
  59. package/src/architecture/network/training/README.md +21 -21
  60. package/src/architecture/network.ts +114 -10
  61. package/src/methods/README.md +9 -87
  62. package/src/multithreading/README.md +8 -77
  63. package/src/multithreading/workers/README.md +2 -2
  64. package/src/multithreading/workers/browser/README.md +0 -6
  65. package/src/multithreading/workers/node/README.md +0 -3
  66. package/src/neat/README.md +623 -568
  67. package/src/neat/neat.evolve.population.utils.ts +29 -5
  68. package/src/neat/neat.helpers.ts +16 -0
  69. package/src/neat/neat.topology-intent.utils.ts +160 -0
  70. package/src/utils/README.md +18 -18
  71. package/test/examples/asciiMaze/README.md +59 -59
  72. package/test/examples/asciiMaze/asciiMaze.e2e.test.ts +14 -9
  73. package/test/examples/asciiMaze/browser-entry/README.md +196 -0
  74. package/test/examples/asciiMaze/browser-entry/browser-entry.abort.services.ts +95 -0
  75. package/test/examples/asciiMaze/browser-entry/browser-entry.constants.ts +23 -0
  76. package/test/examples/asciiMaze/browser-entry/browser-entry.curriculum.services.ts +115 -0
  77. package/test/examples/asciiMaze/browser-entry/browser-entry.globals.services.ts +106 -0
  78. package/test/examples/asciiMaze/browser-entry/browser-entry.host.services.ts +157 -0
  79. package/test/examples/asciiMaze/browser-entry/browser-entry.services.ts +14 -0
  80. package/test/examples/asciiMaze/browser-entry/browser-entry.ts +129 -0
  81. package/test/examples/asciiMaze/browser-entry/browser-entry.types.ts +120 -0
  82. package/test/examples/asciiMaze/browser-entry/browser-entry.utils.ts +98 -0
  83. package/test/examples/asciiMaze/browser-entry.ts +10 -576
  84. package/test/examples/asciiMaze/dashboardManager/README.md +276 -0
  85. package/test/examples/asciiMaze/dashboardManager/archive/README.md +16 -0
  86. package/test/examples/asciiMaze/dashboardManager/archive/dashboardManager.archive.services.ts +267 -0
  87. package/test/examples/asciiMaze/dashboardManager/dashboardManager.constants.ts +35 -0
  88. package/test/examples/asciiMaze/dashboardManager/dashboardManager.services.ts +103 -0
  89. package/test/examples/asciiMaze/dashboardManager/dashboardManager.ts +181 -0
  90. package/test/examples/asciiMaze/dashboardManager/dashboardManager.types.ts +267 -0
  91. package/test/examples/asciiMaze/dashboardManager/dashboardManager.utils.ts +254 -0
  92. package/test/examples/asciiMaze/dashboardManager/live/README.md +14 -0
  93. package/test/examples/asciiMaze/dashboardManager/live/dashboardManager.live.services.ts +264 -0
  94. package/test/examples/asciiMaze/dashboardManager/telemetry/README.md +47 -0
  95. package/test/examples/asciiMaze/dashboardManager/telemetry/dashboardManager.telemetry.services.ts +513 -0
  96. package/test/examples/asciiMaze/dashboardManager.ts +13 -2335
  97. package/test/examples/asciiMaze/evolutionEngine/README.md +1058 -0
  98. package/test/examples/asciiMaze/evolutionEngine/curriculumPhase.ts +90 -0
  99. package/test/examples/asciiMaze/evolutionEngine/engineState.constants.ts +36 -0
  100. package/test/examples/asciiMaze/evolutionEngine/engineState.ts +58 -513
  101. package/test/examples/asciiMaze/evolutionEngine/engineState.types.ts +212 -0
  102. package/test/examples/asciiMaze/evolutionEngine/engineState.utils.ts +301 -0
  103. package/test/examples/asciiMaze/evolutionEngine/evolutionEngine.types.ts +445 -0
  104. package/test/examples/asciiMaze/evolutionEngine/evolutionLoop.ts +81 -50
  105. package/test/examples/asciiMaze/evolutionEngine/optionsAndSetup.ts +2 -4
  106. package/test/examples/asciiMaze/evolutionEngine/populationDynamics.ts +17 -33
  107. package/test/examples/asciiMaze/evolutionEngine/populationPruning.ts +1 -1
  108. package/test/examples/asciiMaze/evolutionEngine/rngAndTiming.ts +1 -2
  109. package/test/examples/asciiMaze/evolutionEngine/sampling.ts +1 -1
  110. package/test/examples/asciiMaze/evolutionEngine/scratchPools.ts +2 -5
  111. package/test/examples/asciiMaze/evolutionEngine/setupHelpers.ts +30 -37
  112. package/test/examples/asciiMaze/evolutionEngine/telemetryMetrics.ts +16 -58
  113. package/test/examples/asciiMaze/evolutionEngine/trainingWarmStart.ts +2 -2
  114. package/test/examples/asciiMaze/evolutionEngine.ts +55 -55
  115. package/test/examples/asciiMaze/fitness.ts +2 -2
  116. package/test/examples/asciiMaze/fitness.types.ts +65 -0
  117. package/test/examples/asciiMaze/interfaces.ts +64 -1352
  118. package/test/examples/asciiMaze/mazeMovement/README.md +356 -0
  119. package/test/examples/asciiMaze/mazeMovement/finalization/README.md +49 -0
  120. package/test/examples/asciiMaze/mazeMovement/finalization/mazeMovement.finalization.ts +138 -0
  121. package/test/examples/asciiMaze/mazeMovement/mazeMovement.constants.ts +101 -0
  122. package/test/examples/asciiMaze/mazeMovement/mazeMovement.services.ts +230 -0
  123. package/test/examples/asciiMaze/mazeMovement/mazeMovement.ts +299 -0
  124. package/test/examples/asciiMaze/mazeMovement/mazeMovement.types.ts +185 -0
  125. package/test/examples/asciiMaze/mazeMovement/mazeMovement.utils.ts +153 -0
  126. package/test/examples/asciiMaze/mazeMovement/policy/README.md +91 -0
  127. package/test/examples/asciiMaze/mazeMovement/policy/mazeMovement.policy.ts +467 -0
  128. package/test/examples/asciiMaze/mazeMovement/runtime/README.md +95 -0
  129. package/test/examples/asciiMaze/mazeMovement/runtime/mazeMovement.runtime.ts +354 -0
  130. package/test/examples/asciiMaze/mazeMovement/shaping/README.md +124 -0
  131. package/test/examples/asciiMaze/mazeMovement/shaping/mazeMovement.shaping.ts +459 -0
  132. package/test/examples/asciiMaze/mazeMovement.ts +12 -2978
  133. package/test/examples/flappy_bird/README.md +193 -88
  134. package/test/examples/flappy_bird/browser-entry/README.md +1441 -0
  135. package/test/examples/flappy_bird/browser-entry/browser-entry.host.utils.ts +4 -324
  136. package/test/examples/flappy_bird/browser-entry/browser-entry.network-view.utils.ts +9 -396
  137. package/test/examples/flappy_bird/browser-entry/browser-entry.playback.utils.ts +6 -714
  138. package/test/examples/flappy_bird/browser-entry/browser-entry.render.types.ts +26 -3
  139. package/test/examples/flappy_bird/browser-entry/browser-entry.runtime.types.ts +16 -1
  140. package/test/examples/flappy_bird/browser-entry/browser-entry.simulation.types.ts +39 -5
  141. package/test/examples/flappy_bird/browser-entry/browser-entry.spawn.utils.ts +11 -31
  142. package/test/examples/flappy_bird/browser-entry/browser-entry.stats.types.ts +32 -4
  143. package/test/examples/flappy_bird/browser-entry/browser-entry.ts +11 -0
  144. package/test/examples/flappy_bird/browser-entry/browser-entry.types.ts +8 -0
  145. package/test/examples/flappy_bird/browser-entry/browser-entry.visualization.types.ts +50 -7
  146. package/test/examples/flappy_bird/browser-entry/browser-entry.visualization.utils.ts +21 -893
  147. package/test/examples/flappy_bird/browser-entry/browser-entry.worker.types.ts +91 -10
  148. package/test/examples/flappy_bird/browser-entry/host/README.md +318 -0
  149. package/test/examples/flappy_bird/browser-entry/host/host.canvas.service.ts +16 -0
  150. package/test/examples/flappy_bird/browser-entry/host/host.constants.ts +20 -0
  151. package/test/examples/flappy_bird/browser-entry/host/host.dom.service.ts +10 -0
  152. package/test/examples/flappy_bird/browser-entry/host/host.resize.service.ts +1 -295
  153. package/test/examples/flappy_bird/browser-entry/host/host.stats.service.ts +14 -0
  154. package/test/examples/flappy_bird/browser-entry/host/host.ts +592 -6
  155. package/test/examples/flappy_bird/browser-entry/host/host.types.ts +13 -0
  156. package/test/examples/flappy_bird/browser-entry/host/resize/README.md +309 -0
  157. package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.constants.ts +47 -0
  158. package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.services.ts +392 -0
  159. package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.ts +132 -0
  160. package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.types.ts +92 -0
  161. package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.utils.ts +272 -0
  162. package/test/examples/flappy_bird/browser-entry/network-view/README.md +389 -0
  163. package/test/examples/flappy_bird/browser-entry/network-view/network-view.draw.service.ts +13 -0
  164. package/test/examples/flappy_bird/browser-entry/network-view/network-view.labels.utils.ts +12 -0
  165. package/test/examples/flappy_bird/browser-entry/network-view/network-view.layout.utils.ts +14 -0
  166. package/test/examples/flappy_bird/browser-entry/network-view/network-view.topology.utils.ts +267 -0
  167. package/test/examples/flappy_bird/browser-entry/network-view/network-view.ts +823 -7
  168. package/test/examples/flappy_bird/browser-entry/network-view/network-view.types.ts +11 -0
  169. package/test/examples/flappy_bird/browser-entry/playback/README.md +845 -0
  170. package/test/examples/flappy_bird/browser-entry/playback/background/README.md +355 -0
  171. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/README.md +1068 -0
  172. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.batch.services.ts +64 -0
  173. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.cache.services.ts +207 -0
  174. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.constants.ts +197 -0
  175. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.batch.utils.ts +114 -0
  176. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.layout.utils.test.ts +96 -0
  177. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.layout.utils.ts +204 -0
  178. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.services.ts +49 -0
  179. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.utils.ts +313 -0
  180. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.layer.services.ts +81 -0
  181. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils.test.ts +33 -0
  182. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils.ts +201 -0
  183. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.selection.utils.ts +171 -0
  184. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.timing.utils.ts +124 -0
  185. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.utils.test.ts +279 -0
  186. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.utils.ts +132 -0
  187. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.scene.services.ts +26 -0
  188. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.services.ts +65 -0
  189. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.ts +48 -0
  190. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types.ts +342 -0
  191. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.utils.ts +10 -0
  192. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.cache.services.ts +96 -0
  193. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.constants.ts +127 -0
  194. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.draw.services.ts +184 -0
  195. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.scene.services.ts +64 -0
  196. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.services.ts +6 -0
  197. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.ts +53 -0
  198. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.types.ts +105 -0
  199. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.utils.ts +100 -0
  200. package/test/examples/flappy_bird/browser-entry/playback/frame-render/README.md +541 -0
  201. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.bird.utils.ts +180 -0
  202. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.canvas.services.ts +77 -0
  203. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.entity.services.ts +167 -0
  204. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.scene.services.ts +57 -0
  205. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.service.test.ts +176 -0
  206. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.service.ts +113 -0
  207. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.services.ts +35 -0
  208. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.trail.utils.ts +248 -0
  209. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.types.ts +103 -0
  210. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.utils.ts +11 -0
  211. package/test/examples/flappy_bird/browser-entry/playback/playback.constants.ts +1 -1
  212. package/test/examples/flappy_bird/browser-entry/playback/playback.frame-render.service.ts +10 -0
  213. package/test/examples/flappy_bird/browser-entry/playback/playback.iteration.services.ts +192 -0
  214. package/test/examples/flappy_bird/browser-entry/playback/playback.loop.service.ts +12 -0
  215. package/test/examples/flappy_bird/browser-entry/playback/playback.orchestration.types.ts +78 -0
  216. package/test/examples/flappy_bird/browser-entry/playback/playback.render.pipe-outline.service.ts +128 -0
  217. package/test/examples/flappy_bird/browser-entry/playback/playback.render.service.ts +1 -116
  218. package/test/examples/flappy_bird/browser-entry/playback/playback.session.services.ts +184 -0
  219. package/test/examples/flappy_bird/browser-entry/playback/playback.snapshot.utils.test.ts +121 -0
  220. package/test/examples/flappy_bird/browser-entry/playback/playback.snapshot.utils.ts +8 -0
  221. package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.layer.services.ts +36 -0
  222. package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.service.ts +11 -128
  223. package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.services.ts +268 -0
  224. package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.types.ts +91 -0
  225. package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.utils.ts +11 -4
  226. package/test/examples/flappy_bird/browser-entry/playback/playback.trail.utils.ts +9 -86
  227. package/test/examples/flappy_bird/browser-entry/playback/playback.ts +75 -7
  228. package/test/examples/flappy_bird/browser-entry/playback/playback.types.ts +12 -9
  229. package/test/examples/flappy_bird/browser-entry/playback/playback.worker-channel.utils.ts +11 -123
  230. package/test/examples/flappy_bird/browser-entry/playback/snapshot/README.md +55 -0
  231. package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.services.ts +103 -0
  232. package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.summary.utils.test.ts +45 -0
  233. package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.summary.utils.ts +28 -0
  234. package/test/examples/flappy_bird/browser-entry/playback/trail/README.md +95 -0
  235. package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.history.services.test.ts +35 -0
  236. package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.history.services.ts +64 -0
  237. package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.opacity.utils.test.ts +37 -0
  238. package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.opacity.utils.ts +74 -0
  239. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/README.md +71 -0
  240. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.request.services.ts +45 -0
  241. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.summary.services.ts +74 -0
  242. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.types.ts +53 -0
  243. package/test/examples/flappy_bird/browser-entry/runtime/README.md +304 -0
  244. package/test/examples/flappy_bird/browser-entry/runtime/runtime.browser-globals.service.ts +15 -0
  245. package/test/examples/flappy_bird/browser-entry/runtime/runtime.errors.ts +17 -0
  246. package/test/examples/flappy_bird/browser-entry/runtime/runtime.evolution-launch.service.ts +56 -0
  247. package/test/examples/flappy_bird/browser-entry/runtime/runtime.evolution-loop.service.ts +19 -0
  248. package/test/examples/flappy_bird/browser-entry/runtime/runtime.lifecycle.service.ts +96 -0
  249. package/test/examples/flappy_bird/browser-entry/runtime/runtime.startup.service.ts +92 -0
  250. package/test/examples/flappy_bird/browser-entry/runtime/runtime.telemetry.service.ts +24 -0
  251. package/test/examples/flappy_bird/browser-entry/runtime/runtime.ts +31 -121
  252. package/test/examples/flappy_bird/browser-entry/runtime/runtime.types.ts +65 -0
  253. package/test/examples/flappy_bird/browser-entry/visualization/README.md +568 -0
  254. package/test/examples/flappy_bird/browser-entry/visualization/visualization.colors.utils.ts +26 -0
  255. package/test/examples/flappy_bird/browser-entry/visualization/visualization.constants.ts +110 -0
  256. package/test/examples/flappy_bird/browser-entry/visualization/visualization.draw.service.ts +979 -19
  257. package/test/examples/flappy_bird/browser-entry/visualization/visualization.legend.utils.ts +157 -3
  258. package/test/examples/flappy_bird/browser-entry/visualization/visualization.topology.utils.ts +13 -27
  259. package/test/examples/flappy_bird/browser-entry/visualization/visualization.ts +7 -20
  260. package/test/examples/flappy_bird/browser-entry/visualization/visualization.types.ts +14 -0
  261. package/test/examples/flappy_bird/browser-entry/worker-channel/README.md +238 -0
  262. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.errors.ts +11 -0
  263. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.generation.service.ts +12 -0
  264. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.playback.service.test.ts +143 -0
  265. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.playback.service.ts +140 -14
  266. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.request.service.ts +27 -0
  267. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.ts +8 -0
  268. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.types.ts +23 -0
  269. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.url.service.ts +5 -0
  270. package/test/examples/flappy_bird/constants/README.md +1163 -0
  271. package/test/examples/flappy_bird/constants/constants.birds.ts +16 -38
  272. package/test/examples/flappy_bird/constants/constants.difficulty.ts +21 -0
  273. package/test/examples/flappy_bird/constants/constants.network-view.ts +24 -0
  274. package/test/examples/flappy_bird/constants/constants.network.ts +1 -1
  275. package/test/examples/flappy_bird/constants/constants.observation.ts +7 -0
  276. package/test/examples/flappy_bird/constants/constants.palette.ts +9 -2
  277. package/test/examples/flappy_bird/constants/constants.physics.ts +9 -0
  278. package/test/examples/flappy_bird/constants/constants.pipe-render.ts +3 -0
  279. package/test/examples/flappy_bird/constants/constants.pipes.ts +22 -3
  280. package/test/examples/flappy_bird/constants/constants.runtime.ts +28 -4
  281. package/test/examples/flappy_bird/constants/constants.starfield.ts +78 -3
  282. package/test/examples/flappy_bird/constants/constants.ts +6 -0
  283. package/test/examples/flappy_bird/environment/README.md +182 -0
  284. package/test/examples/flappy_bird/environment/environment.collision.utils.ts +7 -0
  285. package/test/examples/flappy_bird/environment/environment.constants.ts +16 -3
  286. package/test/examples/flappy_bird/environment/environment.observation.utils.ts +12 -19
  287. package/test/examples/flappy_bird/environment/environment.state.service.ts +10 -0
  288. package/test/examples/flappy_bird/environment/environment.step.service.ts +15 -66
  289. package/test/examples/flappy_bird/environment/environment.types.ts +14 -0
  290. package/test/examples/flappy_bird/evaluation/README.md +155 -0
  291. package/test/examples/flappy_bird/evaluation/evaluation.constants.ts +23 -4
  292. package/test/examples/flappy_bird/evaluation/evaluation.fitness.utils.ts +16 -1
  293. package/test/examples/flappy_bird/evaluation/evaluation.rollout.service.ts +7 -374
  294. package/test/examples/flappy_bird/evaluation/evaluation.seed.utils.ts +4 -0
  295. package/test/examples/flappy_bird/evaluation/evaluation.types.ts +18 -2
  296. package/test/examples/flappy_bird/evaluation/rollout/README.md +355 -0
  297. package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.constants.ts +38 -0
  298. package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.service.ts +71 -0
  299. package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.services.ts +338 -0
  300. package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.types.ts +69 -0
  301. package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.utils.ts +399 -0
  302. package/test/examples/flappy_bird/flappy-evolution-worker/README.md +845 -0
  303. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.constants.ts +49 -7
  304. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.errors.ts +34 -3
  305. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.evolution.service.ts +22 -0
  306. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.playback.service.ts +62 -26
  307. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.protocol.service.ts +27 -1
  308. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.runtime.service.ts +23 -0
  309. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.frame.service.ts +378 -0
  310. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.types.ts +22 -0
  311. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.utils.ts +20 -203
  312. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.snapshot.utils.test.ts +94 -0
  313. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.snapshot.utils.ts +78 -13
  314. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.ts +235 -344
  315. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.types.ts +170 -22
  316. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.warm-start.service.ts +314 -0
  317. package/test/examples/flappy_bird/flappy.simulation.shared.utils.ts +17 -0
  318. package/test/examples/flappy_bird/flappyEnvironment.ts +21 -0
  319. package/test/examples/flappy_bird/flappyEvaluation.ts +12 -0
  320. package/test/examples/flappy_bird/flappyEvolution.worker.ts +7 -0
  321. package/test/examples/flappy_bird/index.ts +8 -2
  322. package/test/examples/flappy_bird/rng.ts +10 -0
  323. package/test/examples/flappy_bird/simulation-shared/README.md +518 -0
  324. package/test/examples/flappy_bird/simulation-shared/observation/README.md +255 -0
  325. package/test/examples/flappy_bird/simulation-shared/observation/observation.features.utils.ts +339 -0
  326. package/test/examples/flappy_bird/simulation-shared/observation/observation.ts +19 -0
  327. package/test/examples/flappy_bird/simulation-shared/observation/observation.vector.utils.ts +81 -0
  328. package/test/examples/flappy_bird/simulation-shared/simulation-shared.constants.ts +3 -0
  329. package/test/examples/flappy_bird/simulation-shared/simulation-shared.control.utils.ts +6 -0
  330. package/test/examples/flappy_bird/simulation-shared/simulation-shared.difficulty.utils.ts +9 -0
  331. package/test/examples/flappy_bird/simulation-shared/simulation-shared.errors.ts +10 -1
  332. package/test/examples/flappy_bird/simulation-shared/simulation-shared.memory.utils.ts +18 -0
  333. package/test/examples/flappy_bird/simulation-shared/simulation-shared.observation.utils.ts +7 -402
  334. package/test/examples/flappy_bird/simulation-shared/simulation-shared.spawn.utils.ts +36 -6
  335. package/test/examples/flappy_bird/{evaluation/evaluation.statistics.utils.ts → simulation-shared/simulation-shared.statistics.utils.ts} +30 -9
  336. package/test/examples/flappy_bird/simulation-shared/simulation-shared.types.ts +38 -5
  337. package/test/examples/flappy_bird/trainFlappyBird.ts +13 -0
  338. package/test/examples/flappy_bird/trainer/README.md +676 -0
  339. package/test/examples/flappy_bird/trainer/evaluation/README.md +253 -0
  340. package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.constants.ts +15 -0
  341. package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.services.ts +86 -0
  342. package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.ts +187 -0
  343. package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.types.ts +32 -0
  344. package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.utils.ts +182 -0
  345. package/test/examples/flappy_bird/trainer/trainer.evaluation.service.ts +13 -0
  346. package/test/examples/flappy_bird/trainer/trainer.fitness.service.ts +23 -1
  347. package/test/examples/flappy_bird/trainer/trainer.loop.service.ts +17 -1
  348. package/test/examples/flappy_bird/trainer/trainer.report.service.services.ts +181 -0
  349. package/test/examples/flappy_bird/trainer/trainer.report.service.ts +136 -0
  350. package/test/examples/flappy_bird/trainer/trainer.selection.utils.ts +89 -0
  351. package/test/examples/flappy_bird/trainer/trainer.setup.service.ts +22 -0
  352. package/test/examples/flappy_bird/trainer/trainer.signals.service.ts +8 -0
  353. package/test/examples/flappy_bird/trainer/trainer.ts +38 -553
  354. package/test/examples/flappy_bird/trainer/trainer.types.ts +44 -7
  355. package/test/neat/neat.topology-intent.test.ts +129 -0
  356. package/test/network/network.topology-intent.test.ts +44 -0
  357. package/test/examples/flappy_bird/browser-entry/browser-entry.utils.ts +0 -12
  358. package/test/examples/flappy_bird/environment/environment.ts +0 -7
  359. package/test/examples/flappy_bird/evaluation/evaluation.ts +0 -7
  360. package/test/examples/flappy_bird/simulation-shared/simulation-shared.ts +0 -15
  361. package/test/examples/flappy_bird/trainer/trainer.statistics.utils.ts +0 -78
@@ -1,7 +1,24 @@
1
+ /**
2
+ * Worker transport contracts for the Flappy Bird browser runtime.
3
+ *
4
+ * The browser UI and the evolution worker communicate through a deliberately
5
+ * explicit message protocol. The goal is educational as well as practical: it
6
+ * makes it obvious which values are computed off-thread, which snapshots are
7
+ * transferred frame-by-frame, and which events advance the demo state.
8
+ *
9
+ * If you want background reading, the Wikipedia article on "message passing"
10
+ * provides a useful conceptual frame for this boundary.
11
+ */
12
+
1
13
  /** Loose JSON-compatible network payload used by worker messages. */
2
14
  export type SerializedNetwork = Record<string, unknown>;
3
15
 
4
- /** Renderable pipe state snapshot emitted by the playback worker. */
16
+ /**
17
+ * Renderable pipe state snapshot emitted by the playback worker.
18
+ *
19
+ * This is the smallest pipe shape the browser renderer needs for one frame:
20
+ * horizontal position plus the vertical corridor geometry.
21
+ */
5
22
  export interface PopulationPipe {
6
23
  id: number;
7
24
  xPx: number;
@@ -9,16 +26,52 @@ export interface PopulationPipe {
9
26
  gapSizePx: number;
10
27
  }
11
28
 
12
- /** Renderable bird state snapshot emitted by the playback worker. */
29
+ /**
30
+ * Renderable bird state snapshot emitted by the playback worker.
31
+ *
32
+ * The browser does not receive full neural state here. It only gets the fields
33
+ * needed for presentation and HUD summaries, which keeps per-frame transport
34
+ * light.
35
+ */
13
36
  export interface PopulationBird {
14
- color: string;
15
37
  yPx: number;
16
38
  pipesPassed: number;
17
39
  framesSurvived: number;
18
40
  done: boolean;
19
41
  }
20
42
 
21
- /** Worker payload describing evolved generation summary values. */
43
+ /**
44
+ * Packed typed-array payload for playback pipe snapshot transport.
45
+ *
46
+ * Typed arrays keep frame payloads compact and predictable, which matters when
47
+ * the worker is streaming many birds and pipes across animation frames.
48
+ */
49
+ export interface PackedPlaybackPipeSnapshot {
50
+ xPositionsPx: Float32Array;
51
+ gapCenterYPositionsPx: Float32Array;
52
+ gapSizesPx: Float32Array;
53
+ }
54
+
55
+ /**
56
+ * Packed typed-array payload for playback bird snapshot transport.
57
+ *
58
+ * This mirrors the pipe packing strategy so playback can move large population
59
+ * snapshots with less allocation pressure than object-per-bird messages.
60
+ */
61
+ export interface PackedPlaybackBirdSnapshot {
62
+ yPositionsPx: Float32Array;
63
+ pipesPassed: Uint32Array;
64
+ framesSurvived: Uint32Array;
65
+ doneFlags: Uint8Array;
66
+ }
67
+
68
+ /**
69
+ * Worker payload describing evolved generation summary values.
70
+ *
71
+ * This is the browser-facing summary of one completed NEAT generation: what
72
+ * generation finished, how fit the best genome was, and optionally the best
73
+ * network for visualization or playback.
74
+ */
22
75
  export interface EvolutionGenerationPayload {
23
76
  generation: number;
24
77
  bestFitness: number;
@@ -39,19 +92,36 @@ export interface EvolutionWorkerErrorMessage {
39
92
  };
40
93
  }
41
94
 
42
- /** Per-frame snapshot received from the worker playback channel. */
95
+ /**
96
+ * Per-frame snapshot received from the worker playback channel.
97
+ *
98
+ * A snapshot combines geometry, packed population state, and lightweight world
99
+ * metadata so the browser can render a deterministic frame without rerunning
100
+ * the simulation locally.
101
+ */
43
102
  export interface EvolutionPlaybackStepSnapshot {
103
+ format: 'packed-v1';
44
104
  frameIndex: number;
105
+ cumulativePipeTravelPx: number;
45
106
  visibleWorldWidthPx: number;
46
107
  visibleWorldHeightPx: number;
47
- pipes: PopulationPipe[];
48
- birds: PopulationBird[];
108
+ pipeCount: number;
109
+ birdCount: number;
110
+ pipes: PackedPlaybackPipeSnapshot;
111
+ birds: PackedPlaybackBirdSnapshot;
49
112
  }
50
113
 
51
- /** Worker message carrying one playback step and aggregate markers. */
114
+ /**
115
+ * Worker message carrying one playback step and aggregate markers.
116
+ *
117
+ * Besides the frame snapshot itself, this message also carries summary values
118
+ * used by the HUD so the browser can show performance and progress without
119
+ * recomputing population-wide statistics on the main thread.
120
+ */
52
121
  export interface EvolutionPlaybackStepMessage {
53
122
  type: 'playback-step';
54
123
  payload: {
124
+ requestId: number;
55
125
  snapshot: EvolutionPlaybackStepSnapshot;
56
126
  instrumentation?: {
57
127
  activationCallsPerFrame: number;
@@ -65,13 +135,24 @@ export interface EvolutionPlaybackStepMessage {
65
135
  };
66
136
  }
67
137
 
68
- /** Union of all supported worker messages consumed by browser entry. */
138
+ /**
139
+ * Union of all supported worker messages consumed by browser entry.
140
+ *
141
+ * A closed union keeps the main-thread message handler explicit and easy to
142
+ * audit when the protocol evolves.
143
+ */
69
144
  export type EvolutionWorkerMessage =
70
145
  | EvolutionGenerationReadyMessage
71
146
  | EvolutionPlaybackStepMessage
72
147
  | EvolutionWorkerErrorMessage;
73
148
 
74
- /** Lightweight per-frame telemetry emitted to HUD update callback. */
149
+ /**
150
+ * Lightweight per-frame telemetry emitted to HUD update callback.
151
+ *
152
+ * These values are the browser-friendly metrics shown in the live status panel:
153
+ * how many birds remain, how far the leader has progressed, and how expensive
154
+ * the current playback cadence is.
155
+ */
75
156
  export interface PlaybackFrameStats {
76
157
  frameIndex: number;
77
158
  activeBirdCount: number;
@@ -0,0 +1,318 @@
1
+ # browser-entry/host
2
+
3
+ ## browser-entry/host/host.types.ts
4
+
5
+ ### CanvasHostResult
6
+
7
+ Public type contracts for the browser-entry host boundary.
8
+
9
+ These types describe what the host builder returns to the runtime and how HUD
10
+ value updates are represented once the UI tree exists.
11
+
12
+ ### HostStatsPartialValues
13
+
14
+ Partial stats update map keyed by stats-table keys.
15
+
16
+ Using a partial map lets the runtime update only the HUD fields that changed
17
+ on a given tick.
18
+
19
+ ## browser-entry/host/host.ts
20
+
21
+ ### createCanvasHost
22
+
23
+ `(containerElement: HTMLElement) => import("test/examples/flappy_bird/browser-entry/host/host.types").CanvasHostResult`
24
+
25
+ Builds the browser demo host tree and returns rendering handles.
26
+
27
+ This is the public host entrypoint used by the runtime startup path.
28
+
29
+ Parameters:
30
+ - `containerElement` - - Root host container.
31
+
32
+ Returns: Canvas handles, stats cells and network render callback.
33
+
34
+ ### createCanvasHostInternal
35
+
36
+ `(containerElement: HTMLElement) => import("test/examples/flappy_bird/browser-entry/host/host.types").CanvasHostResult`
37
+
38
+ Builds the browser demo host tree and returns rendering handles.
39
+
40
+ The orchestration is deliberately step-shaped: clear old DOM, build layout,
41
+ create canvases, wire resize behavior, render placeholders, then return the
42
+ handles the runtime will mutate during execution.
43
+
44
+ Parameters:
45
+ - `containerElement` - - Root host container.
46
+
47
+ Returns: Canvas handles, stats cells and network render callback.
48
+
49
+ ### createHeaderFrameRenderer
50
+
51
+ `(headerCanvas: HTMLCanvasElement, headerContext: CanvasRenderingContext2D) => () => void`
52
+
53
+ Creates the reusable title-frame renderer for the header canvas.
54
+
55
+ Parameters:
56
+ - `headerCanvas` - - Header canvas element.
57
+ - `headerContext` - - Header canvas 2D context.
58
+
59
+ Returns: Callback that redraws the framed title.
60
+
61
+ ### createHostCanvasElements
62
+
63
+ `(hostVisualPrimitives: HostVisualPrimitives) => HostCanvasElements`
64
+
65
+ Creates the canvases and 2D contexts used by the host UI.
66
+
67
+ The host manages three canvas surfaces with different jobs: a title/header
68
+ frame, the main simulation view, and the side-panel network visualization.
69
+
70
+ Parameters:
71
+ - `hostVisualPrimitives` - - Shared visual primitives for border and shadow styling.
72
+
73
+ Returns: Simulation, header, and network canvases with required contexts.
74
+
75
+ ### createHostLayoutElements
76
+
77
+ `(hostVisualPrimitives: HostVisualPrimitives) => HostLayoutElements`
78
+
79
+ Creates the host layout elements used to assemble the browser UI tree.
80
+
81
+ This creates the structural DOM only. Canvases, stats content, and
82
+ visualization wiring are layered on afterward.
83
+
84
+ Parameters:
85
+ - `hostVisualPrimitives` - - Shared visual primitives for border and shadow styling.
86
+
87
+ Returns: Layout elements grouped by host responsibility.
88
+
89
+ ### createHostNetworkVisualizationController
90
+
91
+ `(networkCanvasHost: HTMLDivElement, networkCanvas: HTMLCanvasElement, networkContext: CanvasRenderingContext2D) => HostNetworkVisualizationController`
92
+
93
+ Creates the network visualization renderer and redraw controller.
94
+
95
+ Parameters:
96
+ - `networkCanvasHost` - - Host element wrapping the network canvas.
97
+ - `networkCanvas` - - Network visualization canvas.
98
+ - `networkContext` - - Network visualization 2D context.
99
+
100
+ Returns: Renderer and redraw callbacks for the network panel.
101
+
102
+ ### HostVisualPrimitives
103
+
104
+ Browser host assembly for the Flappy Bird demo UI.
105
+
106
+ The host boundary is responsible for building the browser-side shell around
107
+ the simulation: framed title, main canvas, stats panel, and network
108
+ visualization panel. It does not run evolution itself; it prepares the stage
109
+ on which the runtime loop renders.
110
+
111
+ ### installCanvasHostResizeHooks
112
+
113
+ `(canvas: HTMLCanvasElement, hostLayoutElements: HostLayoutElements, networkCanvas: HTMLCanvasElement, drawHeaderFrame: () => void, hostNetworkVisualizationController: HostNetworkVisualizationController) => void`
114
+
115
+ Installs responsive resize hooks for the simulation canvas and side panel.
116
+
117
+ Parameters:
118
+ - `canvas` - - Simulation canvas.
119
+ - `hostLayoutElements` - - Prepared layout containers.
120
+ - `networkCanvas` - - Network visualization canvas.
121
+ - `drawHeaderFrame` - - Callback that redraws the header title.
122
+ - `hostNetworkVisualizationController` - - Network panel resize/redraw controller.
123
+
124
+ Returns: Nothing.
125
+
126
+ ### mountCanvasHostTree
127
+
128
+ `(containerElement: HTMLElement, hostLayoutElements: HostLayoutElements, headerCanvas: HTMLCanvasElement, canvas: HTMLCanvasElement, networkCanvas: HTMLCanvasElement) => void`
129
+
130
+ Mounts the completed host DOM tree into the container in final order.
131
+
132
+ Parameters:
133
+ - `containerElement` - - Root host container.
134
+ - `hostLayoutElements` - - Prepared layout containers.
135
+ - `headerCanvas` - - Header title canvas.
136
+ - `canvas` - - Main simulation canvas.
137
+ - `networkCanvas` - - Network visualization canvas.
138
+
139
+ Returns: Nothing.
140
+
141
+ ### renderInitialCanvasHostState
142
+
143
+ `(drawHeaderFrame: () => void, renderNetworkArchitecture: (network: import("src/architecture/network").default | undefined, inputSize: number, outputSize: number) => void) => void`
144
+
145
+ Renders the initial header and placeholder network visualization state.
146
+
147
+ Parameters:
148
+ - `drawHeaderFrame` - - Callback that redraws the header title.
149
+ - `renderNetworkArchitecture` - - Network visualization renderer.
150
+
151
+ Returns: Nothing.
152
+
153
+ ### resetHostContainer
154
+
155
+ `(containerElement: HTMLElement) => void`
156
+
157
+ Clears any previous runtime DOM before rebuilding the browser host tree.
158
+
159
+ The demo rebuilds the host from scratch on each startup so repeated runs begin
160
+ from a known clean DOM state.
161
+
162
+ Parameters:
163
+ - `containerElement` - - Root host container.
164
+
165
+ Returns: Nothing.
166
+
167
+ ### resolveHostVisualPrimitives
168
+
169
+ `() => HostVisualPrimitives`
170
+
171
+ Resolves shared border, shadow, and padding values for host assembly.
172
+
173
+ Centralizing these primitives keeps the DOM-building code focused on layout
174
+ structure instead of duplicating presentation constants everywhere.
175
+
176
+ Returns: Shared visual primitives reused across host sections.
177
+
178
+ ### updateStatsTableValues
179
+
180
+ `(statsValueByKey: Partial<Record<import("test/examples/flappy_bird/browser-entry/browser-entry.stats.types").FlappyStatsKey, HTMLTableCellElement>>, partialValues: Partial<Record<import("test/examples/flappy_bird/browser-entry/browser-entry.stats.types").FlappyStatsKey, string>>) => void`
181
+
182
+ Applies partial stat updates to the rendered stats table.
183
+
184
+ The runtime writes HUD values incrementally, so the host exposes a narrow
185
+ partial-update helper rather than requiring full table redraws.
186
+
187
+ Parameters:
188
+ - `statsValueByKey` - - Lookup of stat keys to value cells.
189
+ - `partialValues` - - Subset of values to write this tick.
190
+
191
+ Returns: Nothing.
192
+
193
+ ## browser-entry/host/host.constants.ts
194
+
195
+ ### host.constants
196
+
197
+ Shared presentation constants for browser host assembly.
198
+
199
+ These values tune the spacing and responsiveness of the host HUD and side
200
+ panels without burying layout numbers inside DOM-building code.
201
+
202
+ ### FLAPPY_HOST_PANEL_PADDING
203
+
204
+ ### FLAPPY_HOST_PANEL_TRANSITION
205
+
206
+ ### FLAPPY_HOST_STATS_SPLIT_GAP
207
+
208
+ ### FLAPPY_HOST_TABLE_FONT_SIZE
209
+
210
+ ### FLAPPY_HOST_TABLE_HOST_PADDING
211
+
212
+ ## browser-entry/host/host.dom.service.ts
213
+
214
+ ### host.dom.service
215
+
216
+ Low-level DOM safety helpers for the browser host boundary.
217
+
218
+ Host assembly depends on several canvases. This helper turns the browser's
219
+ nullable `getContext` API into a strict contract before higher-level host
220
+ assembly begins.
221
+
222
+ ### resolveRequiredCanvas2dContext
223
+
224
+ `(canvas: HTMLCanvasElement, errorMessage: string) => CanvasRenderingContext2D`
225
+
226
+ Low-level DOM safety helpers for the browser host boundary.
227
+
228
+ Host assembly depends on several canvases. This helper turns the browser's
229
+ nullable `getContext` API into a strict contract before higher-level host
230
+ assembly begins.
231
+
232
+ ## browser-entry/host/host.stats.service.ts
233
+
234
+ ### createAndAttachHostStatsTable
235
+
236
+ `(statsTableHost: HTMLElement) => Partial<Record<import("test/examples/flappy_bird/browser-entry/browser-entry.stats.types").FlappyStatsKey, HTMLTableCellElement>>`
237
+
238
+ Stats-table creation and update helpers for the browser host HUD.
239
+
240
+ The host treats the stats table as a small indexed dashboard: build it once,
241
+ keep direct references to value cells, then apply partial text updates during
242
+ the runtime loop.
243
+
244
+ ### updateStatsTableValues
245
+
246
+ `(statsValueByKey: Partial<Record<import("test/examples/flappy_bird/browser-entry/browser-entry.stats.types").FlappyStatsKey, HTMLTableCellElement>>, partialValues: Partial<Record<import("test/examples/flappy_bird/browser-entry/browser-entry.stats.types").FlappyStatsKey, string>>) => void`
247
+
248
+ Applies partial stat updates to the rendered stats table.
249
+
250
+ This keeps HUD writes cheap and explicit: only supplied keys are rewritten,
251
+ and architecture values receive their display formatting in one place.
252
+
253
+ Parameters:
254
+ - `statsValueByKey` - - Lookup of stat keys to value cells.
255
+ - `partialValues` - - Subset of values to write this tick.
256
+
257
+ Returns: Nothing.
258
+
259
+ ## browser-entry/host/host.canvas.service.ts
260
+
261
+ ### host.canvas.service
262
+
263
+ Canvas sizing helpers for the browser host boundary.
264
+
265
+ These utilities keep host layout and backing-store sizing aligned so the
266
+ simulation and network canvases render crisply without stretching artifacts.
267
+
268
+ ### applyCanvasBackingSize
269
+
270
+ `(canvas: HTMLCanvasElement, widthPx: number, heightPx: number) => boolean`
271
+
272
+ Canvas sizing helpers for the browser host boundary.
273
+
274
+ These utilities keep host layout and backing-store sizing aligned so the
275
+ simulation and network canvases render crisply without stretching artifacts.
276
+
277
+ ### applySimulationCanvasBounds
278
+
279
+ `(canvas: HTMLCanvasElement, widthPx: number, heightPx: number) => boolean`
280
+
281
+ Applies fixed simulation-canvas bounds so layout does not stretch unexpectedly.
282
+
283
+ The main simulation canvas uses fixed bounds because the world renderer is
284
+ tuned for a controlled viewport rather than fluid DOM stretching.
285
+
286
+ Parameters:
287
+ - `canvas` - - Simulation canvas element.
288
+ - `widthPx` - - Desired width in pixels.
289
+ - `heightPx` - - Desired height in pixels.
290
+
291
+ Returns: True when backing-store dimensions changed.
292
+
293
+ ### resolveNetworkCanvasSizePx
294
+
295
+ `(networkCanvasHost: HTMLElement, hostInsetPx: number) => { widthPx: number; heightPx: number; }`
296
+
297
+ Computes the drawable network canvas size from host element dimensions.
298
+
299
+ The side-panel network view needs the drawable size after panel insets are
300
+ accounted for, not just the raw host client box.
301
+
302
+ Parameters:
303
+ - `networkCanvasHost` - - Host element wrapping the network canvas.
304
+ - `hostInsetPx` - - Total inset to subtract from both dimensions.
305
+
306
+ Returns: Width/height pair in pixels.
307
+
308
+ ## browser-entry/host/host.resize.service.ts
309
+
310
+ ### installResponsiveViewportSizing
311
+
312
+ `(canvas: HTMLCanvasElement, containerElement: HTMLElement, mainSplitContainer: HTMLElement, statsContainer: HTMLElement, statsSplitContainer: HTMLElement, statsTableHost: HTMLElement, networkCanvas: HTMLCanvasElement, networkCanvasHost: HTMLElement, onNetworkResize: () => void) => void`
313
+
314
+ Top-level responsive sizing orchestration for the browser host.
315
+
316
+ This module wires the host resize lifecycle together: gather the relevant DOM
317
+ elements, run the initial layout pass, and keep canvas sizing synchronized with
318
+ viewport changes over time.
@@ -1,6 +1,16 @@
1
+ /**
2
+ * Canvas sizing helpers for the browser host boundary.
3
+ *
4
+ * These utilities keep host layout and backing-store sizing aligned so the
5
+ * simulation and network canvases render crisply without stretching artifacts.
6
+ */
7
+
1
8
  /**
2
9
  * Applies a canvas backing store size and CSS width/height.
3
10
  *
11
+ * Browser canvases have both backing-store dimensions and CSS box dimensions;
12
+ * this helper updates both together.
13
+ *
4
14
  * @param canvas - Target canvas element.
5
15
  * @param widthPx - Desired backing-store width in pixels.
6
16
  * @param heightPx - Desired backing-store height in pixels.
@@ -28,6 +38,9 @@ export function applyCanvasBackingSize(
28
38
  /**
29
39
  * Applies fixed simulation-canvas bounds so layout does not stretch unexpectedly.
30
40
  *
41
+ * The main simulation canvas uses fixed bounds because the world renderer is
42
+ * tuned for a controlled viewport rather than fluid DOM stretching.
43
+ *
31
44
  * @param canvas - Simulation canvas element.
32
45
  * @param widthPx - Desired width in pixels.
33
46
  * @param heightPx - Desired height in pixels.
@@ -52,6 +65,9 @@ export function applySimulationCanvasBounds(
52
65
  /**
53
66
  * Computes the drawable network canvas size from host element dimensions.
54
67
  *
68
+ * The side-panel network view needs the drawable size after panel insets are
69
+ * accounted for, not just the raw host client box.
70
+ *
55
71
  * @param networkCanvasHost - Host element wrapping the network canvas.
56
72
  * @param hostInsetPx - Total inset to subtract from both dimensions.
57
73
  * @returns Width/height pair in pixels.
@@ -1,24 +1,44 @@
1
+ /**
2
+ * Shared presentation constants for browser host assembly.
3
+ *
4
+ * These values tune the spacing and responsiveness of the host HUD and side
5
+ * panels without burying layout numbers inside DOM-building code.
6
+ */
7
+
1
8
  /**
2
9
  * Shared panel padding used by the host stats container.
10
+ *
11
+ * This controls the interior breathing room of the main stats panel.
3
12
  */
4
13
  export const FLAPPY_HOST_PANEL_PADDING = '8px';
5
14
 
6
15
  /**
7
16
  * Shared table host padding used by the stats value section.
17
+ *
18
+ * The table host gets slightly different padding so dense stat rows remain
19
+ * readable without wasting horizontal space.
8
20
  */
9
21
  export const FLAPPY_HOST_TABLE_HOST_PADDING = '6px 8px';
10
22
 
11
23
  /**
12
24
  * Shared stats table font size.
25
+ *
26
+ * The table uses a compact monospace size so many HUD rows fit comfortably in
27
+ * the host panel.
13
28
  */
14
29
  export const FLAPPY_HOST_TABLE_FONT_SIZE = '12px';
15
30
 
16
31
  /**
17
32
  * Shared panel max-height transition.
33
+ *
34
+ * This supports the subtle host-panel resize behavior during responsive layout
35
+ * changes.
18
36
  */
19
37
  export const FLAPPY_HOST_PANEL_TRANSITION = 'max-height 120ms ease-out';
20
38
 
21
39
  /**
22
40
  * Shared stats split gap.
41
+ *
42
+ * This controls the gutter between the table column and the network panel.
23
43
  */
24
44
  export const FLAPPY_HOST_STATS_SPLIT_GAP = '8px';
@@ -1,6 +1,16 @@
1
+ /**
2
+ * Low-level DOM safety helpers for the browser host boundary.
3
+ *
4
+ * Host assembly depends on several canvases. This helper turns the browser's
5
+ * nullable `getContext` API into a strict contract before higher-level host
6
+ * assembly begins.
7
+ */
8
+
1
9
  /**
2
10
  * Resolves a required 2D context from a canvas element.
3
11
  *
12
+ * Failing early here keeps later rendering code free from repeated null checks.
13
+ *
4
14
  * @param canvas - Target canvas element.
5
15
  * @param errorMessage - Error message when 2D context is unavailable.
6
16
  * @returns Canvas 2D rendering context.