@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.
- package/.github/agents/boundary-mapper.agent.md +31 -0
- package/.github/agents/docs-scout.agent.md +29 -0
- package/.github/agents/plan-scout.agent.md +31 -0
- package/.github/agents/solid-split.agent.md +143 -0
- package/.github/copilot-instructions.md +119 -0
- package/.github/skills/solid-split-playbook/SKILL.md +220 -0
- package/.github/skills/solid-split-playbook/assets/docs-checklist.md +34 -0
- package/.github/skills/solid-split-playbook/assets/split-plan-template.md +48 -0
- package/.github/skills/solid-split-playbook/assets/split-workflow-checklist.md +51 -0
- package/.github/skills/trace-analyzer-extension/SKILL.md +63 -0
- package/.github/skills/trace-analyzer-extension/assets/extension-checklist.md +24 -0
- package/.github/skills/trace-analyzer-extension/references/analyzer-extension-workflow.md +101 -0
- package/.github/skills/trace-audit-reporting/SKILL.md +96 -0
- package/.github/skills/trace-audit-reporting/assets/performance-report-template.md +123 -0
- package/.github/skills/trace-audit-reporting/references/trace-analysis-workflow.md +132 -0
- package/package.json +7 -3
- package/plans/ES2023 migration +13 -8
- package/plans/Evolution_Training_Interoperability_Contracts.md +1 -1
- package/plans/Flappy_Bird_Folder_Documentation_Pass.md +53 -0
- package/plans/Flappy_Evolution_Worker_Documentation_Pass.md +58 -0
- package/plans/Interactive_Examples_and_Learning_Path.md +10 -2
- package/plans/Memory_Optimization.md +3 -3
- package/plans/README.md +63 -0
- package/plans/Roadmap.md +15 -3
- package/plans/asciiMaze_SOLID_split.done.md +130 -0
- package/plans/flappy_bird_SOLID_split.done.md +67 -0
- package/scripts/analyze-trace.ts +590 -0
- package/scripts/assets/theme.css +221 -34
- package/scripts/copy-examples.mjs +9 -5
- package/scripts/export-onnx.mjs +3 -3
- package/scripts/generate-bench-tables.mjs +10 -10
- package/scripts/generate-bench-tables.ts +10 -10
- package/scripts/generate-docs.ts +1415 -449
- package/scripts/render-docs-html.ts +15 -8
- package/src/README.md +127 -222
- package/src/architecture/README.md +117 -184
- package/src/architecture/architect.ts +6 -0
- package/src/architecture/layer/README.md +38 -38
- package/src/architecture/network/README.md +49 -31
- package/src/architecture/network/activate/README.md +77 -77
- package/src/architecture/network/connect/README.md +15 -13
- package/src/architecture/network/deterministic/README.md +7 -7
- package/src/architecture/network/evolve/README.md +44 -44
- package/src/architecture/network/gating/README.md +20 -20
- package/src/architecture/network/genetic/README.md +51 -51
- package/src/architecture/network/mutate/README.md +97 -97
- package/src/architecture/network/network.types.ts +39 -0
- package/src/architecture/network/onnx/README.md +264 -264
- package/src/architecture/network/prune/README.md +39 -39
- package/src/architecture/network/remove/README.md +26 -26
- package/src/architecture/network/serialize/README.md +56 -56
- package/src/architecture/network/serialize/network.serialize.json.utils.ts +1 -0
- package/src/architecture/network/serialize/network.serialize.utils.ts +6 -1
- package/src/architecture/network/serialize/network.serialize.utils.types.ts +1 -1
- package/src/architecture/network/slab/README.md +61 -61
- package/src/architecture/network/standalone/README.md +24 -24
- package/src/architecture/network/stats/README.md +9 -9
- package/src/architecture/network/topology/README.md +46 -46
- package/src/architecture/network/training/README.md +21 -21
- package/src/architecture/network.ts +114 -10
- package/src/methods/README.md +9 -87
- package/src/multithreading/README.md +8 -77
- package/src/multithreading/workers/README.md +2 -2
- package/src/multithreading/workers/browser/README.md +0 -6
- package/src/multithreading/workers/node/README.md +0 -3
- package/src/neat/README.md +623 -568
- package/src/neat/neat.evolve.population.utils.ts +29 -5
- package/src/neat/neat.helpers.ts +16 -0
- package/src/neat/neat.topology-intent.utils.ts +160 -0
- package/src/utils/README.md +18 -18
- package/test/examples/asciiMaze/README.md +59 -59
- package/test/examples/asciiMaze/asciiMaze.e2e.test.ts +14 -9
- package/test/examples/asciiMaze/browser-entry/README.md +196 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.abort.services.ts +95 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.constants.ts +23 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.curriculum.services.ts +115 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.globals.services.ts +106 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.host.services.ts +157 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.services.ts +14 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.ts +129 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.types.ts +120 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.utils.ts +98 -0
- package/test/examples/asciiMaze/browser-entry.ts +10 -576
- package/test/examples/asciiMaze/dashboardManager/README.md +276 -0
- package/test/examples/asciiMaze/dashboardManager/archive/README.md +16 -0
- package/test/examples/asciiMaze/dashboardManager/archive/dashboardManager.archive.services.ts +267 -0
- package/test/examples/asciiMaze/dashboardManager/dashboardManager.constants.ts +35 -0
- package/test/examples/asciiMaze/dashboardManager/dashboardManager.services.ts +103 -0
- package/test/examples/asciiMaze/dashboardManager/dashboardManager.ts +181 -0
- package/test/examples/asciiMaze/dashboardManager/dashboardManager.types.ts +267 -0
- package/test/examples/asciiMaze/dashboardManager/dashboardManager.utils.ts +254 -0
- package/test/examples/asciiMaze/dashboardManager/live/README.md +14 -0
- package/test/examples/asciiMaze/dashboardManager/live/dashboardManager.live.services.ts +264 -0
- package/test/examples/asciiMaze/dashboardManager/telemetry/README.md +47 -0
- package/test/examples/asciiMaze/dashboardManager/telemetry/dashboardManager.telemetry.services.ts +513 -0
- package/test/examples/asciiMaze/dashboardManager.ts +13 -2335
- package/test/examples/asciiMaze/evolutionEngine/README.md +1058 -0
- package/test/examples/asciiMaze/evolutionEngine/curriculumPhase.ts +90 -0
- package/test/examples/asciiMaze/evolutionEngine/engineState.constants.ts +36 -0
- package/test/examples/asciiMaze/evolutionEngine/engineState.ts +58 -513
- package/test/examples/asciiMaze/evolutionEngine/engineState.types.ts +212 -0
- package/test/examples/asciiMaze/evolutionEngine/engineState.utils.ts +301 -0
- package/test/examples/asciiMaze/evolutionEngine/evolutionEngine.types.ts +445 -0
- package/test/examples/asciiMaze/evolutionEngine/evolutionLoop.ts +81 -50
- package/test/examples/asciiMaze/evolutionEngine/optionsAndSetup.ts +2 -4
- package/test/examples/asciiMaze/evolutionEngine/populationDynamics.ts +17 -33
- package/test/examples/asciiMaze/evolutionEngine/populationPruning.ts +1 -1
- package/test/examples/asciiMaze/evolutionEngine/rngAndTiming.ts +1 -2
- package/test/examples/asciiMaze/evolutionEngine/sampling.ts +1 -1
- package/test/examples/asciiMaze/evolutionEngine/scratchPools.ts +2 -5
- package/test/examples/asciiMaze/evolutionEngine/setupHelpers.ts +30 -37
- package/test/examples/asciiMaze/evolutionEngine/telemetryMetrics.ts +16 -58
- package/test/examples/asciiMaze/evolutionEngine/trainingWarmStart.ts +2 -2
- package/test/examples/asciiMaze/evolutionEngine.ts +55 -55
- package/test/examples/asciiMaze/fitness.ts +2 -2
- package/test/examples/asciiMaze/fitness.types.ts +65 -0
- package/test/examples/asciiMaze/interfaces.ts +64 -1352
- package/test/examples/asciiMaze/mazeMovement/README.md +356 -0
- package/test/examples/asciiMaze/mazeMovement/finalization/README.md +49 -0
- package/test/examples/asciiMaze/mazeMovement/finalization/mazeMovement.finalization.ts +138 -0
- package/test/examples/asciiMaze/mazeMovement/mazeMovement.constants.ts +101 -0
- package/test/examples/asciiMaze/mazeMovement/mazeMovement.services.ts +230 -0
- package/test/examples/asciiMaze/mazeMovement/mazeMovement.ts +299 -0
- package/test/examples/asciiMaze/mazeMovement/mazeMovement.types.ts +185 -0
- package/test/examples/asciiMaze/mazeMovement/mazeMovement.utils.ts +153 -0
- package/test/examples/asciiMaze/mazeMovement/policy/README.md +91 -0
- package/test/examples/asciiMaze/mazeMovement/policy/mazeMovement.policy.ts +467 -0
- package/test/examples/asciiMaze/mazeMovement/runtime/README.md +95 -0
- package/test/examples/asciiMaze/mazeMovement/runtime/mazeMovement.runtime.ts +354 -0
- package/test/examples/asciiMaze/mazeMovement/shaping/README.md +124 -0
- package/test/examples/asciiMaze/mazeMovement/shaping/mazeMovement.shaping.ts +459 -0
- package/test/examples/asciiMaze/mazeMovement.ts +12 -2978
- package/test/examples/flappy_bird/README.md +193 -88
- package/test/examples/flappy_bird/browser-entry/README.md +1441 -0
- package/test/examples/flappy_bird/browser-entry/browser-entry.host.utils.ts +4 -324
- package/test/examples/flappy_bird/browser-entry/browser-entry.network-view.utils.ts +9 -396
- package/test/examples/flappy_bird/browser-entry/browser-entry.playback.utils.ts +6 -714
- package/test/examples/flappy_bird/browser-entry/browser-entry.render.types.ts +26 -3
- package/test/examples/flappy_bird/browser-entry/browser-entry.runtime.types.ts +16 -1
- package/test/examples/flappy_bird/browser-entry/browser-entry.simulation.types.ts +39 -5
- package/test/examples/flappy_bird/browser-entry/browser-entry.spawn.utils.ts +11 -31
- package/test/examples/flappy_bird/browser-entry/browser-entry.stats.types.ts +32 -4
- package/test/examples/flappy_bird/browser-entry/browser-entry.ts +11 -0
- package/test/examples/flappy_bird/browser-entry/browser-entry.types.ts +8 -0
- package/test/examples/flappy_bird/browser-entry/browser-entry.visualization.types.ts +50 -7
- package/test/examples/flappy_bird/browser-entry/browser-entry.visualization.utils.ts +21 -893
- package/test/examples/flappy_bird/browser-entry/browser-entry.worker.types.ts +91 -10
- package/test/examples/flappy_bird/browser-entry/host/README.md +318 -0
- package/test/examples/flappy_bird/browser-entry/host/host.canvas.service.ts +16 -0
- package/test/examples/flappy_bird/browser-entry/host/host.constants.ts +20 -0
- package/test/examples/flappy_bird/browser-entry/host/host.dom.service.ts +10 -0
- package/test/examples/flappy_bird/browser-entry/host/host.resize.service.ts +1 -295
- package/test/examples/flappy_bird/browser-entry/host/host.stats.service.ts +14 -0
- package/test/examples/flappy_bird/browser-entry/host/host.ts +592 -6
- package/test/examples/flappy_bird/browser-entry/host/host.types.ts +13 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/README.md +309 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.constants.ts +47 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.services.ts +392 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.ts +132 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.types.ts +92 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.utils.ts +272 -0
- package/test/examples/flappy_bird/browser-entry/network-view/README.md +389 -0
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.draw.service.ts +13 -0
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.labels.utils.ts +12 -0
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.layout.utils.ts +14 -0
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.topology.utils.ts +267 -0
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.ts +823 -7
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.types.ts +11 -0
- package/test/examples/flappy_bird/browser-entry/playback/README.md +845 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/README.md +355 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/README.md +1068 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.batch.services.ts +64 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.cache.services.ts +207 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.constants.ts +197 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.batch.utils.ts +114 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.layout.utils.test.ts +96 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.layout.utils.ts +204 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.services.ts +49 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.utils.ts +313 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.layer.services.ts +81 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils.test.ts +33 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils.ts +201 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.selection.utils.ts +171 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.timing.utils.ts +124 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.utils.test.ts +279 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.utils.ts +132 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.scene.services.ts +26 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.services.ts +65 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.ts +48 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types.ts +342 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.utils.ts +10 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.cache.services.ts +96 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.constants.ts +127 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.draw.services.ts +184 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.scene.services.ts +64 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.services.ts +6 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.ts +53 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.types.ts +105 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.utils.ts +100 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/README.md +541 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.bird.utils.ts +180 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.canvas.services.ts +77 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.entity.services.ts +167 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.scene.services.ts +57 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.service.test.ts +176 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.service.ts +113 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.services.ts +35 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.trail.utils.ts +248 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.types.ts +103 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.utils.ts +11 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.constants.ts +1 -1
- package/test/examples/flappy_bird/browser-entry/playback/playback.frame-render.service.ts +10 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.iteration.services.ts +192 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.loop.service.ts +12 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.orchestration.types.ts +78 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.render.pipe-outline.service.ts +128 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.render.service.ts +1 -116
- package/test/examples/flappy_bird/browser-entry/playback/playback.session.services.ts +184 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.snapshot.utils.test.ts +121 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.snapshot.utils.ts +8 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.layer.services.ts +36 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.service.ts +11 -128
- package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.services.ts +268 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.types.ts +91 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.utils.ts +11 -4
- package/test/examples/flappy_bird/browser-entry/playback/playback.trail.utils.ts +9 -86
- package/test/examples/flappy_bird/browser-entry/playback/playback.ts +75 -7
- package/test/examples/flappy_bird/browser-entry/playback/playback.types.ts +12 -9
- package/test/examples/flappy_bird/browser-entry/playback/playback.worker-channel.utils.ts +11 -123
- package/test/examples/flappy_bird/browser-entry/playback/snapshot/README.md +55 -0
- package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.services.ts +103 -0
- package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.summary.utils.test.ts +45 -0
- package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.summary.utils.ts +28 -0
- package/test/examples/flappy_bird/browser-entry/playback/trail/README.md +95 -0
- package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.history.services.test.ts +35 -0
- package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.history.services.ts +64 -0
- package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.opacity.utils.test.ts +37 -0
- package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.opacity.utils.ts +74 -0
- package/test/examples/flappy_bird/browser-entry/playback/worker-channel/README.md +71 -0
- package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.request.services.ts +45 -0
- package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.summary.services.ts +74 -0
- package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.types.ts +53 -0
- package/test/examples/flappy_bird/browser-entry/runtime/README.md +304 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.browser-globals.service.ts +15 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.errors.ts +17 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.evolution-launch.service.ts +56 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.evolution-loop.service.ts +19 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.lifecycle.service.ts +96 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.startup.service.ts +92 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.telemetry.service.ts +24 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.ts +31 -121
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.types.ts +65 -0
- package/test/examples/flappy_bird/browser-entry/visualization/README.md +568 -0
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.colors.utils.ts +26 -0
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.constants.ts +110 -0
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.draw.service.ts +979 -19
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.legend.utils.ts +157 -3
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.topology.utils.ts +13 -27
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.ts +7 -20
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.types.ts +14 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/README.md +238 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.errors.ts +11 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.generation.service.ts +12 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.playback.service.test.ts +143 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.playback.service.ts +140 -14
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.request.service.ts +27 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.ts +8 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.types.ts +23 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.url.service.ts +5 -0
- package/test/examples/flappy_bird/constants/README.md +1163 -0
- package/test/examples/flappy_bird/constants/constants.birds.ts +16 -38
- package/test/examples/flappy_bird/constants/constants.difficulty.ts +21 -0
- package/test/examples/flappy_bird/constants/constants.network-view.ts +24 -0
- package/test/examples/flappy_bird/constants/constants.network.ts +1 -1
- package/test/examples/flappy_bird/constants/constants.observation.ts +7 -0
- package/test/examples/flappy_bird/constants/constants.palette.ts +9 -2
- package/test/examples/flappy_bird/constants/constants.physics.ts +9 -0
- package/test/examples/flappy_bird/constants/constants.pipe-render.ts +3 -0
- package/test/examples/flappy_bird/constants/constants.pipes.ts +22 -3
- package/test/examples/flappy_bird/constants/constants.runtime.ts +28 -4
- package/test/examples/flappy_bird/constants/constants.starfield.ts +78 -3
- package/test/examples/flappy_bird/constants/constants.ts +6 -0
- package/test/examples/flappy_bird/environment/README.md +182 -0
- package/test/examples/flappy_bird/environment/environment.collision.utils.ts +7 -0
- package/test/examples/flappy_bird/environment/environment.constants.ts +16 -3
- package/test/examples/flappy_bird/environment/environment.observation.utils.ts +12 -19
- package/test/examples/flappy_bird/environment/environment.state.service.ts +10 -0
- package/test/examples/flappy_bird/environment/environment.step.service.ts +15 -66
- package/test/examples/flappy_bird/environment/environment.types.ts +14 -0
- package/test/examples/flappy_bird/evaluation/README.md +155 -0
- package/test/examples/flappy_bird/evaluation/evaluation.constants.ts +23 -4
- package/test/examples/flappy_bird/evaluation/evaluation.fitness.utils.ts +16 -1
- package/test/examples/flappy_bird/evaluation/evaluation.rollout.service.ts +7 -374
- package/test/examples/flappy_bird/evaluation/evaluation.seed.utils.ts +4 -0
- package/test/examples/flappy_bird/evaluation/evaluation.types.ts +18 -2
- package/test/examples/flappy_bird/evaluation/rollout/README.md +355 -0
- package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.constants.ts +38 -0
- package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.service.ts +71 -0
- package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.services.ts +338 -0
- package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.types.ts +69 -0
- package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.utils.ts +399 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/README.md +845 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.constants.ts +49 -7
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.errors.ts +34 -3
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.evolution.service.ts +22 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.playback.service.ts +62 -26
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.protocol.service.ts +27 -1
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.runtime.service.ts +23 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.frame.service.ts +378 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.types.ts +22 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.utils.ts +20 -203
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.snapshot.utils.test.ts +94 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.snapshot.utils.ts +78 -13
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.ts +235 -344
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.types.ts +170 -22
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.warm-start.service.ts +314 -0
- package/test/examples/flappy_bird/flappy.simulation.shared.utils.ts +17 -0
- package/test/examples/flappy_bird/flappyEnvironment.ts +21 -0
- package/test/examples/flappy_bird/flappyEvaluation.ts +12 -0
- package/test/examples/flappy_bird/flappyEvolution.worker.ts +7 -0
- package/test/examples/flappy_bird/index.ts +8 -2
- package/test/examples/flappy_bird/rng.ts +10 -0
- package/test/examples/flappy_bird/simulation-shared/README.md +518 -0
- package/test/examples/flappy_bird/simulation-shared/observation/README.md +255 -0
- package/test/examples/flappy_bird/simulation-shared/observation/observation.features.utils.ts +339 -0
- package/test/examples/flappy_bird/simulation-shared/observation/observation.ts +19 -0
- package/test/examples/flappy_bird/simulation-shared/observation/observation.vector.utils.ts +81 -0
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.constants.ts +3 -0
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.control.utils.ts +6 -0
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.difficulty.utils.ts +9 -0
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.errors.ts +10 -1
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.memory.utils.ts +18 -0
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.observation.utils.ts +7 -402
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.spawn.utils.ts +36 -6
- package/test/examples/flappy_bird/{evaluation/evaluation.statistics.utils.ts → simulation-shared/simulation-shared.statistics.utils.ts} +30 -9
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.types.ts +38 -5
- package/test/examples/flappy_bird/trainFlappyBird.ts +13 -0
- package/test/examples/flappy_bird/trainer/README.md +676 -0
- package/test/examples/flappy_bird/trainer/evaluation/README.md +253 -0
- package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.constants.ts +15 -0
- package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.services.ts +86 -0
- package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.ts +187 -0
- package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.types.ts +32 -0
- package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.utils.ts +182 -0
- package/test/examples/flappy_bird/trainer/trainer.evaluation.service.ts +13 -0
- package/test/examples/flappy_bird/trainer/trainer.fitness.service.ts +23 -1
- package/test/examples/flappy_bird/trainer/trainer.loop.service.ts +17 -1
- package/test/examples/flappy_bird/trainer/trainer.report.service.services.ts +181 -0
- package/test/examples/flappy_bird/trainer/trainer.report.service.ts +136 -0
- package/test/examples/flappy_bird/trainer/trainer.selection.utils.ts +89 -0
- package/test/examples/flappy_bird/trainer/trainer.setup.service.ts +22 -0
- package/test/examples/flappy_bird/trainer/trainer.signals.service.ts +8 -0
- package/test/examples/flappy_bird/trainer/trainer.ts +38 -553
- package/test/examples/flappy_bird/trainer/trainer.types.ts +44 -7
- package/test/neat/neat.topology-intent.test.ts +129 -0
- package/test/network/network.topology-intent.test.ts +44 -0
- package/test/examples/flappy_bird/browser-entry/browser-entry.utils.ts +0 -12
- package/test/examples/flappy_bird/environment/environment.ts +0 -7
- package/test/examples/flappy_bird/evaluation/evaluation.ts +0 -7
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.ts +0 -15
- package/test/examples/flappy_bird/trainer/trainer.statistics.utils.ts +0 -78
package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.constants.ts
CHANGED
|
@@ -1,20 +1,62 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Synthetic sample count used for generation-0 warm-start pretraining.
|
|
3
|
+
*
|
|
4
|
+
* Educational note:
|
|
5
|
+
* The warm-start service briefly trains a template network on a heuristic
|
|
6
|
+
* teacher before the first NEAT generation is evolved. This value controls how
|
|
7
|
+
* many synthetic state/action examples are generated for that bootstrap pass.
|
|
8
|
+
* Larger values usually make the teacher signal more stable, but they also
|
|
9
|
+
* increase startup latency inside the worker.
|
|
10
|
+
*/
|
|
2
11
|
export const FLAPPY_WORKER_GEN0_PRETRAIN_SAMPLE_COUNT = 512;
|
|
3
12
|
|
|
4
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Visible world width used when generating synthetic warm-start samples.
|
|
15
|
+
*
|
|
16
|
+
* This should roughly match the browser playback framing so the generated
|
|
17
|
+
* observation vectors look like the states the policy will later see during
|
|
18
|
+
* real worker playback.
|
|
19
|
+
*/
|
|
5
20
|
export const FLAPPY_WORKER_GEN0_PRETRAIN_VISIBLE_WORLD_WIDTH_PX = 720;
|
|
6
21
|
|
|
7
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Optimizer iteration budget for generation-0 warm-start pretraining.
|
|
24
|
+
*
|
|
25
|
+
* The goal is not to fully solve Flappy Bird with supervised learning. The
|
|
26
|
+
* worker only needs a short nudge away from completely random action logits so
|
|
27
|
+
* the first browser-visible generation looks less chaotic.
|
|
28
|
+
*/
|
|
8
29
|
export const FLAPPY_WORKER_GEN0_PRETRAIN_ITERATIONS = 60;
|
|
9
30
|
|
|
10
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Batch size for generation-0 warm-start pretraining.
|
|
33
|
+
*
|
|
34
|
+
* Smaller batches inject a bit more stochasticity into the bootstrap fit,
|
|
35
|
+
* while still keeping the pass cheap enough for a browser worker.
|
|
36
|
+
*/
|
|
11
37
|
export const FLAPPY_WORKER_GEN0_PRETRAIN_BATCH_SIZE = 32;
|
|
12
38
|
|
|
13
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Learning rate for generation-0 warm-start pretraining.
|
|
41
|
+
*
|
|
42
|
+
* This is intentionally moderate: the template network should learn a simple
|
|
43
|
+
* corridor-following prior without overfitting the heuristic teacher.
|
|
44
|
+
*/
|
|
14
45
|
export const FLAPPY_WORKER_GEN0_PRETRAIN_RATE = 0.02;
|
|
15
46
|
|
|
16
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Gaussian standard deviation used for post-pretrain connection-weight diversification.
|
|
49
|
+
*
|
|
50
|
+
* After the template network is trained once, each genome receives a noisy copy
|
|
51
|
+
* of its weights. That keeps generation 0 visually coherent while preserving
|
|
52
|
+
* enough diversity for NEAT to search meaningfully.
|
|
53
|
+
*/
|
|
17
54
|
export const FLAPPY_WORKER_GEN0_PRETRAIN_WEIGHT_NOISE_STDDEV = 0.08;
|
|
18
55
|
|
|
19
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Gaussian standard deviation used for post-pretrain node-bias diversification.
|
|
58
|
+
*
|
|
59
|
+
* Bias noise is slightly smaller than weight noise so the warm-start remains a
|
|
60
|
+
* prior, not a rigid clone of the teacher-fitted template.
|
|
61
|
+
*/
|
|
20
62
|
export const FLAPPY_WORKER_GEN0_PRETRAIN_BIAS_NOISE_STDDEV = 0.03;
|
|
@@ -1,20 +1,40 @@
|
|
|
1
1
|
import type { WorkerErrorMessage } from './flappy-evolution-worker.types';
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Worker error emitted when runtime initialization fails unexpectedly.
|
|
5
|
+
*
|
|
6
|
+
* This message is intentionally stable so the browser host can show a readable
|
|
7
|
+
* error without leaking internal exception shapes into the UI contract.
|
|
8
|
+
*/
|
|
4
9
|
export const FLAPPY_WORKER_INIT_FAILED_ERROR_MESSAGE =
|
|
5
10
|
'Failed to initialize Flappy evolution worker runtime.';
|
|
6
11
|
|
|
7
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Worker error emitted when playback start is requested before evolution output exists.
|
|
14
|
+
*
|
|
15
|
+
* Playback is defined over an already-evolved population snapshot. The host must
|
|
16
|
+
* request at least one generation before asking the worker to start playback.
|
|
17
|
+
*/
|
|
8
18
|
export const FLAPPY_WORKER_PLAYBACK_START_REQUIRES_GENERATION_ERROR_MESSAGE =
|
|
9
19
|
'Cannot start playback before a generation is available. Request a generation first.';
|
|
10
20
|
|
|
11
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Worker error emitted when playback stepping is requested before playback start.
|
|
23
|
+
*
|
|
24
|
+
* The protocol is stateful: `start-playback` materializes the mutable playback
|
|
25
|
+
* state that later `request-playback-step` messages advance.
|
|
26
|
+
*/
|
|
12
27
|
export const FLAPPY_WORKER_PLAYBACK_STEP_REQUIRES_START_ERROR_MESSAGE =
|
|
13
28
|
'Playback step requested before playback was initialized. Send start-playback first.';
|
|
14
29
|
|
|
15
30
|
/**
|
|
16
31
|
* Resolves unknown error-like values into display-safe worker error messages.
|
|
17
32
|
*
|
|
33
|
+
* Educational note:
|
|
34
|
+
* Browser workers can throw anything, including strings or arbitrary objects.
|
|
35
|
+
* Normalizing that value here gives the rest of the protocol a simple
|
|
36
|
+
* `string`-only error surface.
|
|
37
|
+
*
|
|
18
38
|
* @param error - Unknown error value thrown by worker logic.
|
|
19
39
|
* @returns Normalized error message string.
|
|
20
40
|
*/
|
|
@@ -25,6 +45,13 @@ export function resolveWorkerUnknownErrorMessage(error: unknown): string {
|
|
|
25
45
|
/**
|
|
26
46
|
* Creates a typed worker error response payload from a message string.
|
|
27
47
|
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* postWorkerMessage(
|
|
51
|
+
* createWorkerErrorMessage('Playback step requested before playback start.'),
|
|
52
|
+
* );
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
28
55
|
* @param message - Error message text.
|
|
29
56
|
* @returns Worker error response message.
|
|
30
57
|
*/
|
|
@@ -38,6 +65,10 @@ export function createWorkerErrorMessage(message: string): WorkerErrorMessage {
|
|
|
38
65
|
/**
|
|
39
66
|
* Creates a typed worker error response payload from an unknown thrown value.
|
|
40
67
|
*
|
|
68
|
+
* This helper keeps the protocol boundary narrow: worker internals can use
|
|
69
|
+
* regular exceptions, while the browser host still receives one predictable
|
|
70
|
+
* `WorkerErrorMessage` shape.
|
|
71
|
+
*
|
|
41
72
|
* @param error - Unknown thrown value.
|
|
42
73
|
* @returns Worker error response message.
|
|
43
74
|
*/
|
|
@@ -4,6 +4,12 @@ import type { WorkerGenerationReadyMessage } from './flappy-evolution-worker.typ
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Dependencies required to evolve one generation and prepare host payload output.
|
|
7
|
+
*
|
|
8
|
+
* Educational note:
|
|
9
|
+
* This interface isolates the evolution step from the worker entrypoint. That
|
|
10
|
+
* makes the README easier to follow: the entrypoint owns protocol orchestration,
|
|
11
|
+
* while this service owns one well-defined "run generation -> publish summary"
|
|
12
|
+
* slice of behavior.
|
|
7
13
|
*/
|
|
8
14
|
export interface WorkerEvolutionServiceOptions {
|
|
9
15
|
initializationPromise?: Promise<void>;
|
|
@@ -16,6 +22,22 @@ export interface WorkerEvolutionServiceOptions {
|
|
|
16
22
|
/**
|
|
17
23
|
* Evolves one generation and creates the compact generation-ready response payload.
|
|
18
24
|
*
|
|
25
|
+
* Educational note:
|
|
26
|
+
* The worker does not stream the whole population back to the UI after each
|
|
27
|
+
* evolution step. Instead it emits a compact summary containing the generation
|
|
28
|
+
* index, best fitness, and a serializable best-network snapshot for inspection.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const generationMessage = await evolveAndBuildGenerationReadyMessage({
|
|
33
|
+
* initializationPromise,
|
|
34
|
+
* neatRuntime,
|
|
35
|
+
* isStopped: () => false,
|
|
36
|
+
* warmStartGenerationZeroIfNeeded,
|
|
37
|
+
* setCurrentPopulation,
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
19
41
|
* @param options - Evolution dependencies and runtime state accessors.
|
|
20
42
|
* @returns Generation-ready worker response payload.
|
|
21
43
|
*/
|
|
@@ -5,8 +5,11 @@ import {
|
|
|
5
5
|
resolveFramePrimaryWinnerIndex,
|
|
6
6
|
resolveLeaderPipesPassed,
|
|
7
7
|
} from '../browser-entry/browser-entry.observation.utils';
|
|
8
|
-
import { resolveDifficultyProfile } from '../browser-entry/browser-entry.spawn.utils';
|
|
9
8
|
import { FLAPPY_ENABLE_RUNTIME_INSTRUMENTATION } from '../constants/constants';
|
|
9
|
+
import {
|
|
10
|
+
resolveAdaptiveDifficultyProfile,
|
|
11
|
+
type SharedDifficultyProfile,
|
|
12
|
+
} from '../flappy.simulation.shared.utils';
|
|
10
13
|
import type {
|
|
11
14
|
WorkerPlaybackFrameSnapshot,
|
|
12
15
|
WorkerPlaybackState,
|
|
@@ -19,6 +22,20 @@ import type { Neat } from '../../../../src/neataptic';
|
|
|
19
22
|
/**
|
|
20
23
|
* Creates a fresh worker playback session state from the current evolved population.
|
|
21
24
|
*
|
|
25
|
+
* Educational note:
|
|
26
|
+
* Evolution and playback are intentionally separated. Evolution produces a new
|
|
27
|
+
* population, then playback freezes that population into a deterministic
|
|
28
|
+
* simulation state that the host can step frame-by-frame for rendering.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const session = beginWorkerPlaybackSession({
|
|
33
|
+
* currentPopulation,
|
|
34
|
+
* payload: { visibleWorldWidthPx: 1280, visibleWorldHeightPx: 720 },
|
|
35
|
+
* createPopulationRenderState,
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
22
39
|
* @param currentPopulation - Current evolved population.
|
|
23
40
|
* @param payload - Playback start viewport payload.
|
|
24
41
|
* @param createPopulationRenderState - Callback that builds initial simulation state.
|
|
@@ -56,6 +73,12 @@ export function beginWorkerPlaybackSession(options: {
|
|
|
56
73
|
/**
|
|
57
74
|
* Processes one worker playback-step request including completion/finalization logic.
|
|
58
75
|
*
|
|
76
|
+
* Educational note:
|
|
77
|
+
* One playback request may advance multiple simulation steps. This lets the
|
|
78
|
+
* host trade visual smoothness against throughput while keeping the worker in
|
|
79
|
+
* control of simulation correctness, winner selection, and packed snapshot
|
|
80
|
+
* publishing.
|
|
81
|
+
*
|
|
59
82
|
* @param options - Playback step dependencies and mutable runtime state.
|
|
60
83
|
* @returns Updated playback runtime state after processing this step.
|
|
61
84
|
*/
|
|
@@ -68,16 +91,18 @@ export function processWorkerPlaybackStep(options: {
|
|
|
68
91
|
stepPopulationFrame: (
|
|
69
92
|
renderState: WorkerPlaybackState,
|
|
70
93
|
rng: ReturnType<typeof createXorshift32>,
|
|
71
|
-
difficultyProfile:
|
|
72
|
-
pipeGapPx: number;
|
|
73
|
-
pipeSpeedPxPerFrame: number;
|
|
74
|
-
pipeSpawnIntervalFrames: number;
|
|
75
|
-
},
|
|
94
|
+
difficultyProfile: SharedDifficultyProfile,
|
|
76
95
|
) => number;
|
|
77
96
|
createPlaybackSnapshot: (
|
|
78
97
|
playbackState: WorkerPlaybackState,
|
|
79
98
|
) => WorkerPlaybackFrameSnapshot;
|
|
80
|
-
|
|
99
|
+
resolvePlaybackSnapshotTransferList: (
|
|
100
|
+
snapshot: WorkerPlaybackFrameSnapshot,
|
|
101
|
+
) => Transferable[];
|
|
102
|
+
postWorkerMessage: (
|
|
103
|
+
workerMessage: WorkerResponseMessage,
|
|
104
|
+
transferList?: Transferable[],
|
|
105
|
+
) => void;
|
|
81
106
|
}): {
|
|
82
107
|
currentPlaybackState: WorkerPlaybackState | undefined;
|
|
83
108
|
currentPlaybackRng: ReturnType<typeof createXorshift32> | undefined;
|
|
@@ -92,6 +117,7 @@ export function processWorkerPlaybackStep(options: {
|
|
|
92
117
|
neatRuntime,
|
|
93
118
|
stepPopulationFrame,
|
|
94
119
|
createPlaybackSnapshot,
|
|
120
|
+
resolvePlaybackSnapshotTransferList,
|
|
95
121
|
postWorkerMessage,
|
|
96
122
|
} = options;
|
|
97
123
|
|
|
@@ -112,8 +138,9 @@ export function processWorkerPlaybackStep(options: {
|
|
|
112
138
|
hasAliveBirds(currentPlaybackState.birds);
|
|
113
139
|
simulationStepIndex++
|
|
114
140
|
) {
|
|
115
|
-
const difficultyProfile =
|
|
141
|
+
const difficultyProfile = resolveAdaptiveDifficultyProfile(
|
|
116
142
|
resolveLeaderPipesPassed(currentPlaybackState.birds),
|
|
143
|
+
1,
|
|
117
144
|
);
|
|
118
145
|
totalActivationCalls += stepPopulationFrame(
|
|
119
146
|
currentPlaybackState,
|
|
@@ -135,16 +162,21 @@ export function processWorkerPlaybackStep(options: {
|
|
|
135
162
|
: undefined;
|
|
136
163
|
|
|
137
164
|
const snapshot = createPlaybackSnapshot(currentPlaybackState);
|
|
165
|
+
const snapshotTransferList = resolvePlaybackSnapshotTransferList(snapshot);
|
|
138
166
|
|
|
139
167
|
if (hasAliveBirds(currentPlaybackState.birds)) {
|
|
140
|
-
postWorkerMessage(
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
168
|
+
postWorkerMessage(
|
|
169
|
+
{
|
|
170
|
+
type: 'playback-step',
|
|
171
|
+
payload: {
|
|
172
|
+
requestId: playbackStepPayload.requestId,
|
|
173
|
+
snapshot,
|
|
174
|
+
instrumentation: instrumentationPayload,
|
|
175
|
+
done: false,
|
|
176
|
+
},
|
|
146
177
|
},
|
|
147
|
-
|
|
178
|
+
snapshotTransferList,
|
|
179
|
+
);
|
|
148
180
|
return {
|
|
149
181
|
currentPlaybackState,
|
|
150
182
|
currentPlaybackRng,
|
|
@@ -190,18 +222,22 @@ export function processWorkerPlaybackStep(options: {
|
|
|
190
222
|
const p90FramesSurvived =
|
|
191
223
|
sortedFramesSurvived.length > 0 ? sortedFramesSurvived[p90FrameIndex] : 0;
|
|
192
224
|
|
|
193
|
-
postWorkerMessage(
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
225
|
+
postWorkerMessage(
|
|
226
|
+
{
|
|
227
|
+
type: 'playback-step',
|
|
228
|
+
payload: {
|
|
229
|
+
requestId: playbackStepPayload.requestId,
|
|
230
|
+
snapshot,
|
|
231
|
+
instrumentation: instrumentationPayload,
|
|
232
|
+
done: true,
|
|
233
|
+
averagePipesPassed,
|
|
234
|
+
p90FramesSurvived,
|
|
235
|
+
winnerPipesPassed: winnerBird?.pipesPassed ?? 0,
|
|
236
|
+
winnerFramesSurvived: winnerBird?.framesSurvived ?? 0,
|
|
237
|
+
},
|
|
203
238
|
},
|
|
204
|
-
|
|
239
|
+
snapshotTransferList,
|
|
240
|
+
);
|
|
205
241
|
|
|
206
242
|
return {
|
|
207
243
|
currentPlaybackState: undefined,
|
|
@@ -13,6 +13,11 @@ import {
|
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Callback bundle used by worker protocol routing.
|
|
16
|
+
*
|
|
17
|
+
* Each callback corresponds to one legal transition in the worker message
|
|
18
|
+
* protocol. Keeping the router dependent on this narrow interface makes the
|
|
19
|
+
* protocol easy to read in generated docs and easy to test independently from
|
|
20
|
+
* the worker-global `self.onmessage` hook.
|
|
16
21
|
*/
|
|
17
22
|
export interface WorkerProtocolHandlers {
|
|
18
23
|
markStopped: () => void;
|
|
@@ -24,12 +29,33 @@ export interface WorkerProtocolHandlers {
|
|
|
24
29
|
) => void;
|
|
25
30
|
hasPopulation: () => boolean;
|
|
26
31
|
hasPlaybackState: () => boolean;
|
|
27
|
-
postWorkerMessage: (
|
|
32
|
+
postWorkerMessage: (
|
|
33
|
+
workerMessage: WorkerResponseMessage,
|
|
34
|
+
transferList?: Transferable[],
|
|
35
|
+
) => void;
|
|
28
36
|
}
|
|
29
37
|
|
|
30
38
|
/**
|
|
31
39
|
* Routes one inbound worker request message to the corresponding runtime action.
|
|
32
40
|
*
|
|
41
|
+
* Educational note:
|
|
42
|
+
* This router is the protocol gatekeeper for the worker. It enforces the two
|
|
43
|
+
* important sequencing rules in the demo:
|
|
44
|
+
* - playback requires a previously evolved population,
|
|
45
|
+
* - playback stepping requires an active playback session.
|
|
46
|
+
*
|
|
47
|
+
* In practice this acts like a tiny finite-state machine. If you want a quick
|
|
48
|
+
* conceptual refresher, the Wikipedia article on "finite-state machine" maps
|
|
49
|
+
* well onto the worker's init -> evolve -> start playback -> step playback flow.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* routeWorkerProtocolMessage(
|
|
54
|
+
* { type: 'request-generation' },
|
|
55
|
+
* workerProtocolHandlers,
|
|
56
|
+
* );
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
33
59
|
* @param workerMessage - Inbound worker request payload.
|
|
34
60
|
* @param handlers - Runtime action callbacks and state probes.
|
|
35
61
|
* @returns Nothing.
|
package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.runtime.service.ts
CHANGED
|
@@ -12,6 +12,29 @@ import {
|
|
|
12
12
|
/**
|
|
13
13
|
* Creates and configures the worker-local NEAT runtime used by browser evolution playback.
|
|
14
14
|
*
|
|
15
|
+
* Educational note:
|
|
16
|
+
* The browser worker reuses the same core NeatapticTS runtime as the Node-side
|
|
17
|
+
* trainer, but trims configuration down to the pieces needed for an interactive
|
|
18
|
+
* example: deterministic seeding, feed-forward mutation policy, and a fitness
|
|
19
|
+
* function that favors quick browser-visible iteration.
|
|
20
|
+
*
|
|
21
|
+
* The resulting runtime is both the evolution engine and the source of the
|
|
22
|
+
* population that later playback requests visualize.
|
|
23
|
+
*
|
|
24
|
+
* For background reading, the Wikipedia article on "Neuroevolution of
|
|
25
|
+
* augmenting topologies" is a useful overview of the family of ideas this demo
|
|
26
|
+
* is exercising, even though the repository implements its own detailed runtime
|
|
27
|
+
* behavior and modern extensions.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* const neatRuntime = createInitializedWorkerRuntime({
|
|
32
|
+
* populationSize: 50,
|
|
33
|
+
* elitismCount: 10,
|
|
34
|
+
* rngSeed: 12345,
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
15
38
|
* @param initPayload - Initialization values from the browser host.
|
|
16
39
|
* @returns Initialized NEAT runtime.
|
|
17
40
|
*/
|