@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
@@ -0,0 +1,71 @@
1
+ # browser-entry/playback/worker-channel
2
+
3
+ ## browser-entry/playback/worker-channel/playback.worker-channel.types.ts
4
+
5
+ ### PlaybackStepPayload
6
+
7
+ Shared alias for the worker playback-step payload.
8
+
9
+ This keeps the playback worker-channel modules focused on playback semantics
10
+ instead of long imported protocol names.
11
+
12
+ ### PlaybackStepRequest
13
+
14
+ Playback-specific worker-channel contracts.
15
+
16
+ These types sit above the lower-level browser worker protocol and describe the
17
+ request budgeting plus summary data flow used by the playback loop.
18
+
19
+ ### ResolvePlaybackStepRequestInput
20
+
21
+ Input used to resolve the next playback-step request and budget remainder.
22
+
23
+ Playback uses a fractional frame budget so browser render cadence and worker
24
+ simulation cadence can be smoothed together over time.
25
+
26
+ ### ResolvePlaybackStepRequestResult
27
+
28
+ Output for the resolved playback-step request and frame-budget remainder.
29
+
30
+ The resolved request records both the integer step batch to send now and the
31
+ leftover fractional budget to carry into the next render tick.
32
+
33
+ ## browser-entry/playback/worker-channel/playback.worker-channel.request.services.ts
34
+
35
+ ### resolvePlaybackStepRequest
36
+
37
+ `(input: import("test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.types").ResolvePlaybackStepRequestInput) => import("test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.types").ResolvePlaybackStepRequestResult`
38
+
39
+ Playback batch-request helpers for the browser worker channel.
40
+
41
+ The playback loop accumulates simulation budget in fractional units, then
42
+ converts that budget into integer worker step requests on each render tick.
43
+
44
+ ## browser-entry/playback/worker-channel/playback.worker-channel.summary.services.ts
45
+
46
+ ### resolvePlaybackCompletionSummary
47
+
48
+ `(playbackStepPayload: { requestId: number; snapshot: import("test/examples/flappy_bird/browser-entry/browser-entry.worker.types").EvolutionPlaybackStepSnapshot; instrumentation?: { activationCallsPerFrame: number; simulationStepsPerRaf: number; } | undefined; done: boolean; averagePipesPassed?: number | undefined; p90FramesSurvived?: number | undefined; winnerPipesPassed?: number | undefined; winnerFramesSurvived?: number | undefined; }, latestLeaderPipesPassed: number, latestLeaderFramesSurvived: number) => { averagePipesPassed: number; p90FramesSurvived: number; winnerPipesPassed: number; winnerFramesSurvived: number; }`
49
+
50
+ Resolves final playback summary values when the worker reports completion.
51
+
52
+ Some end-of-episode aggregates may be omitted from the worker payload, so the
53
+ browser falls back to the latest leader values it has already observed during
54
+ playback.
55
+
56
+ Parameters:
57
+ - `playbackStepPayload` - - Playback payload returned by worker.
58
+ - `latestLeaderPipesPassed` - - Last observed leader pipes passed fallback.
59
+ - `latestLeaderFramesSurvived` - - Last observed leader frames fallback.
60
+
61
+ Returns: Final aggregate playback summary.
62
+
63
+ ### resolvePlaybackFrameStats
64
+
65
+ `(playbackStepPayload: { requestId: number; snapshot: import("test/examples/flappy_bird/browser-entry/browser-entry.worker.types").EvolutionPlaybackStepSnapshot; instrumentation?: { activationCallsPerFrame: number; simulationStepsPerRaf: number; } | undefined; done: boolean; averagePipesPassed?: number | undefined; p90FramesSurvived?: number | undefined; winnerPipesPassed?: number | undefined; winnerFramesSurvived?: number | undefined; }, frameIndex: number, activeBirdCount: number, leaderPipesPassed: number, leaderFramesSurvived: number) => import("test/examples/flappy_bird/browser-entry/browser-entry.worker.types").PlaybackFrameStats`
66
+
67
+ Summary and HUD helpers for playback worker-channel results.
68
+
69
+ Once the worker replies with a playback-step payload, these helpers turn that
70
+ raw protocol data into the browser-facing telemetry and end-of-episode summary
71
+ values used elsewhere in the playback loop.
@@ -0,0 +1,45 @@
1
+ import type {
2
+ ResolvePlaybackStepRequestInput,
3
+ ResolvePlaybackStepRequestResult,
4
+ } from './playback.worker-channel.types';
5
+
6
+ /**
7
+ * Playback batch-request helpers for the browser worker channel.
8
+ *
9
+ * The playback loop accumulates simulation budget in fractional units, then
10
+ * converts that budget into integer worker step requests on each render tick.
11
+ */
12
+
13
+ /**
14
+ * Resolves step count and request payload for the next worker playback batch.
15
+ *
16
+ * This is the pacing bridge between browser rendering and worker simulation.
17
+ * Rather than sending a fixed step count every frame, the loop carries forward
18
+ * fractional remainder so long-term playback speed stays closer to the intended
19
+ * emulation rate.
20
+ *
21
+ * @param input - Current frame budget and viewport dimensions.
22
+ * @returns Request payload plus carried-over fractional frame budget.
23
+ */
24
+ export function resolvePlaybackStepRequest(
25
+ input: ResolvePlaybackStepRequestInput,
26
+ ): ResolvePlaybackStepRequestResult {
27
+ const updatedSimulationFrameBudget =
28
+ input.simulationFrameBudget + input.emulationSpeedMultiplier;
29
+ const simulationStepsThisRender = Math.max(
30
+ 1,
31
+ Math.floor(updatedSimulationFrameBudget),
32
+ );
33
+ const simulationFrameBudgetRemainder =
34
+ updatedSimulationFrameBudget - simulationStepsThisRender;
35
+
36
+ return {
37
+ simulationStepsThisRender,
38
+ simulationFrameBudgetRemainder,
39
+ playbackStepRequest: {
40
+ simulationSteps: simulationStepsThisRender,
41
+ visibleWorldWidthPx: input.visibleWorldWidthPx,
42
+ visibleWorldHeightPx: input.visibleWorldHeightPx,
43
+ },
44
+ };
45
+ }
@@ -0,0 +1,74 @@
1
+ import type { PlaybackFrameStats } from '../../browser-entry.types';
2
+ import type { PlaybackStepPayload } from './playback.worker-channel.types';
3
+
4
+ /**
5
+ * Summary and HUD helpers for playback worker-channel results.
6
+ *
7
+ * Once the worker replies with a playback-step payload, these helpers turn that
8
+ * raw protocol data into the browser-facing telemetry and end-of-episode summary
9
+ * values used elsewhere in the playback loop.
10
+ */
11
+
12
+ /**
13
+ * Resolves HUD playback frame stats from worker payload and leader metrics.
14
+ *
15
+ * The frame-stats payload combines browser-derived leader information with any
16
+ * instrumentation values provided by the worker.
17
+ *
18
+ * @param playbackStepPayload - Playback payload returned by worker.
19
+ * @param frameIndex - Current render frame index.
20
+ * @param activeBirdCount - Number of alive birds in current frame.
21
+ * @param leaderPipesPassed - Current frame leader pipes passed.
22
+ * @param leaderFramesSurvived - Current frame leader survived frames.
23
+ * @returns Normalized per-frame HUD telemetry payload.
24
+ */
25
+ export function resolvePlaybackFrameStats(
26
+ playbackStepPayload: PlaybackStepPayload,
27
+ frameIndex: number,
28
+ activeBirdCount: number,
29
+ leaderPipesPassed: number,
30
+ leaderFramesSurvived: number,
31
+ ): PlaybackFrameStats {
32
+ return {
33
+ frameIndex,
34
+ activeBirdCount,
35
+ leaderPipesPassed,
36
+ leaderFramesSurvived,
37
+ activationCallsPerFrame:
38
+ playbackStepPayload.instrumentation?.activationCallsPerFrame ?? 0,
39
+ simulationStepsPerRaf:
40
+ playbackStepPayload.instrumentation?.simulationStepsPerRaf ?? 0,
41
+ };
42
+ }
43
+
44
+ /**
45
+ * Resolves final playback summary values when the worker reports completion.
46
+ *
47
+ * Some end-of-episode aggregates may be omitted from the worker payload, so the
48
+ * browser falls back to the latest leader values it has already observed during
49
+ * playback.
50
+ *
51
+ * @param playbackStepPayload - Playback payload returned by worker.
52
+ * @param latestLeaderPipesPassed - Last observed leader pipes passed fallback.
53
+ * @param latestLeaderFramesSurvived - Last observed leader frames fallback.
54
+ * @returns Final aggregate playback summary.
55
+ */
56
+ export function resolvePlaybackCompletionSummary(
57
+ playbackStepPayload: PlaybackStepPayload,
58
+ latestLeaderPipesPassed: number,
59
+ latestLeaderFramesSurvived: number,
60
+ ): {
61
+ averagePipesPassed: number;
62
+ p90FramesSurvived: number;
63
+ winnerPipesPassed: number;
64
+ winnerFramesSurvived: number;
65
+ } {
66
+ return {
67
+ averagePipesPassed: playbackStepPayload.averagePipesPassed ?? 0,
68
+ p90FramesSurvived: playbackStepPayload.p90FramesSurvived ?? 0,
69
+ winnerPipesPassed:
70
+ playbackStepPayload.winnerPipesPassed ?? latestLeaderPipesPassed,
71
+ winnerFramesSurvived:
72
+ playbackStepPayload.winnerFramesSurvived ?? latestLeaderFramesSurvived,
73
+ };
74
+ }
@@ -0,0 +1,53 @@
1
+ import type { EvolutionPlaybackStepMessage } from '../../browser-entry.types';
2
+
3
+ /**
4
+ * Playback-specific worker-channel contracts.
5
+ *
6
+ * These types sit above the lower-level browser worker protocol and describe the
7
+ * request budgeting plus summary data flow used by the playback loop.
8
+ */
9
+
10
+ /**
11
+ * Request payload for one playback-step worker call.
12
+ *
13
+ * The browser asks the worker to advance simulation by a small batch of steps
14
+ * and to package the result for the current viewport dimensions.
15
+ */
16
+ export interface PlaybackStepRequest {
17
+ simulationSteps: number;
18
+ visibleWorldWidthPx: number;
19
+ visibleWorldHeightPx: number;
20
+ }
21
+
22
+ /**
23
+ * Input used to resolve the next playback-step request and budget remainder.
24
+ *
25
+ * Playback uses a fractional frame budget so browser render cadence and worker
26
+ * simulation cadence can be smoothed together over time.
27
+ */
28
+ export interface ResolvePlaybackStepRequestInput {
29
+ simulationFrameBudget: number;
30
+ visibleWorldWidthPx: number;
31
+ visibleWorldHeightPx: number;
32
+ emulationSpeedMultiplier: number;
33
+ }
34
+
35
+ /**
36
+ * Output for the resolved playback-step request and frame-budget remainder.
37
+ *
38
+ * The resolved request records both the integer step batch to send now and the
39
+ * leftover fractional budget to carry into the next render tick.
40
+ */
41
+ export interface ResolvePlaybackStepRequestResult {
42
+ simulationStepsThisRender: number;
43
+ simulationFrameBudgetRemainder: number;
44
+ playbackStepRequest: PlaybackStepRequest;
45
+ }
46
+
47
+ /**
48
+ * Shared alias for the worker playback-step payload.
49
+ *
50
+ * This keeps the playback worker-channel modules focused on playback semantics
51
+ * instead of long imported protocol names.
52
+ */
53
+ export type PlaybackStepPayload = EvolutionPlaybackStepMessage['payload'];
@@ -0,0 +1,304 @@
1
+ # browser-entry/runtime
2
+
3
+ ## browser-entry/runtime/runtime.types.ts
4
+
5
+ ### RuntimeContainerTarget
6
+
7
+ Container argument accepted by the browser runtime start function.
8
+
9
+ Callers can either pass a host element directly or provide an element id for
10
+ late resolution inside the runtime startup path.
11
+
12
+ ### RuntimeGlobalWindow
13
+
14
+ Browser `window` extension shape used for global runtime wiring.
15
+
16
+ This keeps the auto-start and compatibility globals typed without coupling
17
+ the runtime modules directly to ad hoc window-property access.
18
+
19
+ ### RuntimeHostViewContext
20
+
21
+ Browser host view handles used by the runtime entry orchestration.
22
+
23
+ This is the typed bundle of canvas, HUD, and visualization handles returned
24
+ by the host layer once the browser DOM has been prepared.
25
+
26
+ ### RuntimeMutableLifecycleState
27
+
28
+ Mutable lifecycle state used to coordinate stop semantics and completion.
29
+
30
+ The runtime loop is asynchronous and long-lived, so the browser keeps a small
31
+ shared lifecycle object for idempotent shutdown and completion signaling.
32
+
33
+ ### RuntimeRunHandle
34
+
35
+ Core runtime contracts for the Flappy Bird browser demo.
36
+
37
+ The runtime boundary is where the browser-side application comes together:
38
+ DOM host setup, worker creation, telemetry wiring, lifecycle control, and the
39
+ configuration passed into the evolution loop.
40
+
41
+ ### RuntimeStartConfig
42
+
43
+ Static runtime configuration resolved before the browser loop starts.
44
+
45
+ These values define the high-level NEAT and network shape used for the whole
46
+ browser session.
47
+
48
+ ### RuntimeStartContext
49
+
50
+ Shared runtime startup dependencies created before evolution begins.
51
+
52
+ Once this context exists, the browser has everything it needs to launch the
53
+ actual evolution/playback loop.
54
+
55
+ ## browser-entry/runtime/runtime.ts
56
+
57
+ ### RuntimeRunHandle
58
+
59
+ Core runtime contracts for the Flappy Bird browser demo.
60
+
61
+ The runtime boundary is where the browser-side application comes together:
62
+ DOM host setup, worker creation, telemetry wiring, lifecycle control, and the
63
+ configuration passed into the evolution loop.
64
+
65
+ ### start
66
+
67
+ `(container: import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeContainerTarget) => Promise<import("test/examples/flappy_bird/browser-entry/browser-entry.runtime.types").FlappyBirdRunHandle>`
68
+
69
+ ## browser-entry/runtime/runtime.errors.ts
70
+
71
+ ### resolveRequiredRuntimeHostElement
72
+
73
+ `(container: import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeContainerTarget) => HTMLElement`
74
+
75
+ Resolves and validates the browser runtime host element.
76
+
77
+ The runtime accepts either a string id or a concrete element so this helper
78
+ folds that loose input into one validated host node.
79
+
80
+ Parameters:
81
+ - `container` - - Element id or HTMLElement provided to runtime start.
82
+
83
+ Returns: Resolved host element.
84
+
85
+ ### resolveRuntimeHudErrorStatus
86
+
87
+ `(error: unknown) => string`
88
+
89
+ Formats unknown runtime failures into a stable HUD status string.
90
+
91
+ The HUD should not need to understand arbitrary thrown values, so this helper
92
+ normalizes anything throwable into one readable status line.
93
+
94
+ Parameters:
95
+ - `error` - - Unknown runtime exception value.
96
+
97
+ Returns: Normalized status string for HUD output.
98
+
99
+ ### RuntimeContainerNotFoundError
100
+
101
+ Runtime-specific error helpers for the browser entrypoint.
102
+
103
+ These errors normalize two user-facing failure modes: the browser cannot find
104
+ the requested host container, or the runtime needs to report an unexpected
105
+ failure back into the HUD.
106
+
107
+ ## browser-entry/runtime/runtime.startup.service.ts
108
+
109
+ ### createRuntimeStartConfig
110
+
111
+ `() => import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeStartConfig`
112
+
113
+ Resolves the static runtime configuration used during browser startup.
114
+
115
+ Centralizing the configuration fold here makes the runtime entry read as
116
+ orchestration instead of constant plumbing.
117
+
118
+ Returns: Runtime configuration derived from shared constants.
119
+
120
+ ### createRuntimeStartContext
121
+
122
+ `(container: import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeContainerTarget) => import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeStartContext`
123
+
124
+ Runtime startup helpers for the Flappy Bird browser demo.
125
+
126
+ These functions cover the pre-loop phase: resolve the host container, build a
127
+ typed browser view, derive static config, create telemetry state, spawn the
128
+ worker, and paint the initial HUD before evolution begins.
129
+
130
+ ### initializeRuntimeHud
131
+
132
+ `(runtimeStartContext: import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeStartContext) => void`
133
+
134
+ Paints the initial runtime HUD values before the evolution loop starts.
135
+
136
+ The HUD is seeded immediately so the page communicates that startup is in
137
+ progress rather than appearing blank while the worker and loop are booting.
138
+
139
+ Parameters:
140
+ - `runtimeStartContext` - - Shared runtime start context.
141
+
142
+ Returns: Nothing.
143
+
144
+ ## browser-entry/runtime/runtime.lifecycle.service.ts
145
+
146
+ ### createRuntimeLifecycleState
147
+
148
+ `() => import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeMutableLifecycleState`
149
+
150
+ Lifecycle and teardown helpers for the browser runtime.
151
+
152
+ The runtime behaves like a small application process. These helpers create the
153
+ mutable state and public handle needed to stop it cleanly, terminate the
154
+ worker, and resolve the completion promise exactly once.
155
+
156
+ ### createRuntimeRunHandle
157
+
158
+ `(runtimeStartContext: import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeStartContext, runtimeLifecycleState: import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeMutableLifecycleState) => import("test/examples/flappy_bird/browser-entry/browser-entry.runtime.types").FlappyBirdRunHandle`
159
+
160
+ Builds the public run handle and binds it to runtime teardown behavior.
161
+
162
+ The handle is the user-facing control surface for the demo. Internally it is
163
+ just a thin closure layer over the mutable lifecycle state and startup
164
+ context.
165
+
166
+ Parameters:
167
+ - `runtimeStartContext` - - Shared runtime start context.
168
+ - `runtimeLifecycleState` - - Mutable lifecycle state for stop semantics.
169
+
170
+ Returns: Public run handle exposed to callers.
171
+
172
+ ## browser-entry/runtime/runtime.telemetry.service.ts
173
+
174
+ ### createRuntimeTelemetryState
175
+
176
+ `() => import("test/examples/flappy_bird/browser-entry/runtime/runtime.telemetry.service").RuntimeTelemetryState`
177
+
178
+ Creates telemetry state and attaches optional minor-GC observer.
179
+
180
+ Instrumentation is feature-gated so the demo can run in a low-noise mode when
181
+ telemetry is not desired.
182
+
183
+ Returns: Initialized telemetry state.
184
+
185
+ ### disconnectRuntimeTelemetry
186
+
187
+ `(telemetryState: import("test/examples/flappy_bird/browser-entry/runtime/runtime.telemetry.service").RuntimeTelemetryState) => void`
188
+
189
+ Disconnects runtime telemetry observers.
190
+
191
+ This is part of runtime teardown and prevents instrumentation observers from
192
+ lingering after the demo has stopped.
193
+
194
+ Parameters:
195
+ - `telemetryState` - - Runtime telemetry state.
196
+
197
+ Returns: Nothing.
198
+
199
+ ### resolveInitialRuntimeTelemetryHudValues
200
+
201
+ `() => { telemetryHeader: string; telemetryActivationsPerFrame: string; telemetrySimulationStepsPerRaf: string; telemetryHudUpdatesPerSecond: string; telemetryMinorGcPerMinute: string; }`
202
+
203
+ Resolves default telemetry HUD values used before first playback updates.
204
+
205
+ The initial values make the instrumentation section self-describing even
206
+ before the first playback frame arrives.
207
+
208
+ Returns: Initial telemetry field values.
209
+
210
+ ### resolveRuntimeTelemetryHudValues
211
+
212
+ `(frameStats: import("test/examples/flappy_bird/browser-entry/browser-entry.worker.types").PlaybackFrameStats, telemetryState: import("test/examples/flappy_bird/browser-entry/runtime/runtime.telemetry.service").RuntimeTelemetryState) => { telemetryActivationsPerFrame: string; telemetrySimulationStepsPerRaf: string; telemetryHudUpdatesPerSecond: string; telemetryMinorGcPerMinute: string; }`
213
+
214
+ Resolves per-frame telemetry HUD values and updates rolling windows.
215
+
216
+ On each published playback frame, the runtime folds the new telemetry sample
217
+ into rolling windows and emits human-readable HUD strings.
218
+
219
+ Parameters:
220
+ - `frameStats` - - Playback frame stats for the current frame.
221
+ - `telemetryState` - - Runtime telemetry mutable state.
222
+
223
+ Returns: Formatted telemetry HUD values for this frame.
224
+
225
+ ### RuntimeTelemetryState
226
+
227
+ Runtime telemetry helpers for live browser HUD updates.
228
+
229
+ The runtime tracks a small rolling window of operational signals such as HUD
230
+ update frequency and minor GC activity. These are not part of the simulation
231
+ itself; they are observability features for understanding how expensive the
232
+ browser playback loop is.
233
+
234
+ ## browser-entry/runtime/runtime.evolution-loop.service.ts
235
+
236
+ ### runRuntimeEvolutionLoop
237
+
238
+ `(options: import("test/examples/flappy_bird/browser-entry/runtime/runtime.evolution-loop.service").RuntimeEvolutionLoopOptions) => Promise<void>`
239
+
240
+ Runs generation orchestration and playback until a stop signal is observed.
241
+
242
+ The loop alternates between two phases:
243
+ 1. Evolve off-thread until the worker emits the next best-generation summary.
244
+ 2. Play that generation back on the main thread while streaming HUD updates.
245
+
246
+ This rhythm makes the demo feel like a live training dashboard instead of a
247
+ one-shot batch job.
248
+
249
+ Parameters:
250
+ - `options` - - Runtime evolution dependencies and mutable state accessors.
251
+
252
+ Returns: Nothing.
253
+
254
+ ### RuntimeEvolutionLoopOptions
255
+
256
+ Long-running evolution/playback orchestration for the browser runtime.
257
+
258
+ This loop is the heart of the interactive demo. It repeatedly asks the worker
259
+ for the next evolved generation, updates the HUD and network view, plays back
260
+ that generation on the canvas, then folds the outcome into best-so-far
261
+ browser state.
262
+
263
+ ## browser-entry/runtime/runtime.browser-globals.service.ts
264
+
265
+ ### installRuntimeBrowserGlobals
266
+
267
+ `(startRuntime: import("test/examples/flappy_bird/browser-entry/runtime/runtime.browser-globals.service").RuntimeStartFunction) => void`
268
+
269
+ Publishes browser globals for demo auto-start and host-driven control.
270
+
271
+ This keeps the runtime friendly to static docs pages where the bundle may be
272
+ loaded by script tag rather than imported programmatically.
273
+
274
+ This keeps parity with the asciiMaze entry style:
275
+ - `window.flappyBird.start(...)` for explicit invocation,
276
+ - `window.flappyBirdStart(...)` for compatibility,
277
+ - one guarded auto-start for standalone HTML usage.
278
+
279
+ Parameters:
280
+ - `startRuntime` - - Runtime entry function.
281
+
282
+ Returns: Nothing.
283
+
284
+ ### RuntimeStartFunction
285
+
286
+ `(container: import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeContainerTarget | undefined) => Promise<import("test/examples/flappy_bird/browser-entry/browser-entry.runtime.types").FlappyBirdRunHandle>`
287
+
288
+ Browser-global wiring for the Flappy Bird runtime entrypoint.
289
+
290
+ The demo supports both module-style startup and traditional global-page usage.
291
+ This module publishes the small global surface used by standalone docs pages
292
+ and compatibility integrations.
293
+
294
+ ## browser-entry/runtime/runtime.evolution-launch.service.ts
295
+
296
+ ### launchRuntimeEvolution
297
+
298
+ `(runtimeStartContext: import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeStartContext, runtimeLifecycleState: import("test/examples/flappy_bird/browser-entry/runtime/runtime.types").RuntimeMutableLifecycleState, stop: () => void) => void`
299
+
300
+ Launch wrapper for the long-running browser runtime loop.
301
+
302
+ The evolution loop itself is asynchronous and may surface unexpected errors.
303
+ This launcher keeps the entrypoint clean by centralizing the catch path that
304
+ routes failures into the HUD before shutting the runtime down.
@@ -4,8 +4,20 @@ import type {
4
4
  RuntimeRunHandle,
5
5
  } from './runtime.types';
6
6
 
7
+ /**
8
+ * Browser-global wiring for the Flappy Bird runtime entrypoint.
9
+ *
10
+ * The demo supports both module-style startup and traditional global-page usage.
11
+ * This module publishes the small global surface used by standalone docs pages
12
+ * and compatibility integrations.
13
+ */
14
+
7
15
  /**
8
16
  * Runtime start function signature used by browser-global wiring.
17
+ *
18
+ * The signature accepts an optional host target so global callers can either
19
+ * rely on the default container or explicitly direct the runtime to another
20
+ * element.
9
21
  */
10
22
  export type RuntimeStartFunction = (
11
23
  container?: RuntimeContainerTarget,
@@ -14,6 +26,9 @@ export type RuntimeStartFunction = (
14
26
  /**
15
27
  * Publishes browser globals for demo auto-start and host-driven control.
16
28
  *
29
+ * This keeps the runtime friendly to static docs pages where the bundle may be
30
+ * loaded by script tag rather than imported programmatically.
31
+ *
17
32
  * This keeps parity with the asciiMaze entry style:
18
33
  * - `window.flappyBird.start(...)` for explicit invocation,
19
34
  * - `window.flappyBirdStart(...)` for compatibility,
@@ -1,7 +1,18 @@
1
1
  import type { RuntimeContainerTarget } from './runtime.types';
2
2
 
3
+ /**
4
+ * Runtime-specific error helpers for the browser entrypoint.
5
+ *
6
+ * These errors normalize two user-facing failure modes: the browser cannot find
7
+ * the requested host container, or the runtime needs to report an unexpected
8
+ * failure back into the HUD.
9
+ */
10
+
3
11
  /**
4
12
  * Error raised when the browser runtime host container cannot be resolved.
13
+ *
14
+ * This usually means the caller passed the wrong element id or attempted to
15
+ * start the demo before the target container existed in the DOM.
5
16
  */
6
17
  export class RuntimeContainerNotFoundError extends Error {
7
18
  /**
@@ -16,6 +27,9 @@ export class RuntimeContainerNotFoundError extends Error {
16
27
  /**
17
28
  * Resolves and validates the browser runtime host element.
18
29
  *
30
+ * The runtime accepts either a string id or a concrete element so this helper
31
+ * folds that loose input into one validated host node.
32
+ *
19
33
  * @param container - Element id or HTMLElement provided to runtime start.
20
34
  * @returns Resolved host element.
21
35
  */
@@ -35,6 +49,9 @@ export function resolveRequiredRuntimeHostElement(
35
49
  /**
36
50
  * Formats unknown runtime failures into a stable HUD status string.
37
51
  *
52
+ * The HUD should not need to understand arbitrary thrown values, so this helper
53
+ * normalizes anything throwable into one readable status line.
54
+ *
38
55
  * @param error - Unknown runtime exception value.
39
56
  * @returns Normalized status string for HUD output.
40
57
  */
@@ -0,0 +1,56 @@
1
+ import { updateStatsTableValues } from '../host/host';
2
+ import { resolveRuntimeHudErrorStatus } from './runtime.errors';
3
+ import { runRuntimeEvolutionLoop } from './runtime.evolution-loop.service';
4
+ import type {
5
+ RuntimeMutableLifecycleState,
6
+ RuntimeStartContext,
7
+ } from './runtime.types';
8
+
9
+ /**
10
+ * Launch wrapper for the long-running browser runtime loop.
11
+ *
12
+ * The evolution loop itself is asynchronous and may surface unexpected errors.
13
+ * This launcher keeps the entrypoint clean by centralizing the catch path that
14
+ * routes failures into the HUD before shutting the runtime down.
15
+ */
16
+
17
+ /**
18
+ * Starts the runtime evolution loop and routes unexpected failures to the HUD.
19
+ *
20
+ * This is the boundary between normal browser startup and the long-running async
21
+ * loop that drives evolution plus playback.
22
+ *
23
+ * @param runtimeStartContext - Shared runtime start context.
24
+ * @param runtimeLifecycleState - Mutable lifecycle state used for stop checks.
25
+ * @param stop - Idempotent stop function bound to the current runtime handle.
26
+ * @returns Nothing.
27
+ */
28
+ export function launchRuntimeEvolution(
29
+ runtimeStartContext: RuntimeStartContext,
30
+ runtimeLifecycleState: RuntimeMutableLifecycleState,
31
+ stop: () => void,
32
+ ): void {
33
+ const { config, evolutionWorker, runtimeTelemetryState, viewContext } =
34
+ runtimeStartContext;
35
+
36
+ // Step 1: Start the long-running evolution orchestration loop.
37
+ void runRuntimeEvolutionLoop({
38
+ evolutionWorker,
39
+ canvas: viewContext.canvas,
40
+ context: viewContext.context,
41
+ statsValueByKey: viewContext.statsValueByKey,
42
+ renderNetworkArchitecture: viewContext.renderNetworkArchitecture,
43
+ populationSize: config.populationSize,
44
+ elitismCount: config.elitismCount,
45
+ inputSize: config.inputSize,
46
+ outputSize: config.outputSize,
47
+ runtimeTelemetryState,
48
+ isStopped: () => runtimeLifecycleState.stopped,
49
+ }).catch((error: unknown) => {
50
+ // Step 2: Surface unexpected failures in the HUD and tear down the runtime.
51
+ updateStatsTableValues(viewContext.statsValueByKey, {
52
+ status: resolveRuntimeHudErrorStatus(error),
53
+ });
54
+ stop();
55
+ });
56
+ }