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