@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,399 +1,12 @@
1
- import Network from '../../../../src/architecture/network';
2
- import { clamp } from './browser-entry.math.utils';
3
- import { resolveNetworkVisualizationColorScales } from './browser-entry.visualization.utils';
4
- import {
5
- drawBiasNodesLayer as drawBiasNodes,
6
- drawNetworkColorLegend,
7
- drawWeightedConnectionsLayer as drawWeightedConnections,
8
- } from './visualization/visualization.draw.service';
9
- import { resolveDefaultNetworkLegendLayout } from './visualization/visualization.legend.utils';
10
- import { resolveNetworkVisualizationLayers } from './visualization/visualization';
11
- import {
12
- FLAPPY_NETWORK_BASELINE_HEIGHT_PX,
13
- FLAPPY_NETWORK_GRAPH_BOTTOM_PADDING_PX,
14
- FLAPPY_NETWORK_GRAPH_INNER_PADDING_PX,
15
- FLAPPY_NETWORK_GRAPH_LEFT_PADDING_PX,
16
- FLAPPY_NETWORK_GRAPH_RIGHT_PADDING_PX,
17
- FLAPPY_NETWORK_GRAPH_TOP_PADDING_PX,
18
- FLAPPY_NETWORK_INPUT_GROUP_LABEL_BAND_GAP_PX,
19
- FLAPPY_NETWORK_INPUT_GROUP_LABEL_BAND_WIDTH_PX,
20
- FLAPPY_NETWORK_INPUT_LAYER_TARGET_GAP_PX,
21
- FLAPPY_NETWORK_LAYER_COMPLEXITY_HEIGHT_STEP_PX,
22
- FLAPPY_NETWORK_LEGEND_GRAPH_GAP_PX,
23
- FLAPPY_NETWORK_MAX_HEIGHT_PX,
24
- FLAPPY_NETWORK_MAX_NODE_HEIGHT_PX,
25
- FLAPPY_NETWORK_MAX_NODE_WIDTH_PX,
26
- FLAPPY_NETWORK_MIN_HEIGHT_PX,
27
- FLAPPY_NETWORK_MIN_INTER_NODE_GAP_PX,
28
- FLAPPY_NETWORK_MIN_LABEL_HEIGHT_PX,
29
- FLAPPY_NETWORK_MIN_NODE_INNER_PADDING_PX,
30
- FLAPPY_NETWORK_MIN_NODE_HEIGHT_LABEL_EXTRA_PX,
31
- FLAPPY_NETWORK_MIN_NODE_WIDTH_PX,
32
- FLAPPY_NETWORK_NODE_DENSITY_HEIGHT_STEP_PX,
33
- FLAPPY_NETWORK_NODE_DENSITY_BASELINE_COUNT,
34
- FLAPPY_NETWORK_NODE_HEIGHT_DENSITY_DIVISOR,
35
- FLAPPY_NETWORK_NODE_HEIGHT_DENSITY_MIN_DENOMINATOR,
36
- FLAPPY_NETWORK_NODE_HEIGHT_LAYER_WIDTH_DIVISOR,
37
- FLAPPY_NETWORK_NODE_HEIGHT_LAYER_WIDTH_MIN_DENOMINATOR,
38
- FLAPPY_NETWORK_NODE_LAYOUT_PADDING_PX,
39
- FLAPPY_NETWORK_NODE_WIDTH_LAYER_WIDTH_DIVISOR,
40
- FLAPPY_NETWORK_NODE_WIDTH_LAYER_WIDTH_MIN_DENOMINATOR,
41
- FLAPPY_NETWORK_NODE_WIDTH_TO_HEIGHT_RATIO,
42
- FLAPPY_NETWORK_TOPOLOGY_HEIGHT_MULTIPLIER,
43
- FLAPPY_UI_NETWORK_CANVAS_BACKGROUND,
44
- FLAPPY_VIEWPORT_NETWORK_OVERLAY_HIDDEN_BREAKPOINT_PX,
45
- FLAPPY_NETWORK_LAYER_COMPLEXITY_BASELINE_COUNT,
46
- } from '../constants/constants';
47
- import type {
48
- NetworkNodeDimensionsLike as NetworkNodeDimensions,
49
- PositionedNetworkNodeLike as PositionedNetworkNode,
50
- VisualNetworkConnectionLike,
51
- VisualNetworkNodeLike,
52
- } from './browser-entry.types';
53
- import {
54
- centerPositionedNodesInDrawableArea,
55
- positionNetworkNodes,
56
- } from './network-view/network-view.layout.utils';
57
- import { drawInputGroupLabelBands } from './network-view/network-view.draw.service';
58
-
59
1
  /**
60
- * Draws a complete, layer-based visualization of the active network.
2
+ * Compatibility facade for browser-entry network-view helpers.
61
3
  *
62
- * @param context - Canvas 2D drawing context.
63
- * @param network - Network to visualize.
64
- * @param inputSize - Input-layer size.
65
- * @param outputSize - Output-layer size.
66
- * @returns Nothing.
4
+ * Legacy imports still use this file while the network-view subsystem is split
5
+ * into smaller topology, layout, label, and drawing modules.
67
6
  */
68
- export function drawNetworkVisualizationInternal(
69
- context: CanvasRenderingContext2D,
70
- network: Network | undefined,
71
- inputSize: number,
72
- outputSize: number,
73
- ): void {
74
- // Step 1: Clear the canvas and paint visualization background.
75
- const canvasWidthPx = context.canvas.width;
76
- const canvasHeightPx = context.canvas.height;
77
- context.clearRect(0, 0, canvasWidthPx, canvasHeightPx);
78
-
79
- context.fillStyle = FLAPPY_UI_NETWORK_CANVAS_BACKGROUND;
80
- context.fillRect(0, 0, canvasWidthPx, canvasHeightPx);
81
-
82
- // Step 2: Resolve architecture label and base graph paddings.
83
- const architectureLabel = resolveNetworkArchitectureLabelInternal(
84
- network,
85
- inputSize,
86
- outputSize,
87
- );
88
-
89
- const groupLabelBandReserveWidthPx =
90
- FLAPPY_NETWORK_INPUT_GROUP_LABEL_BAND_WIDTH_PX +
91
- FLAPPY_NETWORK_INPUT_GROUP_LABEL_BAND_GAP_PX +
92
- FLAPPY_NETWORK_NODE_LAYOUT_PADDING_PX;
93
- const graphLeftPaddingPx =
94
- FLAPPY_NETWORK_GRAPH_LEFT_PADDING_PX + groupLabelBandReserveWidthPx;
95
- const graphTopPaddingPx = FLAPPY_NETWORK_GRAPH_TOP_PADDING_PX;
96
- const graphRightPaddingPx = FLAPPY_NETWORK_GRAPH_RIGHT_PADDING_PX;
97
- const graphBottomPaddingPx = FLAPPY_NETWORK_GRAPH_BOTTOM_PADDING_PX;
98
- const legendGraphGapPx = FLAPPY_NETWORK_LEGEND_GRAPH_GAP_PX;
99
- const viewportWidthPx =
100
- context.canvas.ownerDocument?.defaultView?.innerWidth ?? canvasWidthPx;
101
- const hideNetworkOverlays =
102
- viewportWidthPx < FLAPPY_VIEWPORT_NETWORK_OVERLAY_HIDDEN_BREAKPOINT_PX;
103
- const nodeLayoutPaddingPx = FLAPPY_NETWORK_NODE_LAYOUT_PADDING_PX;
104
- const minimumLabelHeightPx = FLAPPY_NETWORK_MIN_LABEL_HEIGHT_PX;
105
- const minimumNodeHeightPx =
106
- minimumLabelHeightPx + FLAPPY_NETWORK_MIN_NODE_HEIGHT_LABEL_EXTRA_PX;
107
- const minimumNodeWidthPx = FLAPPY_NETWORK_MIN_NODE_WIDTH_PX;
108
- const colorScales = resolveNetworkVisualizationColorScales(network);
109
-
110
- // Step 3: Resolve legend layout and reserve horizontal graph space around it.
111
- let adjustedGraphLeftPaddingPx = graphLeftPaddingPx;
112
- let adjustedGraphRightPaddingPx = graphRightPaddingPx;
113
- if (!hideNetworkOverlays) {
114
- const legendLayout = resolveDefaultNetworkLegendLayout(context, network);
115
- const legendMidpointPx =
116
- legendLayout.legendLeftPx + legendLayout.legendWidthPx * 0.5;
117
- if (legendMidpointPx >= canvasWidthPx * 0.5) {
118
- adjustedGraphRightPaddingPx = Math.max(
119
- graphRightPaddingPx,
120
- canvasWidthPx - legendLayout.legendLeftPx + legendGraphGapPx,
121
- );
122
- } else {
123
- adjustedGraphLeftPaddingPx = Math.max(
124
- graphLeftPaddingPx,
125
- legendLayout.legendLeftPx +
126
- legendLayout.legendWidthPx +
127
- legendGraphGapPx,
128
- );
129
- }
130
- }
131
-
132
- // Step 4: Resolve drawable graph bounds.
133
- const drawableWidthPx = Math.max(
134
- 1,
135
- canvasWidthPx - adjustedGraphLeftPaddingPx - adjustedGraphRightPaddingPx,
136
- );
137
- const drawableHeightPx = Math.max(
138
- 1,
139
- canvasHeightPx - graphTopPaddingPx - graphBottomPaddingPx,
140
- );
141
-
142
- // Step 5: Resolve network layers and dynamic node dimensions.
143
- const networkLayers = resolveNetworkVisualizationLayers(
144
- network,
145
- inputSize,
146
- outputSize,
147
- );
148
- const maxLayerNodeCount = Math.max(
149
- 1,
150
- ...networkLayers.map((layerNodes) => layerNodes.length),
151
- );
152
- const layerCount = Math.max(1, networkLayers.length);
153
- const availableNodeStackHeightPx = Math.max(
154
- 1,
155
- drawableHeightPx - nodeLayoutPaddingPx * 2,
156
- );
157
- const strictMaximumNodeHeightByFitPx = Math.max(
158
- 4,
159
- availableNodeStackHeightPx / maxLayerNodeCount,
160
- );
161
- const effectiveMinimumNodeHeightPx = Math.min(
162
- minimumNodeHeightPx,
163
- strictMaximumNodeHeightByFitPx,
164
- );
165
- const nodeHeightPx = Math.max(
166
- effectiveMinimumNodeHeightPx,
167
- Math.min(
168
- FLAPPY_NETWORK_MAX_NODE_HEIGHT_PX,
169
- (drawableHeightPx - nodeLayoutPaddingPx * 2) /
170
- Math.max(
171
- FLAPPY_NETWORK_NODE_HEIGHT_DENSITY_MIN_DENOMINATOR,
172
- maxLayerNodeCount * FLAPPY_NETWORK_NODE_HEIGHT_DENSITY_DIVISOR,
173
- ),
174
- drawableWidthPx /
175
- Math.max(
176
- FLAPPY_NETWORK_NODE_HEIGHT_LAYER_WIDTH_MIN_DENOMINATOR,
177
- layerCount * FLAPPY_NETWORK_NODE_HEIGHT_LAYER_WIDTH_DIVISOR,
178
- ),
179
- strictMaximumNodeHeightByFitPx,
180
- ),
181
- );
182
- const nodeWidthPx = Math.max(
183
- minimumNodeWidthPx,
184
- Math.min(
185
- FLAPPY_NETWORK_MAX_NODE_WIDTH_PX,
186
- nodeHeightPx * FLAPPY_NETWORK_NODE_WIDTH_TO_HEIGHT_RATIO,
187
- drawableWidthPx /
188
- Math.max(
189
- FLAPPY_NETWORK_NODE_WIDTH_LAYER_WIDTH_MIN_DENOMINATOR,
190
- layerCount * FLAPPY_NETWORK_NODE_WIDTH_LAYER_WIDTH_DIVISOR,
191
- ),
192
- ),
193
- );
194
- const nodeDimensions: NetworkNodeDimensions = {
195
- widthPx: nodeWidthPx,
196
- heightPx: nodeHeightPx,
197
- };
198
-
199
- // Step 6: Position nodes and build node-index lookup map.
200
- const positionedNodes = positionNetworkNodes(
201
- networkLayers,
202
- adjustedGraphLeftPaddingPx,
203
- graphTopPaddingPx,
204
- drawableWidthPx,
205
- drawableHeightPx,
206
- nodeLayoutPaddingPx,
207
- nodeDimensions,
208
- );
209
- const centeredPositionedNodes = centerPositionedNodesInDrawableArea(
210
- positionedNodes,
211
- adjustedGraphLeftPaddingPx,
212
- graphTopPaddingPx,
213
- drawableWidthPx,
214
- drawableHeightPx,
215
- nodeLayoutPaddingPx,
216
- nodeDimensions,
217
- );
218
- const positionByNodeIndex = new Map<number, PositionedNetworkNode>(
219
- centeredPositionedNodes.map((positionedNode) => [
220
- positionedNode.node.index,
221
- positionedNode,
222
- ]),
223
- );
224
-
225
- const runtimeConnections =
226
- ((network?.connections ?? []) as VisualNetworkConnectionLike[]) ?? [];
227
-
228
- // Step 7: Draw connections, nodes, and legend (with architecture text above it).
229
- drawWeightedConnections(
230
- context,
231
- runtimeConnections,
232
- positionByNodeIndex,
233
- colorScales.connectionScale,
234
- );
235
- if (!hideNetworkOverlays) {
236
- drawInputGroupLabelBands(context, centeredPositionedNodes, nodeDimensions);
237
- }
238
- drawBiasNodes(
239
- context,
240
- centeredPositionedNodes,
241
- nodeDimensions,
242
- colorScales.biasScale,
243
- );
244
- drawNetworkColorLegend(context, architectureLabel, colorScales);
245
- }
246
-
247
- /**
248
- * Resolves the recommended network visualization host height.
249
- *
250
- * @param network - Network to visualize.
251
- * @param inputSize - Input-layer size.
252
- * @param outputSize - Output-layer size.
253
- * @returns Recommended height in pixels.
254
- */
255
- export function resolveNetworkVisualizationHeightPxInternal(
256
- network: Network | undefined,
257
- inputSize: number,
258
- outputSize: number,
259
- ): number {
260
- // Step 1: Resolve readability baselines and graph paddings.
261
- const minimumLabelHeightPx = FLAPPY_NETWORK_MIN_LABEL_HEIGHT_PX;
262
- const minimumNodeInnerPaddingPx = FLAPPY_NETWORK_MIN_NODE_INNER_PADDING_PX;
263
- const minimumInterNodeGapPx = FLAPPY_NETWORK_MIN_INTER_NODE_GAP_PX;
264
- const minimumNodeSidePx =
265
- minimumLabelHeightPx + minimumNodeInnerPaddingPx * 2;
266
- const graphTopPaddingPx = FLAPPY_NETWORK_GRAPH_TOP_PADDING_PX;
267
- const graphBottomPaddingPx = FLAPPY_NETWORK_GRAPH_BOTTOM_PADDING_PX;
268
- const graphInnerPaddingPx = FLAPPY_NETWORK_GRAPH_INNER_PADDING_PX;
269
- const layers = resolveNetworkVisualizationLayers(
270
- network,
271
- inputSize,
272
- outputSize,
273
- );
274
- const layerCount = Math.max(1, layers.length);
275
- const maxLayerNodeCount = Math.max(
276
- 1,
277
- ...layers.map((layerNodes) => layerNodes.length),
278
- );
279
-
280
- // Step 2: Compute topology-driven minimum readable height.
281
- const minimumReadableStackHeightPx =
282
- maxLayerNodeCount <= 1
283
- ? minimumNodeSidePx
284
- : maxLayerNodeCount * minimumNodeSidePx +
285
- (maxLayerNodeCount - 1) * minimumInterNodeGapPx;
286
- const topologyDrivenHeightPx =
287
- graphTopPaddingPx +
288
- graphBottomPaddingPx +
289
- graphInnerPaddingPx +
290
- minimumReadableStackHeightPx;
291
-
292
- // Step 3: Add complexity-based height adjustments and choose the max.
293
- const baselineHeightPx = FLAPPY_NETWORK_BASELINE_HEIGHT_PX;
294
- const nodeDensityHeightPx =
295
- Math.max(
296
- 0,
297
- maxLayerNodeCount - FLAPPY_NETWORK_NODE_DENSITY_BASELINE_COUNT,
298
- ) * FLAPPY_NETWORK_NODE_DENSITY_HEIGHT_STEP_PX;
299
- const layerComplexityHeightPx =
300
- Math.max(0, layerCount - FLAPPY_NETWORK_LAYER_COMPLEXITY_BASELINE_COUNT) *
301
- FLAPPY_NETWORK_LAYER_COMPLEXITY_HEIGHT_STEP_PX;
302
- const recommendedHeightPx = Math.max(
303
- Math.ceil(
304
- topologyDrivenHeightPx * FLAPPY_NETWORK_TOPOLOGY_HEIGHT_MULTIPLIER,
305
- ),
306
- baselineHeightPx + nodeDensityHeightPx + layerComplexityHeightPx,
307
- );
308
-
309
- // Step 4: Clamp final height to configured min/max bounds.
310
- return Math.floor(
311
- clamp(
312
- recommendedHeightPx,
313
- FLAPPY_NETWORK_MIN_HEIGHT_PX,
314
- FLAPPY_NETWORK_MAX_HEIGHT_PX,
315
- ),
316
- );
317
- }
318
-
319
- /**
320
- * Produces a concise neural-network architecture label.
321
- *
322
- * @param network - Network to describe.
323
- * @param inputSize - Configured input size.
324
- * @param outputSize - Configured output size.
325
- * @returns Readable architecture label.
326
- */
327
- export function resolveNetworkArchitectureLabelInternal(
328
- network: Network | undefined,
329
- inputSize: number,
330
- outputSize: number,
331
- ): string {
332
- if (!network) {
333
- return formatArchitectureLabel(
334
- inputSize,
335
- '-',
336
- outputSize,
337
- inputSize + outputSize,
338
- 0,
339
- );
340
- }
341
-
342
- const architectureDescriptor = network.describeArchitecture();
343
- const hiddenLayersLabel = resolveHiddenLayersLabel(
344
- architectureDescriptor.hiddenLayerSizes,
345
- architectureDescriptor.source,
346
- );
347
-
348
- return formatArchitectureLabel(
349
- inputSize,
350
- hiddenLayersLabel,
351
- outputSize,
352
- architectureDescriptor.totalNodes,
353
- architectureDescriptor.totalConnections,
354
- );
355
- }
356
-
357
- /**
358
- * Formats architecture label text.
359
- *
360
- * @param architectureInputSize - Input-layer size.
361
- * @param hiddenLayersLabel - Hidden-layer section.
362
- * @param architectureOutputSize - Output-layer size.
363
- * @param totalNodeCount - Total node count.
364
- * @param totalConnectionCount - Total connection count.
365
- * @returns Formatted label.
366
- */
367
- function formatArchitectureLabel(
368
- architectureInputSize: number,
369
- hiddenLayersLabel: string,
370
- architectureOutputSize: number,
371
- totalNodeCount: number,
372
- totalConnectionCount: number,
373
- ): string {
374
- return `${architectureInputSize} | ${hiddenLayersLabel} | ${architectureOutputSize}\n(${totalNodeCount} nodes, ${totalConnectionCount} connections)`;
375
- }
376
-
377
- /**
378
- * Formats hidden-layer section by descriptor source.
379
- *
380
- * @param hiddenLayerSizes - Hidden-layer widths.
381
- * @param architectureSource - Descriptor provenance.
382
- * @returns Hidden-layer label section.
383
- */
384
- function resolveHiddenLayersLabel(
385
- hiddenLayerSizes: number[],
386
- architectureSource: 'layer-metadata' | 'graph-topology' | 'inferred',
387
- ): string {
388
- if (hiddenLayerSizes.length === 0) {
389
- return '-';
390
- }
391
-
392
- if (architectureSource === 'inferred') {
393
- return hiddenLayerSizes
394
- .map((hiddenLayerSize) => `~${hiddenLayerSize}`)
395
- .join(' - ');
396
- }
397
-
398
- return hiddenLayerSizes.join(' - ');
399
- }
7
+ export {
8
+ drawNetworkVisualization as drawNetworkVisualizationInternal,
9
+ resolveNetworkArchitectureLabel as resolveNetworkArchitectureLabelInternal,
10
+ resolveNetworkVisualizationHeightPx as resolveNetworkVisualizationHeightPxInternal,
11
+ } from './network-view/network-view';
12
+ export { resolveNetworkVisualizationLayers } from './network-view/network-view.topology.utils';