@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,3 +1,11 @@
1
+ /**
2
+ * Canvas frame-layout contracts for the Flappy Bird browser demo.
3
+ *
4
+ * These types support the demo's deliberately stylized text-frame chrome: title
5
+ * boxes, outer borders, and viewport transforms that make the example feel more
6
+ * like an instrument panel than a plain canvas game.
7
+ */
8
+
1
9
  /** Input contract for standalone title frame rendering helper. */
2
10
  export interface RenderStandaloneTitleBoxInput {
3
11
  context: CanvasRenderingContext2D;
@@ -8,7 +16,12 @@ export interface RenderStandaloneTitleBoxInput {
8
16
  font: string;
9
17
  }
10
18
 
11
- /** Input contract for outer frame rendering helper. */
19
+ /**
20
+ * Input contract for outer frame rendering helper.
21
+ *
22
+ * The outer frame is the decorative shell that visually separates the playable
23
+ * world and telemetry panels from the rest of the page.
24
+ */
12
25
  export interface RenderClosedOuterBoxInput {
13
26
  context: CanvasRenderingContext2D;
14
27
  widthPx: number;
@@ -17,14 +30,24 @@ export interface RenderClosedOuterBoxInput {
17
30
  font: string;
18
31
  }
19
32
 
20
- /** Viewport transform values for world-to-canvas rendering. */
33
+ /**
34
+ * Viewport transform values for world-to-canvas rendering.
35
+ *
36
+ * These numbers answer the classic graphics question: how does one unit in the
37
+ * simulated world map into the current canvas rectangle?
38
+ */
21
39
  export interface ViewportInfo {
22
40
  offsetXPx: number;
23
41
  offsetYPx: number;
24
42
  scale: number;
25
43
  }
26
44
 
27
- /** Canvas text-grid metrics used for frame rendering layout helpers. */
45
+ /**
46
+ * Canvas text-grid metrics used for frame rendering layout helpers.
47
+ *
48
+ * The frame renderer measures glyph and row geometry once, then uses that grid
49
+ * to place ASCII-style UI elements consistently.
50
+ */
28
51
  export interface TextFrameMetrics {
29
52
  centeredColumns: number;
30
53
  offsetXPx: number;
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Public lifecycle contracts for the Flappy Bird browser runtime.
3
+ *
4
+ * These types describe how the demo is started, stopped, and exposed on the
5
+ * browser `window` object. They are intentionally small because callers should
6
+ * control the demo at a high level without depending on private implementation
7
+ * details.
8
+ */
9
+
1
10
  /** Handle returned by `start` for controlling demo execution lifecycle. */
2
11
  export interface FlappyBirdRunHandle {
3
12
  stop: () => void;
@@ -5,7 +14,13 @@ export interface FlappyBirdRunHandle {
5
14
  done: Promise<void>;
6
15
  }
7
16
 
8
- /** Runtime window contract for the Flappy Bird browser demo. */
17
+ /**
18
+ * Runtime window contract for the Flappy Bird browser demo.
19
+ *
20
+ * The demo exposes a small debug-friendly surface on `window` so manual browser
21
+ * experiments and docs examples can start the simulation without importing the
22
+ * bundle as a module.
23
+ */
9
24
  export interface RuntimeWindow extends Window {
10
25
  flappyBird?: {
11
26
  start?: (container?: string | HTMLElement) => Promise<FlappyBirdRunHandle>;
@@ -3,6 +3,13 @@ import type {
3
3
  PopulationPipe,
4
4
  } from './browser-entry.worker.types';
5
5
 
6
+ /**
7
+ * Simulation-facing browser contracts shared by playback helpers.
8
+ *
9
+ * These types describe the minimum world state the browser needs while it is
10
+ * reconstructing, rendering, or summarizing worker-produced frames.
11
+ */
12
+
6
13
  /** Bird shape used by utility winner/leader resolver helpers. */
7
14
  export interface BrowserPopulationBirdLike {
8
15
  done: boolean;
@@ -17,16 +24,28 @@ export interface BrowserPopulationPipeLike {
17
24
  gapSizePx: number;
18
25
  }
19
26
 
20
- /** Difficulty profile consumed by simulation observation helpers. */
27
+ /**
28
+ * Difficulty profile consumed by simulation observation helpers.
29
+ *
30
+ * This bundles the three variables that define how demanding a stretch of the
31
+ * course is: corridor width, pipe speed, and spawn cadence.
32
+ */
21
33
  export interface BrowserDifficultyProfile {
22
34
  pipeGapPx: number;
23
35
  pipeSpeedPxPerFrame: number;
24
36
  pipeSpawnIntervalFrames: number;
25
37
  }
26
38
 
27
- /** Mutable render-state model consumed by the population frame renderer. */
39
+ /**
40
+ * Mutable render-state model consumed by the population frame renderer.
41
+ *
42
+ * The playback layer incrementally updates this state as worker snapshots
43
+ * arrive, which lets rendering stay deterministic without re-deriving world
44
+ * history from scratch each frame.
45
+ */
28
46
  export interface PopulationRenderState {
29
47
  frameIndex: number;
48
+ cumulativePipeTravelPx: number;
30
49
  visibleWorldWidthPx: number;
31
50
  visibleWorldHeightPx: number;
32
51
  nextPipeId: number;
@@ -38,18 +57,33 @@ export interface PopulationRenderState {
38
57
  birds: PopulationBird[];
39
58
  }
40
59
 
41
- /** Trail point used by playback trail rendering cache. */
60
+ /**
61
+ * Trail point used by playback trail rendering cache.
62
+ *
63
+ * A trail point stores where one bird was at one frame so the UI can draw a
64
+ * short motion history behind active agents.
65
+ */
42
66
  export interface TrailPoint {
43
67
  frameIndex: number;
44
68
  yPx: number;
45
69
  }
46
70
 
47
- /** Mutable trail cache keyed by bird index for frame rendering. */
71
+ /**
72
+ * Mutable trail cache keyed by bird index for frame rendering.
73
+ *
74
+ * This cache exists purely for visualization ergonomics; it is not part of the
75
+ * worker simulation state.
76
+ */
48
77
  export interface TrailState {
49
78
  birdTrailsY: TrailPoint[][];
50
79
  }
51
80
 
52
- /** Minimal random source contract used by utility random helpers. */
81
+ /**
82
+ * Minimal random source contract used by utility random helpers.
83
+ *
84
+ * The narrow contract keeps deterministic spawn utilities portable across
85
+ * browser and test contexts.
86
+ */
53
87
  export interface RngLike {
54
88
  nextInt: (min: number, max: number) => number;
55
89
  }
@@ -1,15 +1,14 @@
1
1
  import { FLAPPY_NEON_BIRD_PALETTE } from '../constants/constants';
2
2
  import {
3
3
  FLAPPY_PIPE_GAP_CENTER_MAX_Y_PX,
4
- FLAPPY_PIPE_GAP_CENTER_MAX_DELTA_PX,
5
4
  FLAPPY_PIPE_GAP_CENTER_MIN_Y_PX,
6
5
  FLAPPY_WORLD_HEIGHT_PX,
7
6
  } from '../constants/constants';
8
7
  import {
9
- type SharedDifficultyProfile,
10
- resolveAdaptiveDifficultyProfile,
8
+ resolveNextSpawnGapCenterY as resolveSharedNextSpawnGapCenterY,
11
9
  resolveNextSpawnGapSize as resolveSharedNextSpawnGapSize,
12
10
  resolveNextSpawnIntervalFrames as resolveSharedNextSpawnIntervalFrames,
11
+ sampleGapCenterY as sampleSharedGapCenterY,
13
12
  } from '../flappy.simulation.shared.utils';
14
13
  import type { BrowserDifficultyProfile, RngLike } from './browser-entry.types';
15
14
 
@@ -24,9 +23,10 @@ export function sampleGapCenterY(
24
23
  rng: RngLike,
25
24
  worldHeightPx: number = FLAPPY_WORLD_HEIGHT_PX,
26
25
  ): number {
27
- const lowerBoundGapCenterYPx = FLAPPY_PIPE_GAP_CENTER_MIN_Y_PX;
28
- const upperBoundGapCenterYPx = resolveGapCenterUpperBoundYPx(worldHeightPx);
29
- return rng.nextInt(lowerBoundGapCenterYPx, upperBoundGapCenterYPx);
26
+ return sampleSharedGapCenterY(
27
+ rng,
28
+ resolveGapCenterUpperBoundYPx(worldHeightPx),
29
+ );
30
30
  }
31
31
 
32
32
  /**
@@ -42,18 +42,10 @@ export function resolveNextSpawnGapCenterY(
42
42
  rng: RngLike,
43
43
  worldHeightPx: number = FLAPPY_WORLD_HEIGHT_PX,
44
44
  ): number {
45
- const sampledGapCenterYPx = sampleGapCenterY(rng, worldHeightPx);
46
- const minimumGapCenterYPx = Math.max(
47
- FLAPPY_PIPE_GAP_CENTER_MIN_Y_PX,
48
- previousGapCenterYPx - FLAPPY_PIPE_GAP_CENTER_MAX_DELTA_PX,
49
- );
50
- const maximumGapCenterYPx = Math.min(
45
+ return resolveSharedNextSpawnGapCenterY(
46
+ previousGapCenterYPx,
47
+ rng,
51
48
  resolveGapCenterUpperBoundYPx(worldHeightPx),
52
- previousGapCenterYPx + FLAPPY_PIPE_GAP_CENTER_MAX_DELTA_PX,
53
- );
54
- return Math.max(
55
- minimumGapCenterYPx,
56
- Math.min(sampledGapCenterYPx, maximumGapCenterYPx),
57
49
  );
58
50
  }
59
51
 
@@ -107,7 +99,7 @@ export function resolveNextSpawnGapSize(
107
99
  ): number {
108
100
  return resolveSharedNextSpawnGapSize(
109
101
  previousSpawnGapPx,
110
- difficultyProfile as SharedDifficultyProfile,
102
+ difficultyProfile,
111
103
  rng,
112
104
  );
113
105
  }
@@ -125,18 +117,6 @@ export function resolveNextSpawnIntervalFrames(
125
117
  ): number {
126
118
  return resolveSharedNextSpawnIntervalFrames(
127
119
  previousSpawnIntervalFrames,
128
- difficultyProfile as SharedDifficultyProfile,
120
+ difficultyProfile,
129
121
  );
130
122
  }
131
-
132
- /**
133
- * Resolves current difficulty profile from pipes-passed progress.
134
- *
135
- * @param pipesPassed - Current pipes passed.
136
- * @returns Difficulty profile.
137
- */
138
- export function resolveDifficultyProfile(
139
- pipesPassed: number,
140
- ): BrowserDifficultyProfile {
141
- return resolveAdaptiveDifficultyProfile(pipesPassed, 1);
142
- }
@@ -1,3 +1,11 @@
1
+ /**
2
+ * HUD and runtime stats contracts for the Flappy Bird browser demo.
3
+ *
4
+ * The browser HUD is intentionally declarative: keys describe what should be
5
+ * shown, and helper utilities map those keys to DOM rows and live values. That
6
+ * keeps the status panel readable even as telemetry grows.
7
+ */
8
+
1
9
  /** Runtime stats table key union used across browser-entry helpers. */
2
10
  export type FlappyStatsKey =
3
11
  | 'currentHeader'
@@ -20,24 +28,44 @@ export type FlappyStatsKey =
20
28
  | 'status'
21
29
  | 'birds';
22
30
 
23
- /** Declarative row descriptor for the runtime stats table. */
31
+ /**
32
+ * Declarative row descriptor for the runtime stats table.
33
+ *
34
+ * Each row is described as data first so the HUD can be assembled in a stable,
35
+ * testable order instead of being hand-written imperatively.
36
+ */
24
37
  export interface FlappyStatsRowDescriptor {
25
38
  key: FlappyStatsKey;
26
39
  label: string;
27
40
  }
28
41
 
29
- /** Runtime lookup map of stat keys to writable value cells. */
42
+ /**
43
+ * Runtime lookup map of stat keys to writable value cells.
44
+ *
45
+ * This acts like a small DOM index so the update loop can mutate the correct
46
+ * cells directly without repeatedly querying the document.
47
+ */
30
48
  export type FlappyStatsTableCells = Partial<
31
49
  Record<FlappyStatsKey, HTMLTableCellElement>
32
50
  >;
33
51
 
34
- /** Color pair used for stats category key/value styling. */
52
+ /**
53
+ * Color pair used for stats category key/value styling.
54
+ *
55
+ * The HUD uses paired colors so labels and values stay visually grouped while
56
+ * still separating categories such as current run, telemetry, and best-so-far.
57
+ */
35
58
  export interface FlappyStatsCategoryColors {
36
59
  keyColor: string;
37
60
  valueColor: string;
38
61
  }
39
62
 
40
- /** Input contract for declarative runtime stats table row builder. */
63
+ /**
64
+ * Input contract for declarative runtime stats table row builder.
65
+ *
66
+ * The builder needs both the target table and a small policy surface that says
67
+ * whether instrumentation rows should appear and how rows should be colored.
68
+ */
41
69
  export interface CreateFlappyStatsTableRowsInput {
42
70
  statsTable: HTMLTableElement;
43
71
  enableRuntimeInstrumentation: boolean;
@@ -1,2 +1,13 @@
1
+ /**
2
+ * Browser demo public entry for the Flappy Bird example.
3
+ *
4
+ * This boundary is the hand-off point between library consumers and the demo's
5
+ * browser runtime. Calling `start` boots the canvas UI, worker channel, HUD,
6
+ * and playback loop without exposing all of that internal orchestration as part
7
+ * of the public API.
8
+ *
9
+ * In other words, this file is intentionally tiny because it acts like a clean
10
+ * facade over a much larger interactive system.
11
+ */
1
12
  export { start } from './runtime/runtime';
2
13
  export type { FlappyBirdRunHandle } from './browser-entry.types';
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Aggregated public type surface for the Flappy Bird browser runtime.
3
+ *
4
+ * The browser demo spans several concerns at once: worker messaging, playback
5
+ * rendering, telemetry, viewport math, and network visualization. Re-exporting
6
+ * the public contracts from one place gives readers a compact map of that
7
+ * runtime without forcing them to know the internal folder layout first.
8
+ */
1
9
  export type * from './browser-entry.runtime.types';
2
10
  export type * from './browser-entry.stats.types';
3
11
  export type * from './browser-entry.worker.types';
@@ -1,5 +1,14 @@
1
1
  import type Network from '../../../../src/architecture/network';
2
2
 
3
+ /**
4
+ * Network-visualization contracts for the Flappy Bird browser demo.
5
+ *
6
+ * One of the educational goals of the example is to let people watch evolved
7
+ * controllers as structures, not just as scores. These types describe the
8
+ * lightweight shapes used by the architecture panel so rendering logic can stay
9
+ * decoupled from the full internal network implementation.
10
+ */
11
+
3
12
  /** Draw callback contract for network architecture panel updates. */
4
13
  export interface NetworkVisualizationHandle {
5
14
  renderNetworkArchitecture: (
@@ -9,13 +18,22 @@ export interface NetworkVisualizationHandle {
9
18
  ) => void;
10
19
  }
11
20
 
12
- /** Connection or bias tier used for color mapping ramps. */
21
+ /**
22
+ * Connection or bias tier used for color mapping ramps.
23
+ *
24
+ * Visualization buckets continuous weights into legible color bands so humans
25
+ * can scan sign and magnitude at a glance.
26
+ */
13
27
  export interface ColorTier {
14
28
  upperBound: number;
15
29
  color: string;
16
30
  }
17
31
 
18
- /** Legend row model for network visualization color legends. */
32
+ /**
33
+ * Legend row model for network visualization color legends.
34
+ *
35
+ * Each row labels a numeric interval and the color used to render it.
36
+ */
19
37
  export interface ColorLegendRow {
20
38
  label: string;
21
39
  color: string;
@@ -23,7 +41,12 @@ export interface ColorLegendRow {
23
41
  maximumValue: number;
24
42
  }
25
43
 
26
- /** Precomputed legend panel layout used by visualization renderer. */
44
+ /**
45
+ * Precomputed legend panel layout used by visualization renderer.
46
+ *
47
+ * Layout is resolved up front so the draw path can stay focused on painting,
48
+ * not recomputing geometry every frame.
49
+ */
27
50
  export interface NetworkLegendLayout {
28
51
  compactLegend: boolean;
29
52
  legendLeftPx: number;
@@ -36,7 +59,12 @@ export interface NetworkLegendLayout {
36
59
  legendSectionGapPx: number;
37
60
  }
38
61
 
39
- /** Lightweight connection shape used by network visualization drawing. */
62
+ /**
63
+ * Lightweight connection shape used by network visualization drawing.
64
+ *
65
+ * The renderer only needs connectivity, weight, and enabled state, not the full
66
+ * training-time behavior of a connection object.
67
+ */
40
68
  export interface VisualNetworkConnectionLike {
41
69
  from?: { index?: number };
42
70
  to?: { index?: number };
@@ -44,7 +72,12 @@ export interface VisualNetworkConnectionLike {
44
72
  enabled?: boolean;
45
73
  }
46
74
 
47
- /** Lightweight node shape used by network visualization drawing. */
75
+ /**
76
+ * Lightweight node shape used by network visualization drawing.
77
+ *
78
+ * This shape keeps the renderer independent from the concrete Network class
79
+ * while still exposing the semantic fields that matter visually.
80
+ */
48
81
  export interface VisualNetworkNodeLike {
49
82
  index: number;
50
83
  type: string;
@@ -52,14 +85,24 @@ export interface VisualNetworkNodeLike {
52
85
  layer?: number;
53
86
  }
54
87
 
55
- /** Positioned node instance used by network visualization drawing. */
88
+ /**
89
+ * Positioned node instance used by network visualization drawing.
90
+ *
91
+ * Layout and rendering are split: first a node is assigned screen coordinates,
92
+ * then the renderer paints it.
93
+ */
56
94
  export interface PositionedNetworkNodeLike {
57
95
  node: VisualNetworkNodeLike;
58
96
  xPx: number;
59
97
  yPx: number;
60
98
  }
61
99
 
62
- /** Pixel dimensions used for network-node rectangle rendering. */
100
+ /**
101
+ * Pixel dimensions used for network-node rectangle rendering.
102
+ *
103
+ * Keeping node box dimensions explicit makes legend and topology layout easier
104
+ * to tune without hidden drawing constants.
105
+ */
63
106
  export interface NetworkNodeDimensionsLike {
64
107
  widthPx: number;
65
108
  heightPx: number;